ffmpeg | branch: master | Michael Niedermayer <mich...@niedermayer.cc> | Sat Dec 19 20:06:58 2015 +0100| [2d2b41d1699646e824418fea6e6cb2a842654875] | committer: Michael Niedermayer
avcodec/ffv1enc: Fix 2 pass mode with the default rc table Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2d2b41d1699646e824418fea6e6cb2a842654875 --- libavcodec/ffv1enc.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index e4d5ac6..3830bd4 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -155,6 +155,10 @@ static void find_best_state(uint8_t best_state[256][256], double occ[256] = { 0 }; double len = 0; occ[j] = 1.0; + + if (!one_state[j]) + continue; + for (k = 0; k < 256; k++) { double newocc[256] = { 0 }; for (m = 1; m < 256; m++) @@ -821,9 +825,15 @@ FF_ENABLE_DEPRECATION_WARNINGS return AVERROR(EINVAL); } - if (s->ac == AC_RANGE_CUSTOM_TAB) + if (s->ac == AC_RANGE_CUSTOM_TAB) { for (i = 1; i < 256; i++) s->state_transition[i] = ver2_state[i]; + } else { + RangeCoder c; + ff_build_rac_states(&c, 0.05 * (1LL << 32), 256 - 8); + for (i = 1; i < 256; i++) + s->state_transition[i] = c.one_state[i]; + } for (i = 0; i < 256; i++) { s->quant_table_count = 2; @@ -934,7 +944,8 @@ FF_ENABLE_DEPRECATION_WARNINGS if (p[0] == 0) break; } - sort_stt(s, s->state_transition); + if (s->ac == AC_RANGE_CUSTOM_TAB) + sort_stt(s, s->state_transition); find_best_state(best_state, s->state_transition); _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog