Lines Matching refs:bw

259     VP8LBitWriter* const bw, const uint8_t* code_length_bitdepth) {
274 VP8LWriteBits(bw, 4, codes_to_store - 4);
276 VP8LWriteBits(bw, 3, code_length_bitdepth[kStorageOrder[i]]);
297 VP8LBitWriter* const bw,
304 VP8LWriteBits(bw, huffman_code->code_lengths[ix], huffman_code->codes[ix]);
307 VP8LWriteBits(bw, 2, extra_bits);
310 VP8LWriteBits(bw, 3, extra_bits);
313 VP8LWriteBits(bw, 7, extra_bits);
320 static void StoreFullHuffmanCode(VP8LBitWriter* const bw,
333 VP8LWriteBits(bw, 1, 0);
346 StoreHuffmanTreeOfHuffmanTreeToBitMask(bw, code_length_bitdepth);
370 VP8LWriteBits(bw, 1, write_trimmed_length);
374 VP8LWriteBits(bw, 3, nbitpairs - 1);
376 VP8LWriteBits(bw, nbitpairs * 2, trimmed_length - 2);
378 StoreHuffmanTreeToBitMask(bw, tokens, length, &huffman_code);
383 static void StoreHuffmanCode(VP8LBitWriter* const bw,
403 VP8LWriteBits(bw, 4, 0x01);
405 VP8LWriteBits(bw, 1, 1); // Small tree marker to encode 1 or 2 symbols.
406 VP8LWriteBits(bw, 1, count - 1);
408 VP8LWriteBits(bw, 1, 0); // Code bit for small (1 bit) symbol value.
409 VP8LWriteBits(bw, 1, symbols[0]);
411 VP8LWriteBits(bw, 1, 1);
412 VP8LWriteBits(bw, 8, symbols[0]);
415 VP8LWriteBits(bw, 8, symbols[1]);
418 StoreFullHuffmanCode(bw, huff_tree, tokens, huffman_code);
422 static void WriteHuffmanCode(VP8LBitWriter* const bw,
427 VP8LWriteBits(bw, depth, symbol);
431 VP8LBitWriter* const bw, int width, int histo_bits,
449 WriteHuffmanCode(bw, codes, literal_ix);
455 WriteHuffmanCode(bw, codes + k, code);
462 WriteHuffmanCode(bw, codes, 256 + code);
463 VP8LWriteBits(bw, n_bits, bits);
467 WriteHuffmanCode(bw, codes + 4, code);
468 VP8LWriteBits(bw, n_bits, bits);
477 return bw->error_ ? VP8_ENC_ERROR_OUT_OF_MEMORY : VP8_ENC_OK;
481 static WebPEncodingError EncodeImageNoHuffman(VP8LBitWriter* const bw,
520 VP8LWriteBits(bw, 1, 0);
539 StoreHuffmanCode(bw, huff_tree, tokens, codes);
544 err = StoreImageToBitMask(bw, width, 0, refs, histogram_symbols,
555 static WebPEncodingError EncodeImageInternal(VP8LBitWriter* const bw,
620 VP8LWriteBits(bw, 1, use_color_cache);
622 VP8LWriteBits(bw, 4, cache_bits);
628 VP8LWriteBits(bw, 1, write_histogram_image);
645 VP8LWriteBits(bw, 3, histogram_bits - 2);
646 err = EncodeImageNoHuffman(bw, histogram_argb, hash_chain, refs_array,
674 StoreHuffmanCode(bw, huff_tree, tokens, codes);
680 err = StoreImageToBitMask(bw, width, histogram_bits, &refs,
703 VP8LBitWriter* const bw) {
731 VP8LWriteBits(bw, 1, TRANSFORM_PRESENT);
732 VP8LWriteBits(bw, 2, SUBTRACT_GREEN);
741 VP8LBitWriter* const bw) {
748 VP8LWriteBits(bw, 1, TRANSFORM_PRESENT);
749 VP8LWriteBits(bw, 2, PREDICTOR_TRANSFORM);
751 VP8LWriteBits(bw, 3, pred_bits - 2);
752 return EncodeImageNoHuffman(bw, enc->transform_data_,
762 VP8LBitWriter* const bw) {
769 VP8LWriteBits(bw, 1, TRANSFORM_PRESENT);
770 VP8LWriteBits(bw, 2, CROSS_COLOR_TRANSFORM);
772 VP8LWriteBits(bw, 3, ccolor_transform_bits - 2);
773 return EncodeImageNoHuffman(bw, enc->transform_data_,
797 VP8LBitWriter* const bw) {
802 VP8LWriteBits(bw, VP8L_IMAGE_SIZE_BITS, width);
803 VP8LWriteBits(bw, VP8L_IMAGE_SIZE_BITS, height);
804 return !bw->error_;
807 static int WriteRealAlphaAndVersion(VP8LBitWriter* const bw, int has_alpha) {
808 VP8LWriteBits(bw, 1, has_alpha);
809 VP8LWriteBits(bw, VP8L_VERSION_BITS, VP8L_VERSION);
810 return !bw->error_;
814 VP8LBitWriter* const bw,
817 const uint8_t* const webpll_data = VP8LBitWriterFinish(bw);
818 const size_t webpll_size = VP8LBitWriterNumBytes(bw);
932 static WebPEncodingError EncodePalette(VP8LBitWriter* const bw,
965 VP8LWriteBits(bw, 1, TRANSFORM_PRESENT);
966 VP8LWriteBits(bw, 2, COLOR_INDEXING_TRANSFORM);
968 VP8LWriteBits(bw, 8, palette_size - 1);
972 err = EncodeImageNoHuffman(bw, palette, &enc->hash_chain_, enc->refs_,
1049 VP8LBitWriter* const bw) {
1055 const size_t byte_position = VP8LBitWriterNumBytes(bw);
1073 err = EncodePalette(bw, enc, quality);
1095 err = EvalAndApplySubtractGreen(enc, enc->current_width_, height, bw);
1099 err = ApplyPredictFilter(enc, enc->current_width_, height, quality, bw);
1104 err = ApplyCrossColorFilter(enc, enc->current_width_, height, quality, bw);
1108 VP8LWriteBits(bw, 1, !TRANSFORM_PRESENT); // No more transforms.
1125 err = EncodeImageInternal(bw, enc->argb_, &enc->hash_chain_, enc->refs_,
1141 stats->lossless_size = (int)(VP8LBitWriterNumBytes(bw) - byte_position);
1157 VP8LBitWriter bw;
1173 if (!VP8LBitWriterInit(&bw, initial_size)) {
1195 if (!WriteImageSize(picture, &bw)) {
1202 if (!WriteRealAlphaAndVersion(&bw, has_alpha)) {
1210 err = VP8LEncodeStream(config, picture, &bw);
1217 err = WriteImage(picture, &bw, &coded_size);
1235 if (bw.error_) err = VP8_ENC_ERROR_OUT_OF_MEMORY;
1236 VP8LBitWriterDestroy(&bw);