diff --git a/libavcodec/vp3dsp.c b/libavcodec/vp3dsp.c index 9a19dcaf46..f5a1fb6fff 100644 --- a/libavcodec/vp3dsp.c +++ b/libavcodec/vp3dsp.c @@ -112,8 +112,13 @@ static always_inline void idct(uint8_t *dst, int stride, int16_t *input, int typ Cd = A + C; Dd = B + D; - E = M(xC4S4, (ip[0*8] + ip[4*8])); - F = M(xC4S4, (ip[0*8] - ip[4*8])); + E = M(xC4S4, (ip[0*8] + ip[4*8])) + 8; + F = M(xC4S4, (ip[0*8] - ip[4*8])) + 8; + + if(type==1){ //HACK + E += 16*128; + F += 16*128; + } G = M(xC2S6, ip[2*8]) + M(xC6S2, ip[6*8]); H = M(xC6S2, ip[2*8]) - M(xC2S6, ip[6*8]); @@ -127,17 +132,6 @@ static always_inline void idct(uint8_t *dst, int stride, int16_t *input, int typ Fd = F - Ad; Hd = Bd + H; - if(type==1){ //HACK - Gd += 16*128; - Add+= 16*128; - Ed += 16*128; - Fd += 16*128; - } - Gd += IdctAdjustBeforeShift; - Add += IdctAdjustBeforeShift; - Ed += IdctAdjustBeforeShift; - Fd += IdctAdjustBeforeShift; - /* Final sequence of operations over-write original inputs. */ if(type==0){ ip[0*8] = (Gd + Cd ) >> 4;