]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/idctdsp.c
Merge commit '551746680462538bb5ad7adf55fb1248190428ec'
[ffmpeg] / libavcodec / idctdsp.c
index f139bacc0fa3f006a5debef4ce852e3d9f9db493..b4972211de8674e753b074678bfe7e4530e49feb 100644 (file)
@@ -80,8 +80,11 @@ av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation,
     }
 }
 
-void ff_put_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
-                           int line_size)
+void (*ff_put_pixels_clamped)(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size);
+void (*ff_add_pixels_clamped)(const int16_t *block, uint8_t *pixels, ptrdiff_t line_size);
+
+static void put_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
+                                 ptrdiff_t line_size)
 {
     int i;
 
@@ -135,7 +138,7 @@ static void put_pixels_clamped2_c(const int16_t *block, uint8_t *av_restrict pix
 
 static void put_signed_pixels_clamped_c(const int16_t *block,
                                         uint8_t *av_restrict pixels,
-                                        int line_size)
+                                        ptrdiff_t line_size)
 {
     int i, j;
 
@@ -154,8 +157,8 @@ static void put_signed_pixels_clamped_c(const int16_t *block,
     }
 }
 
-void ff_add_pixels_clamped(const int16_t *block, uint8_t *av_restrict pixels,
-                           int line_size)
+static void add_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels,
+                                 ptrdiff_t line_size)
 {
     int i;
 
@@ -204,17 +207,6 @@ static void add_pixels_clamped2_c(const int16_t *block, uint8_t *av_restrict pix
     }
 }
 
-static void jref_idct_put(uint8_t *dest, int line_size, int16_t *block)
-{
-    ff_j_rev_dct(block);
-    ff_put_pixels_clamped(block, dest, line_size);
-}
-
-static void jref_idct_add(uint8_t *dest, int line_size, int16_t *block)
-{
-    ff_j_rev_dct(block);
-    ff_add_pixels_clamped(block, dest, line_size);
-}
 static void ff_jref_idct4_put(uint8_t *dest, int line_size, int16_t *block)
 {
     ff_j_rev_dct4 (block);
@@ -278,15 +270,17 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
             c->perm_type             = FF_IDCT_PERM_NONE;
         } else {
             if (avctx->idct_algo == FF_IDCT_INT) {
-                c->idct_put  = jref_idct_put;
-                c->idct_add  = jref_idct_add;
+                c->idct_put  = ff_jref_idct_put;
+                c->idct_add  = ff_jref_idct_add;
                 c->idct      = ff_j_rev_dct;
                 c->perm_type = FF_IDCT_PERM_LIBMPEG2;
+#if CONFIG_FAANIDCT
             } else if (avctx->idct_algo == FF_IDCT_FAAN) {
                 c->idct_put  = ff_faanidct_put;
                 c->idct_add  = ff_faanidct_add;
                 c->idct      = ff_faanidct;
                 c->perm_type = FF_IDCT_PERM_NONE;
+#endif /* CONFIG_FAANIDCT */
             } else { // accurate/default
                 c->idct_put  = ff_simple_idct_put_8;
                 c->idct_add  = ff_simple_idct_add_8;
@@ -296,12 +290,12 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
         }
     }
 
-    c->put_pixels_clamped        = ff_put_pixels_clamped;
+    c->put_pixels_clamped        = put_pixels_clamped_c;
     c->put_signed_pixels_clamped = put_signed_pixels_clamped_c;
-    c->add_pixels_clamped        = ff_add_pixels_clamped;
+    c->add_pixels_clamped        = add_pixels_clamped_c;
 
     if (CONFIG_MPEG4_DECODER && avctx->idct_algo == FF_IDCT_XVID)
-        ff_xvididct_init(c, avctx);
+        ff_xvid_idct_init(c, avctx);
 
     if (ARCH_ALPHA)
         ff_idctdsp_init_alpha(c, avctx, high_bit_depth);
@@ -312,6 +306,9 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx)
     if (ARCH_X86)
         ff_idctdsp_init_x86(c, avctx, high_bit_depth);
 
+    ff_put_pixels_clamped = c->put_pixels_clamped;
+    ff_add_pixels_clamped = c->add_pixels_clamped;
+
     ff_init_scantable_permutation(c->idct_permutation,
                                   c->perm_type);
 }