aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2015-01-17 22:28:46 +0100
committerAnton Khirnov <anton@khirnov.net>2015-03-21 11:27:14 +0100
commit9951907f6fc37a8d41566dbee09f7c15ff587de6 (patch)
tree8c5013900cdc382eaad80430990a7f1ee188e8b6
parenta9b201cacf85d710b102010cb4baef97f00ea39b (diff)
downloadffmpeg-9951907f6fc37a8d41566dbee09f7c15ff587de6.tar.gz
h264: move redundant_pic_count into the per-slice context
-rw-r--r--libavcodec/dxva2_h264.c2
-rw-r--r--libavcodec/h264.c2
-rw-r--r--libavcodec/h264.h4
-rw-r--r--libavcodec/h264_slice.c4
4 files changed, 6 insertions, 6 deletions
diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c
index f7b16714f8..3de5f1891f 100644
--- a/libavcodec/dxva2_h264.c
+++ b/libavcodec/dxva2_h264.c
@@ -277,7 +277,7 @@ static void fill_slice_long(AVCodecContext *avctx, DXVA_Slice_H264_Long *slice,
}
slice->slice_qs_delta = 0; /* XXX not implemented by Libav */
slice->slice_qp_delta = sl->qscale - h->pps.init_qp;
- slice->redundant_pic_cnt = h->redundant_pic_count;
+ slice->redundant_pic_cnt = sl->redundant_pic_count;
if (sl->slice_type == AV_PICTURE_TYPE_B)
slice->direct_spatial_mv_pred_flag = sl->direct_spatial_mv_pred;
slice->cabac_init_idc = h->pps.cabac ? sl->cabac_init_idc : 0;
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index cc3af6f039..554c3d1f94 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -1570,7 +1570,7 @@ again:
return ret;
}
- if (hx->redundant_pic_count == 0 &&
+ if (sl->redundant_pic_count == 0 &&
(avctx->skip_frame < AVDISCARD_NONREF ||
hx->nal_ref_idc) &&
(avctx->skip_frame < AVDISCARD_BIDIR ||
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 18aa8cbc00..0696000294 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -356,6 +356,8 @@ typedef struct H264SliceContext {
ptrdiff_t mb_linesize; ///< may be equal to s->linesize or s->linesize * 2, for mbaff
ptrdiff_t mb_uvlinesize;
+ int redundant_pic_count;
+
/**
* number of neighbors (top and/or left) that used 8x8 dct
*/
@@ -577,8 +579,6 @@ typedef struct H264Context {
*/
int max_pic_num;
- int redundant_pic_count;
-
H264Picture default_ref_list[2][32]; ///< base reference list for all slices of a coded picture
H264Picture *short_ref[32];
H264Picture *long_ref[32];
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index 59016c147b..2e319e9daa 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -605,7 +605,7 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
h->dequant_coeff_pps = h1->dequant_coeff_pps;
// POC timing
- copy_fields(h, h1, poc_lsb, redundant_pic_count);
+ copy_fields(h, h1, poc_lsb, default_ref_list);
// reference lists
copy_fields(h, h1, short_ref, thread_context);
@@ -1591,7 +1591,7 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl, H264Contex
ff_init_poc(h, h->cur_pic_ptr->field_poc, &h->cur_pic_ptr->poc);
if (h->pps.redundant_pic_cnt_present)
- h->redundant_pic_count = get_ue_golomb(&h->gb);
+ sl->redundant_pic_count = get_ue_golomb(&h->gb);
ret = ff_set_ref_count(h, sl);
if (ret < 0)