diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2016-07-19 22:31:56 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2016-07-20 00:07:18 +0200 |
commit | 9bf3fdcd3c21b22cdbee43ae1c15c65f973a12fe (patch) | |
tree | 2795491f7f5c4cef697550b430b8d2977f27b953 /libavcodec/h264_slice.c | |
parent | fd1588919d2c70288a1a3fea1aefdd3ea2c424bb (diff) | |
download | ffmpeg-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.c | 14 |
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; } |