diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-03-21 15:58:46 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-03-21 15:58:50 +0100 |
commit | ad6cee117e83711bf57e8dd90472543dbd61b8b8 (patch) | |
tree | 05b1168749cbb4487c00c7aa13084c7271aa67bd | |
parent | 6a2e1ff02a784ea69fb1a6f71d3357d705506506 (diff) | |
parent | bd3e460b73dd54a68dc253e010c239cefc8d8d55 (diff) | |
download | ffmpeg-ad6cee117e83711bf57e8dd90472543dbd61b8b8.tar.gz |
Merge commit 'bd3e460b73dd54a68dc253e010c239cefc8d8d55'
* commit 'bd3e460b73dd54a68dc253e010c239cefc8d8d55':
h264: move direct_cache into the per-slice context
Merged-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavcodec/h264.h | 2 | ||||
-rw-r--r-- | libavcodec/h264_cabac.c | 6 | ||||
-rw-r--r-- | libavcodec/h264_mvpred.h | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 425d0e598f..162053de92 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -430,6 +430,7 @@ typedef struct H264SliceContext { DECLARE_ALIGNED(16, int16_t, mv_cache)[2][5 * 8][2]; DECLARE_ALIGNED(8, int8_t, ref_cache)[2][5 * 8]; DECLARE_ALIGNED(16, uint8_t, mvd_cache)[2][5 * 8][2]; + uint8_t direct_cache[5 * 8]; DECLARE_ALIGNED(8, uint16_t, sub_mb_type)[4]; @@ -540,7 +541,6 @@ typedef struct H264Context { uint8_t *chroma_pred_mode_table; uint8_t (*mvd_table[2])[2]; uint8_t *direct_table; - uint8_t direct_cache[5 * 8]; uint8_t zigzag_scan[16]; uint8_t zigzag_scan8x8[64]; diff --git a/libavcodec/h264_cabac.c b/libavcodec/h264_cabac.c index 8422f946d5..c84bd1d507 100644 --- a/libavcodec/h264_cabac.c +++ b/libavcodec/h264_cabac.c @@ -1475,9 +1475,9 @@ static int decode_cabac_mb_ref(H264Context *h, H264SliceContext *sl, int list, i int ctx = 0; if (sl->slice_type_nos == AV_PICTURE_TYPE_B) { - if( refa > 0 && !(h->direct_cache[scan8[n] - 1]&(MB_TYPE_DIRECT2>>1)) ) + if( refa > 0 && !(sl->direct_cache[scan8[n] - 1]&(MB_TYPE_DIRECT2>>1)) ) ctx++; - if( refb > 0 && !(h->direct_cache[scan8[n] - 8]&(MB_TYPE_DIRECT2>>1)) ) + if( refb > 0 && !(sl->direct_cache[scan8[n] - 8]&(MB_TYPE_DIRECT2>>1)) ) ctx += 2; } else { if( refa > 0 ) @@ -2114,7 +2114,7 @@ decode_intra_mb: sl->ref_cache[0][scan8[12]] = sl->ref_cache[1][scan8[12]] = PART_NOT_AVAILABLE; for( i = 0; i < 4; i++ ) - fill_rectangle(&h->direct_cache[scan8[4*i]], 2, 2, 8, (sl->sub_mb_type[i] >> 1) & 0xFF, 1); + fill_rectangle(&sl->direct_cache[scan8[4*i]], 2, 2, 8, (sl->sub_mb_type[i] >> 1) & 0xFF, 1); } } else { for( i = 0; i < 4; i++ ) { diff --git a/libavcodec/h264_mvpred.h b/libavcodec/h264_mvpred.h index 368fcd47e6..241e90565c 100644 --- a/libavcodec/h264_mvpred.h +++ b/libavcodec/h264_mvpred.h @@ -721,7 +721,7 @@ static void fill_decode_caches(H264Context *h, H264SliceContext *sl, int mb_type AV_ZERO16(mvd_cache[2 + 8 * 0]); AV_ZERO16(mvd_cache[2 + 8 * 2]); if (sl->slice_type_nos == AV_PICTURE_TYPE_B) { - uint8_t *direct_cache = &h->direct_cache[scan8[0]]; + uint8_t *direct_cache = &sl->direct_cache[scan8[0]]; uint8_t *direct_table = h->direct_table; fill_rectangle(direct_cache, 4, 4, 8, MB_TYPE_16x16 >> 1, 1); |