summaryrefslogtreecommitdiff
path: root/libavcodec/h264_refs.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_refs.c
parentf966498e433fead2f5e6b5b66fad2ac062146d22 (diff)
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_refs.c')
-rw-r--r--libavcodec/h264_refs.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
index 2e43a8f4e5..f7b7211a5c 100644
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@ -262,7 +262,7 @@ int ff_h264_build_ref_list(const H264Context *h, H264SliceContext *sl)
h264_initialise_ref_list(h, sl);
for (list = 0; list < sl->list_count; list++) {
- int pred = h->curr_pic_num;
+ int pred = sl->curr_pic_num;
for (index = 0; index < sl->nb_ref_modifications[list]; index++) {
unsigned int modification_of_pic_nums_idc = sl->ref_modifications[list][index].op;
@@ -277,7 +277,7 @@ int ff_h264_build_ref_list(const H264Context *h, H264SliceContext *sl)
const unsigned int abs_diff_pic_num = val + 1;
int frame_num;
- if (abs_diff_pic_num > h->max_pic_num) {
+ if (abs_diff_pic_num > sl->max_pic_num) {
av_log(h->avctx, AV_LOG_ERROR,
"abs_diff_pic_num overflow\n");
return AVERROR_INVALIDDATA;
@@ -287,7 +287,7 @@ int ff_h264_build_ref_list(const H264Context *h, H264SliceContext *sl)
pred -= abs_diff_pic_num;
else
pred += abs_diff_pic_num;
- pred &= h->max_pic_num - 1;
+ pred &= sl->max_pic_num - 1;
frame_num = pic_num_extract(h, pred, &pic_structure);
@@ -751,8 +751,8 @@ int ff_h264_decode_ref_pic_marking(const H264Context *h, H264SliceContext *sl,
mmco[i].opcode = opcode;
if (opcode == MMCO_SHORT2UNUSED || opcode == MMCO_SHORT2LONG) {
mmco[i].short_pic_num =
- (h->curr_pic_num - get_ue_golomb(gb) - 1) &
- (h->max_pic_num - 1);
+ (sl->curr_pic_num - get_ue_golomb(gb) - 1) &
+ (sl->max_pic_num - 1);
#if 0
if (mmco[i].short_pic_num >= h->short_ref_count ||
!h->short_ref[mmco[i].short_pic_num]) {