avcodec/cbs_av1: fix parsing delta_frame_id_minus1

delta_frame_id_minus1 is not a single value in the bitstream, and can
store values up to 17 bits wide.

Fixes parsing files with frame ids.

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
pull/304/head^2
James Almer 6 years ago
parent 1b4c01631b
commit 064f9505f4
  1. 2
      libavcodec/cbs_av1.h
  2. 4
      libavcodec/cbs_av1_syntax_template.c

@ -170,7 +170,7 @@ typedef struct AV1RawFrameHeader {
uint8_t last_frame_idx; uint8_t last_frame_idx;
uint8_t golden_frame_idx; uint8_t golden_frame_idx;
int8_t ref_frame_idx[AV1_REFS_PER_FRAME]; int8_t ref_frame_idx[AV1_REFS_PER_FRAME];
uint8_t delta_frame_id_minus1; uint32_t delta_frame_id_minus1[AV1_REFS_PER_FRAME];
uint8_t allow_high_precision_mv; uint8_t allow_high_precision_mv;
uint8_t is_filter_switchable; uint8_t is_filter_switchable;

@ -1323,8 +1323,8 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw,
if (!current->frame_refs_short_signaling) if (!current->frame_refs_short_signaling)
fbs(3, ref_frame_idx[i], 1, i); fbs(3, ref_frame_idx[i], 1, i);
if (seq->frame_id_numbers_present_flag) { if (seq->frame_id_numbers_present_flag) {
fb(seq->delta_frame_id_length_minus_2 + 2, fbs(seq->delta_frame_id_length_minus_2 + 2,
delta_frame_id_minus1); delta_frame_id_minus1[i], 1, i);
} }
} }

Loading…
Cancel
Save