diff options
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/h264.c | 2 | ||||
-rw-r--r-- | libavcodec/h264_parser.c | 3 | ||||
-rw-r--r-- | libavcodec/h264_slice.c | 3 |
3 files changed, 6 insertions, 2 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c index da7f88f66c..08b089187d 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -975,8 +975,6 @@ int ff_set_ref_count(H264Context *h, H264SliceContext *sl) ref_count[1] = h->pps.ref_count[1]; if (sl->slice_type_nos != AV_PICTURE_TYPE_I) { - if (sl->slice_type_nos == AV_PICTURE_TYPE_B) - sl->direct_spatial_mv_pred = get_bits1(&sl->gb); num_ref_idx_active_override_flag = get_bits1(&sl->gb); if (num_ref_idx_active_override_flag) { diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index bcbaf1a2ce..87f6fe6706 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -117,6 +117,9 @@ static int scan_mmco_reset(AVCodecParserContext *s) if (h->pps.redundant_pic_cnt_present) get_ue_golomb(&sl->gb); // redundant_pic_count + if (sl->slice_type_nos == AV_PICTURE_TYPE_B) + get_bits1(&sl->gb); // direct_spatial_mv_pred + if (ff_set_ref_count(h, sl) < 0) return AVERROR_INVALIDDATA; diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 23824db888..d2c1f13f51 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1454,6 +1454,9 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl) if (h->pps.redundant_pic_cnt_present) sl->redundant_pic_count = get_ue_golomb(&sl->gb); + if (sl->slice_type_nos == AV_PICTURE_TYPE_B) + sl->direct_spatial_mv_pred = get_bits1(&sl->gb); + ret = ff_set_ref_count(h, sl); if (ret < 0) return ret; |