[NORMATIVE] Send level for still pictures This was missed in the original patch. BUG=aomedia:1725 Change-Id: I38a307748ad2bc87e931123767eb9a23d3fa2361
diff --git a/av1/av1_dx_iface.c b/av1/av1_dx_iface.c index a707649..050f5dd 100644 --- a/av1/av1_dx_iface.c +++ b/av1/av1_dx_iface.c
@@ -163,16 +163,24 @@ return length_field_size; } -static void parse_operating_points(struct aom_read_bit_buffer *rb) { - const uint8_t operating_points_minus1_cnt = - aom_rb_read_literal(rb, OP_POINTS_MINUS1_BITS); - for (int i = 0; i < operating_points_minus1_cnt + 1; i++) { - aom_rb_read_literal(rb, OP_POINTS_IDC_BITS); // idc - aom_rb_read_literal(rb, LEVEL_BITS); // level - if (aom_rb_read_literal(rb, 1)) { // decoder_rate_model_param_present_flag - aom_rb_read_literal(rb, 12); // decode_to_display_rate_ratio - aom_rb_read_literal(rb, 24); // initial_display_delay - aom_rb_read_literal(rb, 4); // extra_frame_buffers +static void parse_operating_points(struct aom_read_bit_buffer *rb, + int red_hdr) { + if (red_hdr) { + aom_rb_read_literal(rb, LEVEL_BITS); // level + } else { + const uint8_t operating_points_minus1_cnt = + aom_rb_read_literal(rb, OP_POINTS_MINUS1_BITS); + for (int i = 0; i < operating_points_minus1_cnt + 1; i++) { + aom_rb_read_literal(rb, OP_POINTS_IDC_BITS); // idc + aom_rb_read_literal(rb, LEVEL_BITS); // level +#if !CONFIG_BUFFER_MODEL + if (aom_rb_read_literal(rb, + 1)) { // decoder_rate_model_param_present_flag + aom_rb_read_literal(rb, 12); // decode_to_display_rate_ratio + aom_rb_read_literal(rb, 24); // initial_display_delay + aom_rb_read_literal(rb, 4); // extra_frame_buffers + } +#endif // !CONFIG_BUFFER_MODEL } } } @@ -230,9 +238,7 @@ return AOM_CODEC_UNSUP_BITSTREAM; } - if (!reduced_still_picture_hdr) { - parse_operating_points(&rb); - } + parse_operating_points(&rb, reduced_still_picture_hdr); int num_bits_width = aom_rb_read_literal(&rb, 4) + 1; int num_bits_height = aom_rb_read_literal(&rb, 4) + 1;
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c index b0e91cc..6b53b00 100644 --- a/av1/decoder/obu.c +++ b/av1/decoder/obu.c
@@ -160,7 +160,7 @@ if (seq_params->reduced_still_picture_hdr) { pbi->common.enhancement_layers_cnt = 1; seq_params->operating_point_idc[0] = 0; - seq_params->level[0] = 0; + seq_params->level[0] = aom_rb_read_literal(rb, LEVEL_BITS); seq_params->decoder_rate_model_param_present_flag[0] = 0; } else { uint8_t operating_points_minus1_cnt =
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index 75048cc..efa5c29 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -3459,13 +3459,17 @@ // whether to use reduced still picture header aom_wb_write_bit(&wb, cm->seq_params.reduced_still_picture_hdr); - if (!cm->seq_params.reduced_still_picture_hdr) { + if (cm->seq_params.reduced_still_picture_hdr) { + aom_wb_write_literal(&wb, 0, LEVEL_BITS); // level[0] + } else { uint8_t operating_points_minus1_cnt = enhancement_layers_cnt; - aom_wb_write_literal(&wb, operating_points_minus1_cnt, 5); + aom_wb_write_literal(&wb, operating_points_minus1_cnt, + OP_POINTS_MINUS1_BITS); int i; for (i = 0; i < operating_points_minus1_cnt + 1; i++) { - aom_wb_write_literal(&wb, 0, 12); // operating_point_idc[i] - aom_wb_write_literal(&wb, 0, 4); // level[i] + aom_wb_write_literal(&wb, 0, + OP_POINTS_IDC_BITS); // operating_point_idc[i] + aom_wb_write_literal(&wb, 0, LEVEL_BITS); // level[i] #if !CONFIG_BUFFER_MODEL aom_wb_write_literal(&wb, 0, 1); // decoder_rate_model_present_flag[i] #endif