ffmpeg | branch: master | George Boyle <geo...@thebuds.net> | Tue Jun 16 08:25:01 2015 +0100| [2469ed32c81ebf2347e6883091c566724b286167] | committer: Michael Niedermayer
avcodec/flacenc: Fix Invalid Rice order Fixes ticket #4628. The problem arose, in the sample file at least, in the last block where the minimum and maximum Rice partition orders were both 0. In that case, and any other where pmax == pmin, the original UINT32_MAX placeholder value for bits[opt_porder] was getting overwritten before the comparison to check if the current partition order is a new optimal, so the correct partition order and RiceContext params were not being set. Signed-off-by: Michael Niedermayer <michae...@gmx.at> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2469ed32c81ebf2347e6883091c566724b286167 --- libavcodec/flacenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c index cdfeaf8..29bd999 100644 --- a/libavcodec/flacenc.c +++ b/libavcodec/flacenc.c @@ -705,7 +705,7 @@ static uint64_t calc_rice_params(RiceContext *rc, bits[pmin] = UINT32_MAX; for (i = pmax; ; ) { bits[i] = calc_optimal_rice_params(&tmp_rc, i, sums, n, pred_order, kmax, exact); - if (bits[i] < bits[opt_porder]) { + if (bits[i] < bits[opt_porder] || pmax == pmin) { opt_porder = i; *rc = tmp_rc; } _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog