This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 34c9438bbe6ca2dd6014853055f514a04a9eb16d
Author:     Andreas Rheinhardt <[email protected]>
AuthorDate: Wed Jun 25 08:44:18 2025 +0200
Commit:     Andreas Rheinhardt <[email protected]>
CommitDate: Fri Jan 2 18:39:48 2026 +0100

    avcodec/wmv2dsp: Move mspel motion functions out of WMV2DSPContext
    
    They are only used by the decoder (which has them twice, because
    the IntraX8Context contains a WMV2DSPContext whose put_mspel_pixels
    functions were unused), so move them there.
    
    Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 configure            |   3 +-
 libavcodec/wmv2dec.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++++---
 libavcodec/wmv2dsp.c | 119 --------------------------------------------
 libavcodec/wmv2dsp.h |   5 +-
 4 files changed, 133 insertions(+), 131 deletions(-)

diff --git a/configure b/configure
index 301a3e5e3e..74e0345d88 100755
--- a/configure
+++ b/configure
@@ -2963,7 +2963,6 @@ msmpeg4dec_select="h263_decoder"
 msmpeg4enc_select="h263_encoder"
 vc1dsp_select="h264chroma startcode"
 vvc_sei_select="atsc_a53 golomb"
-wmv2dsp_select="qpeldsp"
 
 # decoders / encoders
 aac_decoder_select="adts_header mpeg4audio sinewin"
@@ -3225,7 +3224,7 @@ wmav2_encoder_select="sinewin wma_freqs"
 wmavoice_decoder_select="lsp sinewin"
 wmv1_decoder_select="msmpeg4dec"
 wmv1_encoder_select="msmpeg4enc"
-wmv2_decoder_select="blockdsp error_resilience idctdsp intrax8 msmpeg4dec 
videodsp wmv2dsp"
+wmv2_decoder_select="blockdsp error_resilience idctdsp intrax8 msmpeg4dec 
qpeldsp videodsp wmv2dsp"
 wmv2_encoder_select="msmpeg4enc wmv2dsp"
 wmv3_decoder_select="vc1_decoder"
 wmv3image_decoder_select="wmv3_decoder"
diff --git a/libavcodec/wmv2dec.c b/libavcodec/wmv2dec.c
index 554b784a5d..749a8608a2 100644
--- a/libavcodec/wmv2dec.c
+++ b/libavcodec/wmv2dec.c
@@ -32,6 +32,7 @@
 #include "msmpeg4.h"
 #include "msmpeg4_vc1_data.h"
 #include "msmpeg4dec.h"
+#include "qpeldsp.h"
 #include "simple_idct.h"
 #include "wmv2.h"
 #include "wmv2data.h"
