avcodec/proresenc_anatoliy: Use fdct from DSPContext instead of direct call.
[ffmpeg.git] / libavcodec / proresenc_anatoliy.c
index 6514862..391ffa9 100644 (file)
@@ -145,6 +145,7 @@ static const uint8_t QMAT_CHROMA[4][64] = {
 
 
 typedef struct {
+    DSPContext dsp;
     uint8_t* fill_y;
     uint8_t* fill_u;
     uint8_t* fill_v;
@@ -276,27 +277,29 @@ static void get(uint8_t *pixels, int stride, int16_t* block)
     }
 }
 
-static void fdct_get(uint8_t *pixels, int stride, int16_t* block)
+static void fdct_get(DSPContext *dsp, uint8_t *pixels, int stride, int16_t* block)
 {
     get(pixels, stride, block);
-    ff_jpeg_fdct_islow_10(block);
+    dsp->fdct(block);
 }
 
 static int encode_slice_plane(AVCodecContext *avctx, int mb_count,
         uint8_t *src, int src_stride, uint8_t *buf, unsigned buf_size,
         int *qmat, int chroma)
 {
+    ProresContext* ctx = avctx->priv_data;
+    DSPContext *dsp = &ctx->dsp;
     DECLARE_ALIGNED(16, int16_t, blocks)[DEFAULT_SLICE_MB_WIDTH << 8], *block;
     int i, blocks_per_slice;
     PutBitContext pb;
 
     block = blocks;
     for (i = 0; i < mb_count; i++) {
-        fdct_get(src,                  src_stride, block + (0 << 6));
-        fdct_get(src + 8 * src_stride, src_stride, block + ((2 - chroma) << 6));
+        fdct_get(dsp, src,                  src_stride, block + (0 << 6));
+        fdct_get(dsp, src + 8 * src_stride, src_stride, block + ((2 - chroma) << 6));
         if (!chroma) {
-            fdct_get(src + 16,                  src_stride, block + (1 << 6));
-            fdct_get(src + 16 + 8 * src_stride, src_stride, block + (3 << 6));
+            fdct_get(dsp, src + 16,                  src_stride, block + (1 << 6));
+            fdct_get(dsp, src + 16 + 8 * src_stride, src_stride, block + (3 << 6));
         }
 
         block += (256 >> chroma);
@@ -576,6 +579,8 @@ static av_cold int prores_encode_init(AVCodecContext *avctx)
         return -1;
     }
 
+    ff_dsputil_init(&ctx->dsp, avctx);
+
     avctx->codec_tag = AV_RL32((const uint8_t*)profiles[avctx->profile].name);
 
     for (i = 1; i <= 16; i++) {