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]
