[FFmpeg-cvslog] vp3: embed idct_permutation array directly in VP3DecoderContext.

Ronald S. Bultje git at videolan.org
Sun Mar 10 02:57:11 CET 2013


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Sat Mar  9 09:08:36 2013 -0800| [d5efa84f13d349e1bd852c94fcd171f3488dee0c] | committer: Michael Niedermayer

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: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d5efa84f13d349e1bd852c94fcd171f3488dee0c
---

 libavcodec/vp3.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c
index 00a77e9..686683d 100644
--- a/libavcodec/vp3.c
+++ b/libavcodec/vp3.c
@@ -139,6 +139,7 @@ typedef struct Vp3DecodeContext {
     AVFrame last_frame;
     AVFrame current_frame;
     int keyframe;
+    uint8_t idct_permutation[64];
     DSPContext dsp;
     VideoDSPContext vdsp;
     VP3DSPContext vp3dsp;
@@ -384,7 +385,7 @@ 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];
@@ -1680,8 +1681,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 */
@@ -1886,7 +1887,7 @@ static int vp3_update_thread_context(AVCodecContext *dst, const AVCodecContext *
         }
 
         // copy previous frame data
-        copy_fields(s, s1, golden_frame, dsp);
+        copy_fields(s, s1, golden_frame, idct_permutation);
 
         // copy qscale data if necessary
         for (i = 0; i < 3; i++) {



More information about the ffmpeg-cvslog mailing list