@@ -41,6 +42,9 @@ typedef struct WMV2DecContext {
     MSMP4DecContext ms;
     WMV2Context common;
     IntraX8Context x8;
+
+    qpel_mc_func put_mspel_pixels_tab[8];
+
     int j_type_bit;
     int j_type;
     int abt_flag;
@@ -56,20 +60,139 @@ typedef struct WMV2DecContext {
     DECLARE_ALIGNED(32, int16_t, abt_block2)[6][64];
 } WMV2DecContext;
 
+static void wmv2_mspel8_h_lowpass(uint8_t *dst, const uint8_t *src,
+                                  int dstStride, int srcStride, int h)
+{
+    const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;
+
+    for (int i = 0; i < h; i++) {
+        dst[0] = cm[(9 * (src[0] + src[1]) - (src[-1] + src[2]) + 8) >> 4];
+        dst[1] = cm[(9 * (src[1] + src[2]) - (src[0]  + src[3]) + 8) >> 4];
+        dst[2] = cm[(9 * (src[2] + src[3]) - (src[1]  + src[4]) + 8) >> 4];
+        dst[3] = cm[(9 * (src[3] + src[4]) - (src[2]  + src[5]) + 8) >> 4];
+        dst[4] = cm[(9 * (src[4] + src[5]) - (src[3]  + src[6]) + 8) >> 4];
+        dst[5] = cm[(9 * (src[5] + src[6]) - (src[4]  + src[7]) + 8) >> 4];
+        dst[6] = cm[(9 * (src[6] + src[7]) - (src[5]  + src[8]) + 8) >> 4];
+        dst[7] = cm[(9 * (src[7] + src[8]) - (src[6]  + src[9]) + 8) >> 4];
+        dst   += dstStride;
+        src   += srcStride;
+    }
+}
+
+static void wmv2_mspel8_v_lowpass(uint8_t *dst, const uint8_t *src,
+                                  int dstStride, int srcStride, int w)
+{
+    const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;
+
+    for (int i = 0; i < w; i++) {
+        const int src_1 = src[-srcStride];
+        const int src0  = src[0];
+        const int src1  = src[srcStride];
+        const int src2  = src[2 * srcStride];
+        const int src3  = src[3 * srcStride];
+        const int src4  = src[4 * srcStride];
+        const int src5  = src[5 * srcStride];
+        const int src6  = src[6 * srcStride];
+        const int src7  = src[7 * srcStride];
+        const int src8  = src[8 * srcStride];
+        const int src9  = src[9 * srcStride];
+        dst[0 * dstStride] = cm[(9 * (src0 + src1) - (src_1 + src2) + 8) >> 4];
+        dst[1 * dstStride] = cm[(9 * (src1 + src2) - (src0  + src3) + 8) >> 4];
+        dst[2 * dstStride] = cm[(9 * (src2 + src3) - (src1  + src4) + 8) >> 4];
+        dst[3 * dstStride] = cm[(9 * (src3 + src4) - (src2  + src5) + 8) >> 4];
+        dst[4 * dstStride] = cm[(9 * (src4 + src5) - (src3  + src6) + 8) >> 4];
+        dst[5 * dstStride] = cm[(9 * (src5 + src6) - (src4  + src7) + 8) >> 4];
+        dst[6 * dstStride] = cm[(9 * (src6 + src7) - (src5  + src8) + 8) >> 4];
+        dst[7 * dstStride] = cm[(9 * (src7 + src8) - (src6  + src9) + 8) >> 4];
+        src++;
+        dst++;
+    }
+}
+
+static void put_mspel8_mc10_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
+{
+    uint8_t half[64];
+
+    wmv2_mspel8_h_lowpass(half, src, 8, stride, 8);
+    ff_put_pixels8_l2_8(dst, src, half, stride, stride, 8, 8);
+}
+
+static void put_mspel8_mc20_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
+{
+    wmv2_mspel8_h_lowpass(dst, src, stride, stride, 8);
+}
+
+static void put_mspel8_mc30_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
+{
+    uint8_t half[64];
+
+    wmv2_mspel8_h_lowpass(half, src, 8, stride, 8);
+    ff_put_pixels8_l2_8(dst, src + 1, half, stride, stride, 8, 8);
+}
+
+static void put_mspel8_mc02_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
+{
+    wmv2_mspel8_v_lowpass(dst, src, stride, stride, 8);
+}
+
+static void put_mspel8_mc12_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
+{
+    uint8_t halfH[88];
+    uint8_t halfV[64];
+    uint8_t halfHV[64];
+
+    wmv2_mspel8_h_lowpass(halfH, src - stride, 8, stride, 11);
+    wmv2_mspel8_v_lowpass(halfV, src, 8, stride, 8);
+    wmv2_mspel8_v_lowpass(halfHV, halfH + 8, 8, 8, 8);
+    ff_put_pixels8_l2_8(dst, halfV, halfHV, stride, 8, 8, 8);
+}
+
+static void put_mspel8_mc32_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
+{
+    uint8_t halfH[88];
+    uint8_t halfV[64];
+    uint8_t halfHV[64];
+
+    wmv2_mspel8_h_lowpass(halfH, src - stride, 8, stride, 11);
+    wmv2_mspel8_v_lowpass(halfV, src + 1, 8, stride, 8);
+    wmv2_mspel8_v_lowpass(halfHV, halfH + 8, 8, 8, 8);
+    ff_put_pixels8_l2_8(dst, halfV, halfHV, stride, 8, 8, 8);
+}
+
+static void put_mspel8_mc22_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
+{
+    uint8_t halfH[88];
+
+    wmv2_mspel8_h_lowpass(halfH, src - stride, 8, stride, 11);
+    wmv2_mspel8_v_lowpass(dst, halfH + 8, stride, 8, 8);
+}
+
+static av_cold void wmv2_mspel_init(WMV2DecContext *w)
+{
+    w->put_mspel_pixels_tab[0] = ff_put_pixels8x8_c;
+    w->put_mspel_pixels_tab[1] = put_mspel8_mc10_c;
+    w->put_mspel_pixels_tab[2] = put_mspel8_mc20_c;
+    w->put_mspel_pixels_tab[3] = put_mspel8_mc30_c;
+    w->put_mspel_pixels_tab[4] = put_mspel8_mc02_c;
+    w->put_mspel_pixels_tab[5] = put_mspel8_mc12_c;
+    w->put_mspel_pixels_tab[6] = put_mspel8_mc22_c;
+    w->put_mspel_pixels_tab[7] = put_mspel8_mc32_c;
+}
+
 void ff_mspel_motion(MPVContext *const s, uint8_t *dest_y,
                      uint8_t *dest_cb, uint8_t *dest_cr,
                      uint8_t *const *ref_picture,
                      const op_pixels_func (*pix_op)[4],
                      int motion_x, int motion_y, int h)
 {
-    WMV2Context *const w = s->private_ctx;
+    WMV2DecContext *const w = (WMV2DecContext *) s;
     const uint8_t *ptr;
     int dxy, mx, my, src_x, src_y, v_edge_pos;
     ptrdiff_t offset, linesize, uvlinesize;
     int emu = 0;
 
     dxy   = ((motion_y & 1) << 1) | (motion_x & 1);
-    dxy   = 2 * dxy + w->hshift;
+    dxy   = 2 * dxy + w->common.hshift;
     src_x = s->mb_x * 16 + (motion_x >> 1);
     src_y = s->mb_y * 16 + (motion_y >> 1);
 
@@ -97,10 +220,10 @@ void ff_mspel_motion(MPVContext *const s, uint8_t *dest_y,
         emu = 1;
     }
 
-    w->wdsp.put_mspel_pixels_tab[dxy](dest_y,                    ptr,          
          linesize);
-    w->wdsp.put_mspel_pixels_tab[dxy](dest_y     + 8,            ptr     + 8,  
          linesize);
-    w->wdsp.put_mspel_pixels_tab[dxy](dest_y     + 8 * linesize, ptr     + 8 * 
linesize, linesize);
-    w->wdsp.put_mspel_pixels_tab[dxy](dest_y + 8 + 8 * linesize, ptr + 8 + 8 * 
linesize, linesize);
+    w->put_mspel_pixels_tab[dxy](dest_y,                    ptr,               
     linesize);
+    w->put_mspel_pixels_tab[dxy](dest_y     + 8,            ptr     + 8,       
     linesize);
+    w->put_mspel_pixels_tab[dxy](dest_y     + 8 * linesize, ptr     + 8 * 
linesize, linesize);
+    w->put_mspel_pixels_tab[dxy](dest_y + 8 + 8 * linesize, ptr + 8 + 8 * 
linesize, linesize);
 
     if (s->avctx->flags & AV_CODEC_FLAG_GRAY)
         return;
@@ -659,6 +782,8 @@ static av_cold int wmv2_decode_init(AVCodecContext *avctx)
     MpegEncContext *const s = &h->c;
     int ret;
 
+    wmv2_mspel_init(w);
+
     s->private_ctx = &w->common;
 
     if ((ret = ff_msmpeg4_decode_init(avctx)) < 0)
diff --git a/libavcodec/wmv2dsp.c b/libavcodec/wmv2dsp.c
index 4ad8a596b8..2616f133ba 100644
--- a/libavcodec/wmv2dsp.c
+++ b/libavcodec/wmv2dsp.c
@@ -21,7 +21,6 @@
 #include "libavutil/common.h"
 #include "idctdsp.h"
 #include "mathops.h"
-#include "qpeldsp.h"
 #include "wmv2dsp.h"
 
 #define W0 2048
@@ -140,130 +139,12 @@ static void wmv2_idct_put_c(uint8_t *dest, ptrdiff_t 
line_size, int16_t *block)
     }
 }
 
