mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-08-18 07:15:04 +02:00
vp3: Embed idct_permutation array directly in VP3DecoderContext
This makes the vp3 decoder less dependent on dsputil, and will aid in making it (eventually) dsputil-independent. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
610b18e2e3
commit
18df366a18
@ -135,6 +135,7 @@ typedef struct Vp3DecodeContext {
|
|||||||
ThreadFrame last_frame;
|
ThreadFrame last_frame;
|
||||||
ThreadFrame current_frame;
|
ThreadFrame current_frame;
|
||||||
int keyframe;
|
int keyframe;
|
||||||
|
uint8_t idct_permutation[64];
|
||||||
DSPContext dsp;
|
DSPContext dsp;
|
||||||
VideoDSPContext vdsp;
|
VideoDSPContext vdsp;
|
||||||
VP3DSPContext vp3dsp;
|
VP3DSPContext vp3dsp;
|
||||||
@ -374,7 +375,8 @@ static void init_dequantizer(Vp3DecodeContext *s, int qpi)
|
|||||||
int qmin= 8<<(inter + !i);
|
int qmin= 8<<(inter + !i);
|
||||||
int qscale= i ? ac_scale_factor : dc_scale_factor;
|
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
|
// 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];
|
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_videodsp_init(&s->vdsp, 8);
|
||||||
ff_vp3dsp_init(&s->vp3dsp, avctx->flags);
|
ff_vp3dsp_init(&s->vp3dsp, avctx->flags);
|
||||||
|
|
||||||
ff_init_scantable_permutation(s->dsp.idct_permutation, s->vp3dsp.idct_perm);
|
ff_init_scantable_permutation(s->idct_permutation, s->vp3dsp.idct_perm);
|
||||||
ff_init_scantable(s->dsp.idct_permutation, &s->scantable, ff_zigzag_direct);
|
ff_init_scantable(s->idct_permutation, &s->scantable, ff_zigzag_direct);
|
||||||
|
|
||||||
/* initialize to an impossible value which will force a recalculation
|
/* initialize to an impossible value which will force a recalculation
|
||||||
* in the first frame decode */
|
* in the first frame decode */
|
||||||
|
Loading…
Reference in New Issue
Block a user