summaryrefslogtreecommitdiffstats
path: root/libavcodec/h264_slice.c
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-05-17 16:45:15 +0200
committerAnton Khirnov <anton@khirnov.net>2016-06-21 11:09:21 +0200
commitdebca90863e4ee53447efd02483c500f89766384 (patch)
tree975ff0f16546c0cad05df07ca1c17f1ff5393018 /libavcodec/h264_slice.c
parentf966498e433fead2f5e6b5b66fad2ac062146d22 (diff)
downloadffmpeg-streaming-debca90863e4ee53447efd02483c500f89766384.zip
ffmpeg-streaming-debca90863e4ee53447efd02483c500f89766384.tar.gz
h264: store {curr,max}_pic_num in the per-slice context
While the value of those variables will be constant for the whole frame, they are only used in two functions called from slice header decoding. Moving them to the per-slice context allows us to make the H264Context passed to slice_header_parse() constant.
Diffstat (limited to 'libavcodec/h264_slice.c')
-rw-r--r--libavcodec/h264_slice.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index be44e66..d926884 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -405,9 +405,6 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
memcpy(&h->poc, &h1->poc, sizeof(h->poc));
- h->curr_pic_num = h1->curr_pic_num;
- h->max_pic_num = h1->max_pic_num;
-
memcpy(h->short_ref, h1->short_ref, sizeof(h->short_ref));
memcpy(h->long_ref, h1->long_ref, sizeof(h->long_ref));
memcpy(h->delayed_pic, h1->delayed_pic, sizeof(h->delayed_pic));
@@ -1173,7 +1170,7 @@ static int h264_field_start(H264Context *h, const H264SliceContext *sl,
return 0;
}
-static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl,
+static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
const H2645NAL *nal)
{
const SPS *sps;
@@ -1248,11 +1245,11 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl,
sl->mb_field_decoding_flag = picture_structure != PICT_FRAME;
if (picture_structure == PICT_FRAME) {
- h->curr_pic_num = sl->frame_num;
- h->max_pic_num = 1 << sps->log2_max_frame_num;
+ sl->curr_pic_num = sl->frame_num;
+ sl->max_pic_num = 1 << sps->log2_max_frame_num;
} else {
- h->curr_pic_num = 2 * sl->frame_num + 1;
- h->max_pic_num = 1 << (sps->log2_max_frame_num + 1);
+ sl->curr_pic_num = 2 * sl->frame_num + 1;
+ sl->max_pic_num = 1 << (sps->log2_max_frame_num + 1);
}
if (nal->type == NAL_IDR_SLICE)
OpenPOWER on IntegriCloud