-static void wmv2_mspel8_h_lowpass(uint8_t *dst, const uint8_t *src,
-                                  int dstStride, int srcStride, int h)
-{
-    const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;
-    int i;
-
-    for (i = 0; i < h; i++) {
-        dst[0] = cm[(9 * (src[0] + src[1]) - (src[-1] + src[2]) + 8) >> 4];
-        dst[1] = cm[(9 * (src[1] + src[2]) - (src[0]  + src[3]) + 8) >> 4];
-        dst[2] = cm[(9 * (src[2] + src[3]) - (src[1]  + src[4]) + 8) >> 4];
-        dst[3] = cm[(9 * (src[3] + src[4]) - (src[2]  + src[5]) + 8) >> 4];
-        dst[4] = cm[(9 * (src[4] + src[5]) - (src[3]  + src[6]) + 8) >> 4];
-        dst[5] = cm[(9 * (src[5] + src[6]) - (src[4]  + src[7]) + 8) >> 4];
-        dst[6] = cm[(9 * (src[6] + src[7]) - (src[5]  + src[8]) + 8) >> 4];
-        dst[7] = cm[(9 * (src[7] + src[8]) - (src[6]  + src[9]) + 8) >> 4];
-        dst   += dstStride;
-        src   += srcStride;
-    }
-}
-
-static void wmv2_mspel8_v_lowpass(uint8_t *dst, const uint8_t *src,
-                                  int dstStride, int srcStride, int w)
-{
-    const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;
-    int i;
-
-    for (i = 0; i < w; i++) {
-        const int src_1 = src[-srcStride];
-        const int src0  = src[0];
-        const int src1  = src[srcStride];
-        const int src2  = src[2 * srcStride];
-        const int src3  = src[3 * srcStride];
-        const int src4  = src[4 * srcStride];
-        const int src5  = src[5 * srcStride];
-        const int src6  = src[6 * srcStride];
-        const int src7  = src[7 * srcStride];
-        const int src8  = src[8 * srcStride];
-        const int src9  = src[9 * srcStride];
-        dst[0 * dstStride] = cm[(9 * (src0 + src1) - (src_1 + src2) + 8) >> 4];
-        dst[1 * dstStride] = cm[(9 * (src1 + src2) - (src0  + src3) + 8) >> 4];
-        dst[2 * dstStride] = cm[(9 * (src2 + src3) - (src1  + src4) + 8) >> 4];
-        dst[3 * dstStride] = cm[(9 * (src3 + src4) - (src2  + src5) + 8) >> 4];
-        dst[4 * dstStride] = cm[(9 * (src4 + src5) - (src3  + src6) + 8) >> 4];
-        dst[5 * dstStride] = cm[(9 * (src5 + src6) - (src4  + src7) + 8) >> 4];
-        dst[6 * dstStride] = cm[(9 * (src6 + src7) - (src5  + src8) + 8) >> 4];
-        dst[7 * dstStride] = cm[(9 * (src7 + src8) - (src6  + src9) + 8) >> 4];
-        src++;
-        dst++;
-    }
-}
-
-static void put_mspel8_mc10_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
-{
-    uint8_t half[64];
-
-    wmv2_mspel8_h_lowpass(half, src, 8, stride, 8);
-    ff_put_pixels8_l2_8(dst, src, half, stride, stride, 8, 8);
-}
-
-static void put_mspel8_mc20_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
-{
-    wmv2_mspel8_h_lowpass(dst, src, stride, stride, 8);
-}
-
-static void put_mspel8_mc30_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
-{
-    uint8_t half[64];
-
-    wmv2_mspel8_h_lowpass(half, src, 8, stride, 8);
-    ff_put_pixels8_l2_8(dst, src + 1, half, stride, stride, 8, 8);
-}
-
-static void put_mspel8_mc02_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
-{
-    wmv2_mspel8_v_lowpass(dst, src, stride, stride, 8);
-}
-
-static void put_mspel8_mc12_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
-{
-    uint8_t halfH[88];
-    uint8_t halfV[64];
-    uint8_t halfHV[64];
-
-    wmv2_mspel8_h_lowpass(halfH, src - stride, 8, stride, 11);
-    wmv2_mspel8_v_lowpass(halfV, src, 8, stride, 8);
-    wmv2_mspel8_v_lowpass(halfHV, halfH + 8, 8, 8, 8);
-    ff_put_pixels8_l2_8(dst, halfV, halfHV, stride, 8, 8, 8);
-}
-
-static void put_mspel8_mc32_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
-{
-    uint8_t halfH[88];
-    uint8_t halfV[64];
-    uint8_t halfHV[64];
-
-    wmv2_mspel8_h_lowpass(halfH, src - stride, 8, stride, 11);
-    wmv2_mspel8_v_lowpass(halfV, src + 1, 8, stride, 8);
-    wmv2_mspel8_v_lowpass(halfHV, halfH + 8, 8, 8, 8);
-    ff_put_pixels8_l2_8(dst, halfV, halfHV, stride, 8, 8, 8);
-}
-
-static void put_mspel8_mc22_c(uint8_t *dst, const uint8_t *src, ptrdiff_t 
stride)
-{
-    uint8_t halfH[88];
-
-    wmv2_mspel8_h_lowpass(halfH, src - stride, 8, stride, 11);
-    wmv2_mspel8_v_lowpass(dst, halfH + 8, stride, 8, 8);
-}
-
 av_cold void ff_wmv2dsp_init(WMV2DSPContext *c)
 {
     c->idct_add  = wmv2_idct_add_c;
     c->idct_put  = wmv2_idct_put_c;
     c->idct_perm = FF_IDCT_PERM_NONE;
 
-    c->put_mspel_pixels_tab[0] = ff_put_pixels8x8_c;
-    c->put_mspel_pixels_tab[1] = put_mspel8_mc10_c;
-    c->put_mspel_pixels_tab[2] = put_mspel8_mc20_c;
-    c->put_mspel_pixels_tab[3] = put_mspel8_mc30_c;
-    c->put_mspel_pixels_tab[4] = put_mspel8_mc02_c;
-    c->put_mspel_pixels_tab[5] = put_mspel8_mc12_c;
-    c->put_mspel_pixels_tab[6] = put_mspel8_mc22_c;
-    c->put_mspel_pixels_tab[7] = put_mspel8_mc32_c;
-
 #if ARCH_MIPS
     ff_wmv2dsp_init_mips(c);
 #endif
diff --git a/libavcodec/wmv2dsp.h b/libavcodec/wmv2dsp.h
index 5e40b30a20..6906dc29f2 100644
--- a/libavcodec/wmv2dsp.h
+++ b/libavcodec/wmv2dsp.h
@@ -19,16 +19,13 @@
 #ifndef AVCODEC_WMV2DSP_H
 #define AVCODEC_WMV2DSP_H
 
+#include <stddef.h>
 #include <stdint.h>
 
-#include "qpeldsp.h"
-
 typedef struct WMV2DSPContext {
     void (*idct_add)(uint8_t *dest, ptrdiff_t line_size, int16_t *block);
     void (*idct_put)(uint8_t *dest, ptrdiff_t line_size, int16_t *block);
 
-    qpel_mc_func put_mspel_pixels_tab[8];
-
     int idct_perm;
 } WMV2DSPContext;
 

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to