PR #24116 opened by mkver
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24116
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24116.patch

(Several files for hevc, me_cmp still need -flax-vector-conversions to compile 
and mips/hevc_mc_uniw_msa.c doesn't want to compile at all. Furthermore, e.g. 
the VC1 msa mspel code is broken for the case of combined horizontal and 
vertical scaling.)


>From d013bdf112c883bb11b3de4234dce916e9e6579e Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Wed, 12 Aug 2026 20:32:27 +0200
Subject: [PATCH 1/3] avcodec/mips/hevc_mc_biw_msa: Fix offsets parameter

Broken in baad19d0b5840f637e95ba4b87d73e58637ec702.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/mips/hevc_mc_biw_msa.c | 110 +++++++++++++++---------------
 1 file changed, 55 insertions(+), 55 deletions(-)

diff --git a/libavcodec/mips/hevc_mc_biw_msa.c 
b/libavcodec/mips/hevc_mc_biw_msa.c
index 65f18f786e..2808236645 100644
--- a/libavcodec/mips/hevc_mc_biw_msa.c
+++ b/libavcodec/mips/hevc_mc_biw_msa.c
@@ -93,7 +93,7 @@ static void hevc_biwgt_copy_4w_msa(const uint8_t *src0_ptr,
 {
     uint32_t loop_cnt, tp0, tp1, tp2, tp3;
     uint64_t tpd0, tpd1, tpd2, tpd3;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1;
     v16i8 zero = { 0 };
     v16i8 src0 = { 0 }, src1 = { 0 };
@@ -181,7 +181,7 @@ static void hevc_biwgt_copy_6w_msa(const uint8_t *src0_ptr,
 {
     uint32_t loop_cnt;
     int32_t res = height & 0x03;
-    int32_t offset, weight;
+    int32_t weight;
     uint64_t tp0, tp1, tp2, tp3;
     v16u8 out0, out1;
     v16i8 zero = { 0 };
@@ -255,7 +255,7 @@ static void hevc_biwgt_copy_8w_msa(const uint8_t *src0_ptr,
                                    int32_t rnd_val)
 {
     uint64_t tp0, tp1, tp2, tp3;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1, out2;
     v16i8 zero = { 0 };
     v16i8 src0 = { 0 }, src1 = { 0 }, src2 = { 0 };
@@ -342,7 +342,7 @@ static void hevc_biwgt_copy_12w_msa(const uint8_t *src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16i8 zero = { 0 };
     v16u8 out0, out1, out2;
     v16i8 src0, src1, src2, src3;
@@ -400,7 +400,7 @@ static void hevc_biwgt_copy_16w_msa(const uint8_t *src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1, out2, out3;
     v16i8 zero = { 0 };
     v16i8 src0, src1, src2, src3;
@@ -454,7 +454,7 @@ static void hevc_biwgt_copy_24w_msa(const uint8_t *src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1, out2, out3, out4, out5;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, zero = { 0 };
     v8i16 dst0, dst1, dst2, dst3, dst4, dst5, dst6, dst7, dst8, dst9, dst10;
@@ -517,7 +517,7 @@ static void hevc_biwgt_copy_32w_msa(const uint8_t *src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1, out2, out3;
     v16i8 zero = { 0 };
     v16i8 src0, src1, src2, src3;
@@ -577,7 +577,7 @@ static void hevc_biwgt_copy_48w_msa(const uint8_t *src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1, out2;
     v16i8 src0, src1, src2;
     v16i8 zero = { 0 };
@@ -628,7 +628,7 @@ static void hevc_biwgt_copy_64w_msa(const uint8_t *src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1, out2, out3;
     v16i8 zero = { 0 };
     v16i8 src0, src1, src2, src3;
@@ -683,7 +683,7 @@ static void hevc_hz_biwgt_8t_4w_msa(const uint8_t *src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1, filt2, filt3;
     v16i8 src0, src1, src2, src3;
     v16i8 mask1, mask2, mask3;
@@ -754,7 +754,7 @@ static void hevc_hz_biwgt_8t_8w_msa(const uint8_t *src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1, filt2, filt3;
     v16i8 src0, src1, src2, src3;
     v16i8 mask1, mask2, mask3;
@@ -833,7 +833,7 @@ static void hevc_hz_biwgt_8t_12w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, vec0, vec1, vec2, vec3;
     v16i8 mask0, mask1, mask2, mask3, mask4, mask5, mask6, mask7;
     v8i16 filt0, filt1, filt2, filt3, out0, out1, out2, out3;
@@ -927,7 +927,7 @@ static void hevc_hz_biwgt_8t_16w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3;
     v8i16 in0, in1, in2, in3;
     v8i16 filt0, filt1, filt2, filt3;
@@ -1011,7 +1011,7 @@ static void hevc_hz_biwgt_8t_24w_msa(const uint8_t 
*src0_ptr,
 {
     uint32_t loop_cnt;
     uint64_t dst_val0;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1;
     v8i16 in0, in1, in2;
     v8i16 filt0, filt1, filt2, filt3;
@@ -1131,7 +1131,7 @@ static void hevc_hz_biwgt_8t_32w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2;
     v8i16 in0, in1, in2, in3;
     v8i16 filt0, filt1, filt2, filt3;
@@ -1216,7 +1216,7 @@ static void hevc_hz_biwgt_8t_48w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4;
     v8i16 in0, in1, in2, in3;
     v8i16 filt0, filt1, filt2, filt3;
@@ -1322,7 +1322,7 @@ static void hevc_hz_biwgt_8t_64w_msa(const uint8_t 
*src0_ptr,
     uint8_t *dst_tmp;
     const int16_t *src1_ptr_tmp;
     uint32_t loop_cnt, cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2;
     v8i16 in0, in1, in2, in3;
     v8i16 filt0, filt1, filt2, filt3;
@@ -1418,7 +1418,7 @@ static void hevc_vt_biwgt_8t_4w_msa(const uint8_t 
*src0_ptr,
 {
     uint32_t loop_cnt;
     int32_t res = height & 0x07;
-    int32_t offset, weight;
+    int32_t weight;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10;
     v16i8 src11, src12, src13, src14;
     v8i16 in0, in1, in2, in3, in4, in5, in6, in7;
@@ -1555,7 +1555,7 @@ static void hevc_vt_biwgt_8t_8w_msa(const uint8_t 
*src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16i8 src0, src1, src2, src3, src4, src5;
     v16i8 src6, src7, src8, src9, src10;
     v8i16 in0, in1, in2, in3;
@@ -1642,7 +1642,7 @@ static void hevc_vt_biwgt_8t_12w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8;
     v8i16 in0, in1, in2, in3;
     v16i8 src10_r, src32_r, src54_r, src76_r;
@@ -1755,7 +1755,7 @@ static void hevc_vt_biwgt_8t_16multx2mult_msa(const 
uint8_t *src0_ptr,
     const int16_t *src1_ptr_tmp;
     uint8_t *dst_tmp;
     uint32_t loop_cnt, cnt;
-    int32_t offset, weight;
+    int32_t weight;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8;
     v8i16 in0, in1, in2, in3;
     v16i8 src10_r, src32_r, src54_r, src76_r;
@@ -1972,7 +1972,7 @@ static void hevc_hv_biwgt_8t_4w_msa(const uint8_t 
*src0_ptr,
 {
     uint32_t loop_cnt;
     uint64_t tp0, tp1;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10;
     v8i16 in0 = { 0 }, in1 = { 0 };
@@ -2116,7 +2116,7 @@ static void hevc_hv_biwgt_8t_8multx2mult_msa(const 
uint8_t *src0_ptr,
                                              int32_t width8mult)
 {
     uint32_t loop_cnt, cnt;
-    int32_t offset, weight;
+    int32_t weight;
     const uint8_t *src0_ptr_tmp;
     const int16_t *src1_ptr_tmp;
     uint8_t *dst_tmp;
@@ -2321,7 +2321,7 @@ static void hevc_hv_biwgt_8t_12w_msa(const uint8_t 
*src0_ptr,
     const uint8_t *src0_ptr_tmp;
     uint8_t *dst_tmp;
     const int16_t *src1_ptr_tmp;
-    int32_t offset, weight;
+    int32_t weight;
     uint64_t tp0, tp1;
     v16u8 out;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10;
@@ -2670,7 +2670,7 @@ static void hevc_hz_biwgt_4t_4x2_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1;
     v16i8 src0, src1;
     v8i16 in0, in1;
@@ -2729,7 +2729,7 @@ static void hevc_hz_biwgt_4t_4x4_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1;
     v16i8 src0, src1, src2, src3;
     v16i8 mask0 = LD_SB(&ff_hevc_mask_arr[16]);
@@ -2790,7 +2790,7 @@ static void hevc_hz_biwgt_4t_4x8multiple_msa(const 
uint8_t *src0_ptr,
                                              int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t weight, offset, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7;
     v16i8 mask0 = LD_SB(&ff_hevc_mask_arr[16]);
@@ -2894,7 +2894,7 @@ static void hevc_hz_biwgt_4t_6w_msa(const uint8_t 
*src0_ptr,
                                     int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1;
     v16i8 src0, src1, src2, src3;
     v16i8 mask0 = LD_SB(&ff_hevc_mask_arr[0]);
@@ -2965,7 +2965,7 @@ static void hevc_hz_biwgt_4t_8x2_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1;
     v16i8 src0, src1;
     v8i16 in0, in1;
@@ -3020,7 +3020,7 @@ static void hevc_hz_biwgt_4t_8x6_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t weight, offset, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1;
     v16i8 src0, src1, src2, src3, src4, src5;
     v8i16 in0, in1, in2, in3, in4, in5;
@@ -3095,7 +3095,7 @@ static void hevc_hz_biwgt_4t_8x4multiple_msa(const 
uint8_t *src0_ptr,
                                              int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1;
     v16i8 src0, src1, src2, src3;
     v16i8 mask0 = LD_SB(ff_hevc_mask_arr);
@@ -3194,7 +3194,7 @@ static void hevc_hz_biwgt_4t_12w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v8i16 filt0, filt1;
     v16i8 src0, src1, src2, src3;
     v8i16 in0, in1, in2, in3, in4, in5, in6, in7;
@@ -3279,7 +3279,7 @@ static void hevc_hz_biwgt_4t_16w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7;
     v8i16 in0, in1, in2, in3, in4, in5, in6, in7;
     v8i16 filt0, filt1;
@@ -3367,7 +3367,7 @@ static void hevc_hz_biwgt_4t_24w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3;
     v8i16 filt0, filt1;
     v16i8 mask0 = LD_SB(&ff_hevc_mask_arr[0]);
@@ -3453,7 +3453,7 @@ static void hevc_hz_biwgt_4t_32w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2;
     v8i16 filt0, filt1;
     v16i8 mask0 = LD_SB(&ff_hevc_mask_arr[0]);
@@ -3523,7 +3523,7 @@ static void hevc_vt_biwgt_4t_4x2_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t weight, offset, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4;
     v8i16 in0, in1, dst10;
     v16i8 src10_r, src32_r, src21_r, src43_r, src2110, src4332;
@@ -3587,7 +3587,7 @@ static void hevc_vt_biwgt_4t_4x4_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t weight, offset, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4, src5, src6;
     v8i16 in0, in1, in2, in3;
     v16i8 src10_r, src32_r, src54_r, src21_r, src43_r, src65_r;
@@ -3655,7 +3655,7 @@ static void hevc_vt_biwgt_4t_4x8multiple_msa(const 
uint8_t *src0_ptr,
                                              int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t weight, offset, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9;
     v8i16 in0, in1, in2, in3, in4, in5, in6, in7;
     v16i8 src10_r, src32_r, src54_r, src76_r, src98_r;
@@ -3771,7 +3771,7 @@ static void hevc_vt_biwgt_4t_6w_msa(const uint8_t 
*src0_ptr,
 {
     uint32_t loop_cnt;
     int32_t res = height & 0x03;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4;
     v8i16 in0, in1, in2, in3;
     v16i8 src10_r, src32_r, src21_r, src43_r;
@@ -3874,7 +3874,7 @@ static void hevc_vt_biwgt_4t_8x2_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4;
     v8i16 in0, in1, tmp0, tmp1;
     v16i8 src10_r, src32_r, src21_r, src43_r;
@@ -3930,7 +3930,7 @@ static void hevc_vt_biwgt_4t_8x6_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8;
     v8i16 in0, in1, in2, in3, in4, in5;
     v16i8 src10_r, src32_r, src54_r, src76_r;
@@ -4002,7 +4002,7 @@ static void hevc_vt_biwgt_4t_8x4multiple_msa(const 
uint8_t *src0_ptr,
                                              int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4;
     v8i16 in0, in1, in2, in3;
     v16i8 src10_r, src32_r, src21_r, src43_r;
@@ -4105,7 +4105,7 @@ static void hevc_vt_biwgt_4t_12w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4, src5;
     v8i16 in0, in1, in2, in3, in4, in5, in6, in7;
     v16i8 src10_r, src32_r, src21_r, src43_r;
@@ -4196,7 +4196,7 @@ static void hevc_vt_biwgt_4t_16w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4, src5;
     v8i16 in0, in1, in2, in3;
     v16i8 src10_r, src32_r, src21_r, src43_r;
@@ -4289,7 +4289,7 @@ static void hevc_vt_biwgt_4t_24w_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint32_t loop_cnt;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4, src5;
     v16i8 src6, src7, src8, src9, src10, src11;
     v8i16 in0, in1, in2, in3, in4, in5;
@@ -4426,7 +4426,7 @@ static void hevc_vt_biwgt_4t_32w_msa(const uint8_t 
*src0_ptr,
 {
     uint32_t loop_cnt;
     uint8_t *dst_tmp = dst + 16;
-    int32_t offset, weight, constant;
+    int32_t weight, constant;
     v16i8 src0, src1, src2, src3, src4, src6, src7, src8, src9, src10;
     v8i16 in0, in1, in2, in3, in4, in5, in6, in7;
     v16i8 src10_r, src32_r, src76_r, src98_r;
@@ -4543,7 +4543,7 @@ static void hevc_hv_biwgt_4t_4x2_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint64_t tp0, tp1;
-    int32_t offset, weight;
+    int32_t weight;
     v8i16 in0 = { 0 };
     v16u8 out;
     v16i8 src0, src1, src2, src3, src4;
@@ -4626,7 +4626,7 @@ static void hevc_hv_biwgt_4t_4x4_msa(const uint8_t 
*src0_ptr,
                                      int32_t rnd_val)
 {
     uint64_t tp0, tp1;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out;
     v8i16 in0 = { 0 }, in1 = { 0 };
     v16i8 src0, src1, src2, src3, src4, src5, src6;
@@ -4724,7 +4724,7 @@ static void hevc_hv_biwgt_4t_4multx8mult_msa(const 
uint8_t *src0_ptr,
 {
     uint32_t loop_cnt;
     uint64_t tp0, tp1;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1;
     v8i16 in0 = { 0 }, in1 = { 0 }, in2 = { 0 }, in3 = { 0 };
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10;
@@ -4899,7 +4899,7 @@ static void hevc_hv_biwgt_4t_6w_msa(const uint8_t 
*src0_ptr,
 {
     uint32_t tpw0, tpw1, tpw2, tpw3;
     uint64_t tp0, tp1;
-    int32_t offset, weight;
+    int32_t weight;
     v16u8 out0, out1, out2;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8, src9, src10;
     v8i16 in0 = { 0 }, in1 = { 0 }, in2 = { 0 }, in3 = { 0 };
@@ -5078,7 +5078,7 @@ static void hevc_hv_biwgt_4t_8x2_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    int32_t weight, offset;
+    int32_t weight;
     v16u8 out;
     v16i8 src0, src1, src2, src3, src4;
     v8i16 filt0, filt1;
@@ -5174,7 +5174,7 @@ static void hevc_hv_biwgt_4t_8multx4_msa(const uint8_t 
*src0_ptr,
                                          int32_t rnd_val,
                                          int32_t width8mult)
 {
-    int32_t weight, offset;
+    int32_t weight;
     uint32_t cnt;
     v16u8 out0, out1;
     v16i8 src0, src1, src2, src3, src4, src5, src6, mask0, mask1;
@@ -5297,7 +5297,7 @@ static void hevc_hv_biwgt_4t_8x6_msa(const uint8_t 
*src0_ptr,
                                      int32_t offset,
                                      int32_t rnd_val)
 {
-    uint32_t offset, weight;
+    uint32_t weight;
     v16u8 out0, out1, out2;
     v16i8 src0, src1, src2, src3, src4, src5, src6, src7, src8;
     v8i16 filt0, filt1;
@@ -5451,7 +5451,7 @@ static void hevc_hv_biwgt_4t_8multx4mult_msa(const 
uint8_t *src0_ptr,
 {
     uint32_t loop_cnt;
     uint32_t cnt;
-    int32_t offset, weight;
+    int32_t weight;
     const uint8_t *src0_ptr_tmp;
     const int16_t *src1_ptr_tmp;
     uint8_t *dst_tmp;
@@ -5636,7 +5636,7 @@ static void hevc_hv_biwgt_4t_12w_msa(const uint8_t 
*src0_ptr,
 {
     uint32_t loop_cnt;
     uint64_t tp0, tp1;
-    int32_t offset, weight;
+    int32_t weight;
     const uint8_t *src0_ptr_tmp;
     const int16_t *src1_ptr_tmp;
     uint8_t *dst_tmp;
-- 
2.52.0


>From b558d2994a2954226e822307345911520ab498e0 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Wed, 12 Aug 2026 22:01:44 +0200
Subject: [PATCH 2/3] avcodec/mips/mpegvideo_{mmi,msa}: Use correct scantable

This only worked because raster_end derived from
the WMV1/2 intra scantable (i.e. derived from
ff_wmv1_scantable[1]) is <= raster_end derived
from the WMV1/2 inter scantable (i.e. derived
from ff_wmv1_scantable[0]). But it broke the
checkasm test.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/mips/mpegvideo_mmi.c | 2 +-
 libavcodec/mips/mpegvideo_msa.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/mips/mpegvideo_mmi.c b/libavcodec/mips/mpegvideo_mmi.c
index 90bd90c147..31c028025a 100644
--- a/libavcodec/mips/mpegvideo_mmi.c
+++ b/libavcodec/mips/mpegvideo_mmi.c
@@ -51,7 +51,7 @@ void ff_dct_unquantize_h263_intra_mmi(const MPVContext *s, 
int16_t *block,
     if(s->ac_pred)
         nCoeffs = 63;
     else
-        nCoeffs = s->inter_scantable.raster_end[s->block_last_index[n]];
+        nCoeffs = s->intra_scantable.raster_end[s->block_last_index[n]];
 
     __asm__ volatile (
         "pxor       %[ftmp0],   %[ftmp0],       %[ftmp0]                \n\t"
diff --git a/libavcodec/mips/mpegvideo_msa.c b/libavcodec/mips/mpegvideo_msa.c
index a870a2cd79..2abdff6517 100644
--- a/libavcodec/mips/mpegvideo_msa.c
+++ b/libavcodec/mips/mpegvideo_msa.c
@@ -214,7 +214,7 @@ void ff_dct_unquantize_h263_intra_msa(const MPVContext *s,
     if (s->ac_pred)
         nCoeffs = 63;
     else
-        nCoeffs = s->inter_scantable.raster_end[s->block_last_index[index]];
+        nCoeffs = s->intra_scantable.raster_end[s->block_last_index[index]];
 
     h263_dct_unquantize_msa(block, qmul, qadd, nCoeffs, 1);
 }
-- 
2.52.0


>From d199cb80acd60c4f7fd4e9e0c45030575b1873e4 Mon Sep 17 00:00:00 2001
From: Andreas Rheinhardt <[email protected]>
Date: Wed, 12 Aug 2026 22:10:31 +0200
Subject: [PATCH 3/3] avcodec/mips/hevcpred_msa: Fix compilation

Broken in ba56a300a94bdf5520ac1324a8e7fbaeea430904,
ba56a300a94bdf5520ac1324a8e7fbaeea430904 and again
in 38b8ae4112684c3415ab2f7d717605759d764d27.

This means that no has compiled git master on mips
since 2024-06-04. And no one complained.

Hint: One still needs to pass -flax-vector-conversions
here in order to compile this file.

Signed-off-by: Andreas Rheinhardt <[email protected]>
---
 libavcodec/mips/hevcpred_msa.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/libavcodec/mips/hevcpred_msa.c b/libavcodec/mips/hevcpred_msa.c
index a6824712a2..b7d67e9759 100644
--- a/libavcodec/mips/hevcpred_msa.c
+++ b/libavcodec/mips/hevcpred_msa.c
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "libavcodec/hevc/dec.h"
+#include "libavcodec/hevc/hevcdec.h"
 #include "libavutil/mips/generic_macros_msa.h"
 #include "hevcpred_mips.h"
 
@@ -1924,8 +1924,8 @@ void ff_intra_pred_8_16x16_msa(HEVCLocalContext *lc, 
const HEVCPPS *pps,
     int cur_tb_addr =
         pps->min_tb_addr_zs[(y_tb) * (sps->tb_mask + 2) + (x_tb)];
 
-    ptrdiff_t stride = s->frame->linesize[c_idx] / sizeof(uint8_t);
-    uint8_t *src = (uint8_t *) s->frame->data[c_idx] + x + y * stride;
+    ptrdiff_t stride = s->cur_frame->f->linesize[c_idx] / sizeof(uint8_t);
+    uint8_t *src = (uint8_t *) s->cur_frame->f->data[c_idx] + x + y * stride;
 
     int min_pu_width = sps->min_pu_width;
 
@@ -2416,7 +2416,8 @@ void ff_intra_pred_8_16x16_msa(HEVCLocalContext *lc, 
const HEVCPPS *pps,
     }
 }
 
-void ff_intra_pred_8_32x32_msa(HEVCLocalContext *lc, int x0, int y0, int c_idx)
+void ff_intra_pred_8_32x32_msa(HEVCLocalContext *lc, const HEVCPPS *pps,
+                               int x0, int y0, int c_idx)
 {
     v16u8 vec0, vec1;
     v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
@@ -2440,8 +2441,8 @@ void ff_intra_pred_8_32x32_msa(HEVCLocalContext *lc, int 
x0, int y0, int c_idx)
     int cur_tb_addr =
         pps->min_tb_addr_zs[(y_tb) * (sps->tb_mask + 2) + (x_tb)];
 
-    ptrdiff_t stride = s->frame->linesize[c_idx] / sizeof(uint8_t);
-    uint8_t *src = (uint8_t *) s->frame->data[c_idx] + x + y * stride;
+    ptrdiff_t stride = s->cur_frame->f->linesize[c_idx] / sizeof(uint8_t);
+    uint8_t *src = (uint8_t *) s->cur_frame->f->data[c_idx] + x + y * stride;
 
     int min_pu_width = sps->min_pu_width;
 
-- 
2.52.0

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

Reply via email to