aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/h264_slice.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michael@niedermayer.cc>2016-07-19 22:31:56 +0200
committerMichael Niedermayer <michael@niedermayer.cc>2016-07-20 00:07:18 +0200
commit9bf3fdcd3c21b22cdbee43ae1c15c65f973a12fe (patch)
tree2795491f7f5c4cef697550b430b8d2977f27b953 /libavcodec/h264_slice.c
parentfd1588919d2c70288a1a3fea1aefdd3ea2c424bb (diff)
downloadffmpeg-9bf3fdcd3c21b22cdbee43ae1c15c65f973a12fe.tar.gz
avcodec/h264_slice: Move h264_init_ps() call into h264_field_start()
This was missing from f512e4a39037ef798ec78170f734c7733abe3231 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'libavcodec/h264_slice.c')
-rw-r--r--libavcodec/h264_slice.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 2562041be7..ee7dedbe2d 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -1128,13 +1128,17 @@ static int h264_init_ps(H264Context *h, const H264SliceContext *sl, int first_sl
* or a second field in a pair and does the necessary setup.
*/
static int h264_field_start(H264Context *h, const H264SliceContext *sl,
- const H2645NAL *nal)
+ const H2645NAL *nal, int first_slice)
{
int i;
const SPS *sps;
int last_pic_structure, last_pic_droppable, ret;
+ ret = h264_init_ps(h, sl, first_slice);
+ if (ret < 0)
+ return ret;
+
sps = h->ps.sps;
last_pic_droppable = h->droppable;
@@ -1452,11 +1456,6 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl,
}
}
- // TODO: should probably be moved to h264_field_start()
- ret = h264_init_ps(h, sl, first_slice);
- if (ret < 0)
- return ret;
-
sps = (const SPS*)h->ps.sps_list[pps->sps_id]->data;
frame_num = get_bits(&sl->gb, sps->log2_max_frame_num);
@@ -1661,13 +1660,14 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl,
const H2645NAL *nal)
{
int i, j, ret = 0;
+ int first_slice = sl == h->slice_ctx && !h->current_slice;
ret = h264_slice_header_parse(h, sl, nal);
if (ret) // can not be ret<0 because of SLICE_SKIPED, SLICE_SINGLETHREAD, ...
return ret;
if (h->current_slice == 0) {
- ret = h264_field_start(h, sl, nal);
+ ret = h264_field_start(h, sl, nal, first_slice);
if (ret < 0)
return ret;
}