diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-03-21 15:48:50 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-03-21 15:48:53 +0100 |
commit | a4952e7343f9a77d2995d699ac045b095ab11052 (patch) | |
tree | 31482d42b86320b51c83097506bb513c9e17bc69 /libavcodec | |
parent | 4c5c913dd8d946022ba160ec480694222aab061d (diff) | |
parent | 5c8280c3075dd54f26752c3a1185647578421703 (diff) | |
download | ffmpeg-a4952e7343f9a77d2995d699ac045b095ab11052.tar.gz |
Merge commit '5c8280c3075dd54f26752c3a1185647578421703'
* commit '5c8280c3075dd54f26752c3a1185647578421703':
h264: move last_qscale_diff into the per-slice context
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/h264.h | 2 | ||||
-rw-r--r-- | libavcodec/h264_cabac.c | 12 | ||||
-rw-r--r-- | libavcodec/h264_slice.c | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/libavcodec/h264.h b/libavcodec/h264.h index d43713de6e..a342cfc16c 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -344,6 +344,7 @@ typedef struct H264SliceContext { int qscale; int chroma_qp[2]; // QPc int qp_thresh; ///< QP threshold to skip loopfilter + int last_qscale_diff; // Weighted pred stuff int use_weight; @@ -534,7 +535,6 @@ typedef struct H264Context { /* chroma_pred_mode for i4x4 or i16x16, else 0 */ uint8_t *chroma_pred_mode_table; - int last_qscale_diff; uint8_t (*mvd_table[2])[2]; DECLARE_ALIGNED(16, uint8_t, mvd_cache)[2][5 * 8][2]; uint8_t *direct_table; diff --git a/libavcodec/h264_cabac.c b/libavcodec/h264_cabac.c index c6b0cb09ca..1013e55285 100644 --- a/libavcodec/h264_cabac.c +++ b/libavcodec/h264_cabac.c @@ -1940,7 +1940,7 @@ int ff_h264_decode_mb_cabac(H264Context *h, H264SliceContext *sl) h->cbp_table[mb_xy] = 0; h->chroma_pred_mode_table[mb_xy] = 0; - h->last_qscale_diff = 0; + sl->last_qscale_diff = 0; return 0; @@ -2053,7 +2053,7 @@ decode_intra_mb: // All coeffs are present memset(h->non_zero_count[mb_xy], 16, 48); h->cur_pic.mb_type[mb_xy] = mb_type; - h->last_qscale_diff = 0; + sl->last_qscale_diff = 0; return 0; } @@ -2368,7 +2368,7 @@ decode_intra_mb: } // decode_cabac_mb_dqp - if(get_cabac_noinline( &sl->cabac, &sl->cabac_state[60 + (h->last_qscale_diff != 0)])){ + if(get_cabac_noinline( &sl->cabac, &sl->cabac_state[60 + (sl->last_qscale_diff != 0)])){ int val = 1; int ctx= 2; const int max_qp = 51 + 6*(h->sps.bit_depth_luma-8); @@ -2386,7 +2386,7 @@ decode_intra_mb: val= (val + 1)>>1 ; else val= -((val + 1)>>1); - h->last_qscale_diff = val; + sl->last_qscale_diff = val; sl->qscale += val; if (((unsigned)sl->qscale) > max_qp){ if (sl->qscale < 0) sl->qscale += max_qp + 1; @@ -2395,7 +2395,7 @@ decode_intra_mb: sl->chroma_qp[0] = get_chroma_qp(h, 0, sl->qscale); sl->chroma_qp[1] = get_chroma_qp(h, 1, sl->qscale); }else - h->last_qscale_diff=0; + sl->last_qscale_diff=0; decode_cabac_luma_residual(h, sl, scan, scan8x8, pixel_shift, mb_type, cbp, 0); if (CHROMA444(h)) { @@ -2452,7 +2452,7 @@ decode_intra_mb: fill_rectangle(&sl->non_zero_count_cache[scan8[ 0]], 4, 4, 8, 0, 1); fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1); fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1); - h->last_qscale_diff = 0; + sl->last_qscale_diff = 0; } h->cur_pic.qscale_table[mb_xy] = sl->qscale; diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 6c9d308780..7db1ee8f37 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1862,7 +1862,7 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl, H264Contex h->cabac_init_idc = tmp; } - h->last_qscale_diff = 0; + sl->last_qscale_diff = 0; tmp = h->pps.init_qp + get_se_golomb(&h->gb); if (tmp > 51 + 6 * (h->sps.bit_depth_luma - 8)) { av_log(h->avctx, AV_LOG_ERROR, "QP %u out of range\n", tmp); |