Do not use a bit writer in av1_write_obu_header() obu_header() can be written using simple left shift and bitwise OR operations. It is not necessary to use aom_write_bit_buffer. Change-Id: I9bf39b6637c9b0aa36fe58ebfea68bb0c2688d80
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index a4d4a8e..d0d1820 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -3362,7 +3362,6 @@ (obu_type == OBU_FRAME || obu_type == OBU_FRAME_HEADER)) ++(*frame_header_count); - struct aom_write_bit_buffer wb = { dst, 0 }; uint32_t size = 0; // The AV1 spec Version 1.0.0 with Errata 1 has the following requirements on @@ -3388,18 +3387,17 @@ (obu_type == OBU_FRAME_HEADER || obu_type == OBU_TILE_GROUP || obu_type == OBU_FRAME || obu_type == OBU_REDUNDANT_FRAME_HEADER); } + const int obu_has_size_field = 1; - aom_wb_write_literal(&wb, 0, 1); // forbidden bit. - aom_wb_write_literal(&wb, (int)obu_type, 4); - aom_wb_write_literal(&wb, obu_extension_flag, 1); - aom_wb_write_literal(&wb, 1, 1); // obu_has_size_field - aom_wb_write_literal(&wb, 0, 1); // reserved + dst[0] = ((int)obu_type << 3) | (obu_extension_flag << 2) | + (obu_has_size_field << 1); + size++; if (obu_extension_flag) { - aom_wb_write_literal(&wb, obu_extension & 0xFF, 8); + dst[1] = obu_extension & 0xFF; + size++; } - size = aom_wb_bytes_written(&wb); return size; }