Commit 6c6a2764d9 for ffmpeg

commit 6c6a2764d95fe971a305958494ec1e6e8a5a9fcd
Author: Rainbaby <r@bgr.jp>
Date:   Fri Aug 28 16:18:06 2026 +0900

    avcodec/cavsdsp: widen the qpel interpolation intermediate

    The horizontal pass of the two dimensional quarter sample interpolation
    reaches (96 + 42) * 255 = 35190 in the ii and kk positions and overflows
    the int16_t intermediate. The other four positions use the half sample
    filter, stay within -510..2550 and keep int16_t. Only the C path is
    affected; the x86 SIMD covers just the one dimensional positions.

    Signed-off-by: Rainbaby <r@bgr.jp>

diff --git a/libavcodec/cavsdsp.c b/libavcodec/cavsdsp.c
index 7444f17bb5..f807ae201a 100644
--- a/libavcodec/cavsdsp.c
+++ b/libavcodec/cavsdsp.c
@@ -340,11 +340,11 @@ static void OPNAME ## cavs_filt16_h_ ## NAME(uint8_t *dst, const uint8_t *src, p
     OPNAME ## cavs_filt8_h_ ## NAME(dst+8, src+8, dstStride, srcStride);\
 }\

-#define CAVS_SUBPIX_HV(OPNAME, OP, NAME, AH, BH, CH, DH, EH, FH, AV, BV, CV, DV, EV, FV, FULL) \
+#define CAVS_SUBPIX_HV(OPNAME, OP, NAME, TYPE, AH, BH, CH, DH, EH, FH, AV, BV, CV, DV, EV, FV, FULL) \
 static void OPNAME ## cavs_filt8_hv_ ## NAME(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, ptrdiff_t dstStride, ptrdiff_t srcStride)\
 {                                                                       \
-    int16_t temp[8*(8+5)];\
-    int16_t *tmp = temp;\
+    TYPE temp[8*(8+5)];\
+    TYPE *tmp = temp;\
     const int h=8;\
     const int w=8;\
     const uint8_t *cm = ff_crop_tab + MAX_NEG_CROP;\
@@ -522,21 +522,23 @@ static void OPNAME ## cavs_qpel ## SIZE ## _mc23_c(uint8_t *dst, const uint8_t *
 CAVS_SUBPIX(put_   , op_put1, hpel,    0, -1,  5,  5, -1,  0)
 CAVS_SUBPIX(put_   , op_put2, qpel_l, -1, -2, 96, 42, -7,  0)
 CAVS_SUBPIX(put_   , op_put2, qpel_r,  0, -7, 42, 96, -2, -1)
-CAVS_SUBPIX_HV(put_, op_put3, jj,      0, -1,  5,  5, -1,  0,  0, -1,  5,  5, -1, 0, 0)
-CAVS_SUBPIX_HV(put_, op_put4, ff,      0, -1,  5,  5, -1,  0, -1, -2, 96, 42, -7, 0, 0)
-CAVS_SUBPIX_HV(put_, op_put4, ii,     -1, -2, 96, 42, -7,  0,  0, -1,  5,  5, -1, 0, 0)
-CAVS_SUBPIX_HV(put_, op_put4, kk,      0, -7, 42, 96, -2, -1,  0, -1,  5,  5, -1, 0, 0)
-CAVS_SUBPIX_HV(put_, op_put4, qq,      0, -1,  5,  5, -1,  0,  0, -7, 42, 96, -2,-1, 0)
-CAVS_SUBPIX_HV(put_, op_put2, egpr,    0, -1,  5,  5, -1,  0,  0, -1,  5,  5, -1, 0, 1)
+/* Only ii and kk need a wide horizontal intermediate (-2550..35190);
+ * the other families use the half-sample filter (-510..2550). */
+CAVS_SUBPIX_HV(put_, op_put3, jj,    int16_t,  0, -1,  5,  5, -1,  0,  0, -1,  5,  5, -1, 0, 0)
+CAVS_SUBPIX_HV(put_, op_put4, ff,    int16_t,  0, -1,  5,  5, -1,  0, -1, -2, 96, 42, -7, 0, 0)
+CAVS_SUBPIX_HV(put_, op_put4, ii,    int,     -1, -2, 96, 42, -7,  0,  0, -1,  5,  5, -1, 0, 0)
+CAVS_SUBPIX_HV(put_, op_put4, kk,    int,      0, -7, 42, 96, -2, -1,  0, -1,  5,  5, -1, 0, 0)
+CAVS_SUBPIX_HV(put_, op_put4, qq,    int16_t,  0, -1,  5,  5, -1,  0,  0, -7, 42, 96, -2,-1, 0)
+CAVS_SUBPIX_HV(put_, op_put2, egpr,  int16_t,  0, -1,  5,  5, -1,  0,  0, -1,  5,  5, -1, 0, 1)
 CAVS_SUBPIX(avg_   , op_avg1, hpel,    0, -1,  5,  5, -1,  0)
 CAVS_SUBPIX(avg_   , op_avg2, qpel_l, -1, -2, 96, 42, -7,  0)
 CAVS_SUBPIX(avg_   , op_avg2, qpel_r,  0, -7, 42, 96, -2, -1)
-CAVS_SUBPIX_HV(avg_, op_avg3, jj,      0, -1,  5,  5, -1,  0,  0, -1,  5,  5, -1, 0, 0)
-CAVS_SUBPIX_HV(avg_, op_avg4, ff,      0, -1,  5,  5, -1,  0, -1, -2, 96, 42, -7, 0, 0)
-CAVS_SUBPIX_HV(avg_, op_avg4, ii,     -1, -2, 96, 42, -7,  0,  0, -1,  5,  5, -1, 0, 0)
-CAVS_SUBPIX_HV(avg_, op_avg4, kk,      0, -7, 42, 96, -2, -1,  0, -1,  5,  5, -1, 0, 0)
-CAVS_SUBPIX_HV(avg_, op_avg4, qq,      0, -1,  5,  5, -1,  0,  0, -7, 42, 96, -2,-1, 0)
-CAVS_SUBPIX_HV(avg_, op_avg2, egpr,    0, -1,  5,  5, -1,  0,  0, -1,  5,  5, -1, 0, 1)
+CAVS_SUBPIX_HV(avg_, op_avg3, jj,    int16_t,  0, -1,  5,  5, -1,  0,  0, -1,  5,  5, -1, 0, 0)
+CAVS_SUBPIX_HV(avg_, op_avg4, ff,    int16_t,  0, -1,  5,  5, -1,  0, -1, -2, 96, 42, -7, 0, 0)
+CAVS_SUBPIX_HV(avg_, op_avg4, ii,    int,     -1, -2, 96, 42, -7,  0,  0, -1,  5,  5, -1, 0, 0)
+CAVS_SUBPIX_HV(avg_, op_avg4, kk,    int,      0, -7, 42, 96, -2, -1,  0, -1,  5,  5, -1, 0, 0)
+CAVS_SUBPIX_HV(avg_, op_avg4, qq,    int16_t,  0, -1,  5,  5, -1,  0,  0, -7, 42, 96, -2,-1, 0)
+CAVS_SUBPIX_HV(avg_, op_avg2, egpr,  int16_t,  0, -1,  5,  5, -1,  0,  0, -1,  5,  5, -1, 0, 1)
 CAVS_MC(put_, 8)
 CAVS_MC(put_, 16)
 CAVS_MC(avg_, 8)
diff --git a/tests/ref/fate/cavs-bunny b/tests/ref/fate/cavs-bunny
index 9612d4c53d..105bfd06e2 100644
--- a/tests/ref/fate/cavs-bunny
+++ b/tests/ref/fate/cavs-bunny
@@ -5,61 +5,61 @@
 #sar 0: 0/1
 0,          0,          0,        1,  1382400, 0xe9f1474e
 0,          1,          1,        1,  1382400, 0x4d17cb21
-0,          2,          2,        1,  1382400, 0x695ebe1a
+0,          2,          2,        1,  1382400, 0x74c8c1d0
 0,          3,          3,        1,  1382400, 0x1180db73
 0,          4,          4,        1,  1382400, 0xe03aefff
-0,          5,          5,        1,  1382400, 0x952185a6
-0,          6,          6,        1,  1382400, 0x631fbb7a
-0,          7,          7,        1,  1382400, 0x34a1c689
-0,          8,          8,        1,  1382400, 0x67647ac0
-0,          9,          9,        1,  1382400, 0xe0e15248
-0,         10,         10,        1,  1382400, 0x7a8e3a2d
-0,         11,         11,        1,  1382400, 0x61f70ac2
-0,         12,         12,        1,  1382400, 0x473a9789
-0,         13,         13,        1,  1382400, 0x2e054d1e
-0,         14,         14,        1,  1382400, 0x2c206001
-0,         15,         15,        1,  1382400, 0x445c7cf8
-0,         16,         16,        1,  1382400, 0x4abc4a39
-0,         17,         17,        1,  1382400, 0x435c27f9
-0,         18,         18,        1,  1382400, 0x0e8665b6
-0,         19,         19,        1,  1382400, 0x854761c5
-0,         20,         20,        1,  1382400, 0x75f3ec2d
-0,         21,         21,        1,  1382400, 0x1fc8d679
-0,         22,         22,        1,  1382400, 0xff27f7ad
-0,         23,         23,        1,  1382400, 0x469602a4
-0,         24,         24,        1,  1382400, 0xa7646e15
-0,         25,         25,        1,  1382400, 0x3dee7bfc
-0,         26,         26,        1,  1382400, 0xaa39a8c3
-0,         27,         27,        1,  1382400, 0xa585b72a
-0,         28,         28,        1,  1382400, 0x768221d0
-0,         29,         29,        1,  1382400, 0xf7bae782
+0,          5,          5,        1,  1382400, 0x50718659
+0,          6,          6,        1,  1382400, 0xd268bb69
+0,          7,          7,        1,  1382400, 0xb53dc738
+0,          8,          8,        1,  1382400, 0xfd237a9d
+0,          9,          9,        1,  1382400, 0x9a2a5229
+0,         10,         10,        1,  1382400, 0xeaf53a0d
+0,         11,         11,        1,  1382400, 0xf3410aa3
+0,         12,         12,        1,  1382400, 0xa6b99770
+0,         13,         13,        1,  1382400, 0x9e024de1
+0,         14,         14,        1,  1382400, 0xa80e60b9
+0,         15,         15,        1,  1382400, 0x9ae37dac
+0,         16,         16,        1,  1382400, 0x89b64bbc
+0,         17,         17,        1,  1382400, 0x415f2995
+0,         18,         18,        1,  1382400, 0x1f7a6757
+0,         19,         19,        1,  1382400, 0xbc78635d
+0,         20,         20,        1,  1382400, 0x283aedd7
+0,         21,         21,        1,  1382400, 0x2e0ddb68
+0,         22,         22,        1,  1382400, 0x5273faf3
+0,         23,         23,        1,  1382400, 0x15a5072c
+0,         24,         24,        1,  1382400, 0x283872e5
+0,         25,         25,        1,  1382400, 0x7d2e81a9
+0,         26,         26,        1,  1382400, 0xf62dae86
+0,         27,         27,        1,  1382400, 0x3876bcdf
+0,         28,         28,        1,  1382400, 0x7ad22842
+0,         29,         29,        1,  1382400, 0x6ca2ee14
 0,         30,         30,        1,  1382400, 0x3c8e4cc2
 0,         31,         31,        1,  1382400, 0xeaa6696a
 0,         32,         32,        1,  1382400, 0xda496f5b
 0,         33,         33,        1,  1382400, 0x91a08b06
 0,         34,         34,        1,  1382400, 0xc15e21b6
-0,         35,         35,        1,  1382400, 0x34150c81
-0,         36,         36,        1,  1382400, 0xaeed255e
-0,         37,         37,        1,  1382400, 0x89d3f712
-0,         38,         38,        1,  1382400, 0xd4ed6c9f
-0,         39,         39,        1,  1382400, 0xad0d4b00
-0,         40,         40,        1,  1382400, 0xff6b61a1
-0,         41,         41,        1,  1382400, 0x978e5a2e
-0,         42,         42,        1,  1382400, 0x9e79d072
-0,         43,         43,        1,  1382400, 0x8bb8edbc
-0,         44,         44,        1,  1382400, 0xf6450cf4
-0,         45,         45,        1,  1382400, 0x78cd0feb
-0,         46,         46,        1,  1382400, 0x7e037f98
-0,         47,         47,        1,  1382400, 0x5cba2d2f
-0,         48,         48,        1,  1382400, 0x146c6461
-0,         49,         49,        1,  1382400, 0xa8766a4f
-0,         50,         50,        1,  1382400, 0x4b248b6c
-0,         51,         51,        1,  1382400, 0xa2c68515
-0,         52,         52,        1,  1382400, 0x8e4ab5ac
-0,         53,         53,        1,  1382400, 0x98f2b920
-0,         54,         54,        1,  1382400, 0xde230210
-0,         55,         55,        1,  1382400, 0xc048ecb6
-0,         56,         56,        1,  1382400, 0x99651457
-0,         57,         57,        1,  1382400, 0x03081884
-0,         58,         58,        1,  1382400, 0x091a6b05
-0,         59,         59,        1,  1382400, 0x5e6a333e
+0,         35,         35,        1,  1382400, 0x15960e2c
+0,         36,         36,        1,  1382400, 0xabfa2632
+0,         37,         37,        1,  1382400, 0x690af8af
+0,         38,         38,        1,  1382400, 0x078c6e22
+0,         39,         39,        1,  1382400, 0x20c94d69
+0,         40,         40,        1,  1382400, 0x8f5c6340
+0,         41,         41,        1,  1382400, 0x110b5bb6
+0,         42,         42,        1,  1382400, 0x1e16d207
+0,         43,         43,        1,  1382400, 0x231fef4b
+0,         44,         44,        1,  1382400, 0xda720e9e
+0,         45,         45,        1,  1382400, 0xadfb1277
+0,         46,         46,        1,  1382400, 0x5f15812e
+0,         47,         47,        1,  1382400, 0x85382ec0
+0,         48,         48,        1,  1382400, 0x82b4660c
+0,         49,         49,        1,  1382400, 0x077f6be4
+0,         50,         50,        1,  1382400, 0x05538d08
+0,         51,         51,        1,  1382400, 0xb0d186af
+0,         52,         52,        1,  1382400, 0x0267b759
+0,         53,         53,        1,  1382400, 0xef03babb
+0,         54,         54,        1,  1382400, 0x855a03b2
+0,         55,         55,        1,  1382400, 0x933ceece
+0,         56,         56,        1,  1382400, 0x13cc164e
+0,         57,         57,        1,  1382400, 0xaa661a89
+0,         58,         58,        1,  1382400, 0xbd3d6d5b
+0,         59,         59,        1,  1382400, 0xdd1234cd