Home | History | Annotate | Download | only in enc

Lines Matching refs:bw

246     VP8LBitWriter* const bw, const uint8_t* code_length_bitdepth) {
261 VP8LWriteBits(bw, 4, codes_to_store - 4);
263 VP8LWriteBits(bw, 3, code_length_bitdepth[kStorageOrder[i]]);
284 VP8LBitWriter* const bw,
291 VP8LWriteBits(bw, huffman_code->code_lengths[ix], huffman_code->codes[ix]);
294 VP8LWriteBits(bw, 2, extra_bits);
297 VP8LWriteBits(bw, 3, extra_bits);
300 VP8LWriteBits(bw, 7, extra_bits);
306 static int StoreFullHuffmanCode(VP8LBitWriter* const bw,
322 VP8LWriteBits(bw, 1, 0);
336 StoreHuffmanTreeOfHuffmanTreeToBitMask(bw, code_length_bitdepth);
360 VP8LWriteBits(bw, 1, write_trimmed_length);
364 VP8LWriteBits(bw, 3, nbitpairs - 1);
366 VP8LWriteBits(bw, nbitpairs * 2, trimmed_length - 2);
368 StoreHuffmanTreeToBitMask(bw, tokens, length, &huffman_code);
376 static int StoreHuffmanCode(VP8LBitWriter* const bw,
394 VP8LWriteBits(bw, 4, 0x01);
397 VP8LWriteBits(bw, 1, 1); // Small tree marker to encode 1 or 2 symbols.
398 VP8LWriteBits(bw, 1, count - 1);
400 VP8LWriteBits(bw, 1, 0); // Code bit for small (1 bit) symbol value.
401 VP8LWriteBits(bw, 1, symbols[0]);
403 VP8LWriteBits(bw, 1, 1);
404 VP8LWriteBits(bw, 8, symbols[0]);
407 VP8LWriteBits(bw, 8, symbols[1]);
411 return StoreFullHuffmanCode(bw, huffman_code);
415 static void WriteHuffmanCode(VP8LBitWriter* const bw,
420 VP8LWriteBits(bw, depth, symbol);
424 VP8LBitWriter* const bw, int width, int histo_bits,
442 WriteHuffmanCode(bw, codes, literal_ix);
448 WriteHuffmanCode(bw, codes + k, code);
455 WriteHuffmanCode(bw, codes, 256 + code);
456 VP8LWriteBits(bw, n_bits, bits);
460 WriteHuffmanCode(bw, codes + 4, code);
461 VP8LWriteBits(bw, n_bits, bits);
472 static int EncodeImageNoHuffman(VP8LBitWriter* const bw,
497 VP8LWriteBits(bw, 1, 0);
502 if (!StoreHuffmanCode(bw, codes)) {
509 StoreImageToBitMask(bw, width, 0, &refs, histogram_symbols, huffman_codes);
519 static int EncodeImageInternal(VP8LBitWriter* const bw,
573 VP8LWriteBits(bw, 1, use_color_cache);
575 VP8LWriteBits(bw, 4, cache_bits);
581 VP8LWriteBits(bw, 1, write_histogram_image);
598 VP8LWriteBits(bw, 3, histogram_bits - 2);
599 ok = EncodeImageNoHuffman(bw, histogram_argb,
613 if (!StoreHuffmanCode(bw, codes)) goto Error;
619 StoreImageToBitMask(bw, width, histogram_bits, &refs,
642 VP8LBitWriter* const bw) {
671 VP8LWriteBits(bw, 1, TRANSFORM_PRESENT);
672 VP8LWriteBits(bw, 2, SUBTRACT_GREEN);
681 VP8LBitWriter* const bw) {
688 VP8LWriteBits(bw, 1, TRANSFORM_PRESENT);
689 VP8LWriteBits(bw, 2, PREDICTOR_TRANSFORM);
691 VP8LWriteBits(bw, 3, pred_bits - 2);
692 if (!EncodeImageNoHuffman(bw, enc->transform_data_,
701 VP8LBitWriter* const bw) {
709 VP8LWriteBits(bw, 1, TRANSFORM_PRESENT);
710 VP8LWriteBits(bw, 2, CROSS_COLOR_TRANSFORM);
712 VP8LWriteBits(bw, 3, ccolor_transform_bits - 2);
713 if (!EncodeImageNoHuffman(bw, enc->transform_data_,
737 VP8LBitWriter* const bw) {
742 VP8LWriteBits(bw, VP8L_IMAGE_SIZE_BITS, width);
743 VP8LWriteBits(bw, VP8L_IMAGE_SIZE_BITS, height);
744 return !bw->error_;
747 static int WriteRealAlphaAndVersion(VP8LBitWriter* const bw, int has_alpha) {
748 VP8LWriteBits(bw, 1, has_alpha);
749 VP8LWriteBits(bw, VP8L_VERSION_BITS, VP8L_VERSION);
750 return !bw->error_;
754 VP8LBitWriter* const bw,
757 const uint8_t* const webpll_data = VP8LBitWriterFinish(bw);
758 const size_t webpll_size = VP8LBitWriterNumBytes(bw);
872 static WebPEncodingError EncodePalette(VP8LBitWriter* const bw,
905 VP8LWriteBits(bw, 1, TRANSFORM_PRESENT);
906 VP8LWriteBits(bw, 2, COLOR_INDEXING_TRANSFORM);
908 VP8LWriteBits(bw, 8, palette_size - 1);
912 if (!EncodeImageNoHuffman(bw, palette, palette_size, 1, quality)) {
975 bw) {
981 const size_t byte_position = VP8LBitWriterNumBytes(bw);
999 err = EncodePalette(bw, enc, quality);
1021 if (!EvalAndApplySubtractGreen(enc, enc->current_width_, height, bw)) {
1027 if (!ApplyPredictFilter(enc, enc->current_width_, height, quality, bw)) {
1034 if (!ApplyCrossColorFilter(enc, enc->current_width_, height, quality, bw)) {
1040 VP8LWriteBits(bw, 1, !TRANSFORM_PRESENT); // No more transforms.
1056 if (!EncodeImageInternal(bw, enc->argb_, enc->current_width_, height,
1073 stats->lossless_size = (int)(VP8LBitWriterNumBytes(bw) - byte_position);
1088 VP8LBitWriter bw;
1100 if (!VP8LBitWriterInit(&bw, (width * height) >> 1)) {
1122 if (!WriteImageSize(picture, &bw)) {
1129 if (!WriteRealAlphaAndVersion(&bw, has_alpha)) {
1137 err = VP8LEncodeStream(config, picture, &bw);
1144 err = WriteImage(picture, &bw, &coded_size);
1162 if (bw.error_) err = VP8_ENC_ERROR_OUT_OF_MEMORY;
1163 VP8LBitWriterDestroy(&bw);