Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMason Carter <void.main.argc.argv@gmail.com>2013-12-22 05:27:18 +0400
committerCarl Eugen Hoyos <cehoyos@ag.or.at>2013-12-22 19:09:44 +0400
commitaeac212fda1bad4e0deb54cd261d6a037503eb82 (patch)
tree8884cb1e4d5b254f1e20cb9211cea78329cb44a2
parent62f05d6309b8b7116403ccf92b5386f48805448d (diff)
VC1: Fix intensity compensation performance regression
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 Signed-off-by: Michael Niedermayer <michaelni@gmx.at> (cherry picked from commit ed5bed4152203aed8cce01a679bed67bbda8903f)
-rw-r--r--libavcodec/vc1.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c
index f7558116d1..2b872476df 100644
--- a/libavcodec/vc1.c
+++ b/libavcodec/vc1.c
@@ -621,6 +621,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)