@ -135,6 +135,7 @@ typedef struct Vp3DecodeContext {
ThreadFrame last_frame ;
ThreadFrame current_frame ;
int keyframe ;
uint8_t idct_permutation [ 64 ] ;
DSPContext dsp ;
VideoDSPContext vdsp ;
VP3DSPContext vp3dsp ;
@ -374,7 +375,8 @@ static void init_dequantizer(Vp3DecodeContext *s, int qpi)
int qmin = 8 < < ( inter + ! i ) ;
int qscale = i ? ac_scale_factor : dc_scale_factor ;
s - > qmat [ qpi ] [ inter ] [ plane ] [ s - > dsp . idct_permutation [ i ] ] = av_clip ( ( qscale * coeff ) / 100 * 4 , qmin , 4096 ) ;
s - > qmat [ qpi ] [ inter ] [ plane ] [ s - > idct_permutation [ i ] ] =
av_clip ( ( qscale * coeff ) / 100 * 4 , qmin , 4096 ) ;
}
// all DC coefficients use the same quant so as not to interfere with DC prediction
s - > qmat [ qpi ] [ inter ] [ plane ] [ 0 ] = s - > qmat [ 0 ] [ inter ] [ plane ] [ 0 ] ;
@ -1698,8 +1700,8 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx)
ff_videodsp_init ( & s - > vdsp , 8 ) ;
ff_vp3dsp_init ( & s - > vp3dsp , avctx - > flags ) ;
ff_init_scantable_permutation ( s - > dsp . idct_permutation , s - > vp3dsp . idct_perm ) ;
ff_init_scantable ( s - > dsp . idct_permutation , & s - > scantable , ff_zigzag_direct ) ;
ff_init_scantable_permutation ( s - > idct_permutation , s - > vp3dsp . idct_perm ) ;
ff_init_scantable ( s - > idct_permutation , & s - > scantable , ff_zigzag_direct ) ;
/* initialize to an impossible value which will force a recalculation
* in the first frame decode */