[SCM] libav/experimental: Setting chroma_qp to 0 for PCM blocks is really an interesting minor optimization, more interresting would it have been had the author thought about what value chroma_qp would have for the following MB. Or failing that, had actually tested the code. So this reverts this non-functional optimization, and makes the code work. Fixes at least CAPM3_Sony_D.jsv
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 16:25:48 UTC 2013
The following commit has been merged in the experimental branch:
commit a82688b0031c2bc76636ef4b7fba8326453f7d53
Author: Michael Niedermayer <michaelni at gmx.at>
Date: Tue Jul 22 12:31:48 2008 +0000
Setting chroma_qp to 0 for PCM blocks is really an interesting minor
optimization, more interresting would it have been had the author
thought about what value chroma_qp would have for the following MB.
Or failing that, had actually tested the code.
So this reverts this non-functional optimization, and makes the code work.
Fixes at least CAPM3_Sony_D.jsv
Originally committed as revision 14335 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 1d5d378..ee29f1b 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -2712,6 +2712,8 @@ static av_always_inline void hl_decode_mb_internal(H264Context *h, int simple){
tprintf(h->s.avctx, "call filter_mb\n");
backup_mb_border(h, dest_y, dest_cb, dest_cr, linesize, uvlinesize, simple);
fill_caches(h, mb_type, 1); //FIXME don't fill stuff which isn't used by filter_mb
+ h->chroma_qp[0] = get_chroma_qp(h, 0, s->current_picture.qscale_table[mb_xy]);
+ h->chroma_qp[1] = get_chroma_qp(h, 1, s->current_picture.qscale_table[mb_xy]);
filter_mb_fast(h, mb_x, mb_y, dest_y, dest_cb, dest_cr, linesize, uvlinesize);
}
}
@@ -4611,8 +4613,6 @@ decode_intra_mb:
// In deblocking, the quantizer is 0
s->current_picture.qscale_table[mb_xy]= 0;
- h->chroma_qp[0] = get_chroma_qp(h, 0, 0);
- h->chroma_qp[1] = get_chroma_qp(h, 1, 0);
// All coeffs are present
memset(h->non_zero_count[mb_xy], 16, 16);
@@ -5756,8 +5756,6 @@ decode_intra_mb:
h->chroma_pred_mode_table[mb_xy] = 0;
// In deblocking, the quantizer is 0
s->current_picture.qscale_table[mb_xy]= 0;
- h->chroma_qp[0] = get_chroma_qp(h, 0, 0);
- h->chroma_qp[1] = get_chroma_qp(h, 1, 0);
// All coeffs are present
memset(h->non_zero_count[mb_xy], 16, 16);
s->current_picture.mb_type[mb_xy]= mb_type;
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list