[PR] avcodec/mips: Various fixes (PR #24116)

mkver via ffmpeg-devel <[email protected]>
Newsgroups gmane.comp.video.ffmpeg.devel
Message-ID <178656662431.59.2977724693757464240@29965ddac10e>
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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.