Fix https://trac.ffmpeg.org/ticket/3204
The problem was that intensity compensation was always used once it was encountered. This is because v->next_use_ic was never set back to zero. To fix this, when resetting v->next_luty/uv, also reset v->next_use_ic. This improved (restored) performance by 85% when decoding http://bit.ly/bbbwmv --- libavcodec/vc1.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index 6d89e71..319230a 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -614,6 +614,10 @@ static void rotate_luts(VC1Context *v) INIT_LUT(32, 0, v->curr_luty[0], v->curr_lutuv[0], 0); INIT_LUT(32, 0, v->curr_luty[1], v->curr_lutuv[1], 0); v->curr_use_ic = 0; + if (v->curr_luty == v->next_luty) { + // If we just initialized next_lut, clear next_use_ic to match. + v->next_use_ic = 0; + } } int ff_vc1_parse_frame_header(VC1Context *v, GetBitContext* gb) -- 1.8.3.msysgit.0 _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
