summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-03-21 16:25:29 +0100
committerAnton Khirnov <anton@khirnov.net>2016-04-24 10:06:23 +0200
commite9f884416c76558098fc1f63825b293956e8483c (patch)
tree27ea383fb49da781dfca689623c5d3a4ddb07645 /libavcodec
parent8d0cc8ca97678f4ca87948ebabcbaab5a4f4c1f6 (diff)
h264: move reading direct_spatial_mv_pred out of ff_set_ref_count()
It has nothing to do with the reference count and so does not belong in this function.
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/h264.c2
-rw-r--r--libavcodec/h264_parser.c3
-rw-r--r--libavcodec/h264_slice.c3
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;