Unified · Split
| @@ -24,11 +24,11 @@ · 23 unmodified lines | ||
| 24 | 24 | #include "libavcodec/mpegvideoencdsp.h" |
| 25 | 25 | #include "config.h" |
| 26 | 26 | |
| 27 | −int ff_pix_sum16_neon(const uint8_t *pix, int line_size); | |
| 28 | −int ff_pix_norm1_neon(const uint8_t *pix, int line_size); | |
| 27 | +int ff_pix_sum16_neon(const uint8_t *pix, ptrdiff_t line_size); | |
| 28 | +int ff_pix_norm1_neon(const uint8_t *pix, ptrdiff_t line_size); | |
| 29 | 29 | |
| 30 | 30 | #if HAVE_DOTPROD |
| 31 | −int ff_pix_norm1_neon_dotprod(const uint8_t *pix, int line_size); | |
| 31 | +int ff_pix_norm1_neon_dotprod(const uint8_t *pix, ptrdiff_t line_size); | |
| 32 | 32 | #endif |
| 33 | 33 | |
| 34 | 34 | av_cold void ff_mpegvideoencdsp_init_aarch64(MpegvideoEncDSPContext *c, |
| @@ -22,9 +22,8 @@ · 21 unmodified lines | ||
| 22 | 22 | |
| 23 | 23 | function ff_pix_sum16_neon, export=1 |
| 24 | 24 | // x0 const uint8_t *pix |
| 25 | −// x1 int line_size | |
| 25 | +// x1 ptrdiff_t line_size | |
| 26 | 26 | |
| 27 | − sxtw x1, w1 | |
| 28 | 27 | add x2, x0, x1 |
| 29 | 28 | lsl x1, x1, #1 |
| 30 | 29 | movi v0.16b, #0 |
| @@ -46,9 +45,8 @@ endfunc · 15 unmodified lines | ||
| 46 | 45 | |
| 47 | 46 | function ff_pix_norm1_neon, export=1 |
| 48 | 47 | // x0 const uint8_t *pix |
| 49 | −// x1 int line_size | |
| 48 | +// x1 ptrdiff_t line_size | |
| 50 | 49 | |
| 51 | − sxtw x1, w1 | |
| 52 | 50 | movi v0.16b, #0 |
| 53 | 51 | mov w2, #16 |
| 54 | 52 | |
| @@ -72,9 +70,8 @@ ENABLE_DOTPROD · 17 unmodified lines | ||
| 72 | 70 | |
| 73 | 71 | function ff_pix_norm1_neon_dotprod, export=1 |
| 74 | 72 | // x0 const uint8_t *pix |
| 75 | −// x1 int line_size | |
| 73 | +// x1 ptrdiff_t line_size | |
| 76 | 74 | |
| 77 | − sxtw x1, w1 | |
| 78 | 75 | movi v0.16b, #0 |
| 79 | 76 | mov w2, #16 |
| 80 | 77 | |
| @@ -24,8 +24,8 @@ · 23 unmodified lines | ||
| 24 | 24 | #include "libavcodec/avcodec.h" |
| 25 | 25 | #include "libavcodec/mpegvideoencdsp.h" |
| 26 | 26 | |
| 27 | −int ff_pix_norm1_armv6(const uint8_t *pix, int line_size); | |
| 28 | −int ff_pix_sum_armv6(const uint8_t *pix, int line_size); | |
| 27 | +int ff_pix_norm1_armv6(const uint8_t *pix, ptrdiff_t line_size); | |
| 28 | +int ff_pix_sum_armv6(const uint8_t *pix, ptrdiff_t line_size); | |
| 29 | 29 | |
| 30 | 30 | av_cold void ff_mpegvideoencdsp_init_arm(MpegvideoEncDSPContext *c, |
| 31 | 31 | AVCodecContext *avctx) |
| @@ -31,6 +31,6 @@ void ff_dct_unquantize_h263_inter_msa(MpegEncContext *s, int16_t *block, · 30 unmodified lines | ||
| 31 | 31 | int32_t index, int32_t q_scale); |
| 32 | 32 | void ff_dct_unquantize_h263_intra_msa(MpegEncContext *s, int16_t *block, |
| 33 | 33 | int32_t index, int32_t q_scale); |
| 34 | −int ff_pix_sum_msa(const uint8_t *pix, int line_size); | |
| 34 | +int ff_pix_sum_msa(const uint8_t *pix, ptrdiff_t line_size); | |
| 35 | 35 | |
| 36 | 36 | #endif // #ifndef AVCODEC_MIPS_H263DSP_MIPS_H |
| @@ -56,7 +56,7 @@ static int32_t sum_u8src_16width_msa(const uint8_t *src, int32_t stride) · 55 unmodified lines | ||
| 56 | 56 | return sum; |
| 57 | 57 | } |
| 58 | 58 | |
| 59 | −int ff_pix_sum_msa(const uint8_t *pix, int line_size) | |
| 59 | +int ff_pix_sum_msa(const uint8_t *pix, ptrdiff_t line_size) | |
| 60 | 60 | { |
| 61 | 61 | return sum_u8src_16width_msa(pix, line_size); |
| 62 | 62 | } |
| @@ -57,7 +57,7 @@ static void add_8x8basis_c(int16_t rem[64], const int16_t basis[64], int scale) · 56 unmodified lines | ||
| 57 | 57 | (BASIS_SHIFT - RECON_SHIFT); |
| 58 | 58 | } |
| 59 | 59 | |
| 60 | −static int pix_sum_c(const uint8_t *pix, int line_size) | |
| 60 | +static int pix_sum_c(const uint8_t *pix, ptrdiff_t line_size) | |
| 61 | 61 | { |
| 62 | 62 | int s = 0, i, j; |
| 63 | 63 | |
| @@ -78,7 +78,7 @@ static int pix_sum_c(const uint8_t *pix, int line_size) · 14 unmodified lines | ||
| 78 | 78 | return s; |
| 79 | 79 | } |
| 80 | 80 | |
| 81 | −static int pix_norm1_c(const uint8_t *pix, int line_size) | |
| 81 | +static int pix_norm1_c(const uint8_t *pix, ptrdiff_t line_size) | |
| 82 | 82 | { |
| 83 | 83 | int s = 0, i, j; |
| 84 | 84 | const uint32_t *sq = ff_square_tab + 256; |
| @@ -114,7 +114,7 @@ static int pix_norm1_c(const uint8_t *pix, int line_size) · 29 unmodified lines | ||
| 114 | 114 | return s; |
| 115 | 115 | } |
| 116 | 116 | |
| 117 | −static av_always_inline void draw_edges_lr(uint8_t *ptr, int wrap, int width, int height, int w) | |
| 117 | +static av_always_inline void draw_edges_lr(uint8_t *ptr, ptrdiff_t wrap, int width, int height, int w) | |
| 118 | 118 | { |
| 119 | 119 | for (int i = 0; i < height; i++) { |
| 120 | 120 | memset(ptr - w, ptr[0], w); |
| @@ -125,7 +125,7 @@ static av_always_inline void draw_edges_lr(uint8_t *ptr, int wrap, int width, in · 4 unmodified lines | ||
| 125 | 125 | |
| 126 | 126 | /* draw the edges of width 'w' of an image of size width, height */ |
| 127 | 127 | // FIXME: Check that this is OK for MPEG-4 interlaced. |
| 128 | −static void draw_edges_8_c(uint8_t *buf, int wrap, int width, int height, | |
| 128 | +static void draw_edges_8_c(uint8_t *buf, ptrdiff_t wrap, int width, int height, | |
| 129 | 129 | int w, int h, int sides) |
| 130 | 130 | { |
| 131 | 131 | uint8_t *last_line; |
| @@ -154,9 +154,18 @@ static void draw_edges_8_c(uint8_t *buf, int wrap, int width, int height, · 22 unmodified lines | ||
| 154 | 154 | memcpy(last_line + (i + 1) * wrap, last_line, width + w + w); |
| 155 | 155 | } |
| 156 | 156 | |
| 157 | +/* This wrapper function only serves to convert the stride parameters | |
| 158 | + * from ptrdiff_t to int for av_image_copy_plane(). */ | |
| 159 | +static void copy_plane_wrapper(uint8_t *dst, ptrdiff_t dst_wrap, | |
| 160 | + const uint8_t *src, ptrdiff_t src_wrap, | |
| 161 | + int width, int height) | |
| 162 | +{ | |
| 163 | + av_image_copy_plane(dst, dst_wrap, src, src_wrap, width, height); | |
| 164 | +} | |
| 165 | + | |
| 157 | 166 | /* 2x2 -> 1x1 */ |
| 158 | −static void shrink22(uint8_t *dst, int dst_wrap, | |
| 159 | − const uint8_t *src, int src_wrap, | |
| 167 | +static void shrink22(uint8_t *dst, ptrdiff_t dst_wrap, | |
| 168 | + const uint8_t *src, ptrdiff_t src_wrap, | |
| 160 | 169 | int width, int height) |
| 161 | 170 | { |
| 162 | 171 | int w; |
| @@ -188,8 +197,8 @@ static void shrink22(uint8_t *dst, int dst_wrap, · 25 unmodified lines | ||
| 188 | 197 | } |
| 189 | 198 | |
| 190 | 199 | /* 4x4 -> 1x1 */ |
| 191 | −static void shrink44(uint8_t *dst, int dst_wrap, | |
| 192 | − const uint8_t *src, int src_wrap, | |
| 200 | +static void shrink44(uint8_t *dst, ptrdiff_t dst_wrap, | |
| 201 | + const uint8_t *src, ptrdiff_t src_wrap, | |
| 193 | 202 | int width, int height) |
| 194 | 203 | { |
| 195 | 204 | int w; |
| @@ -219,8 +228,8 @@ static void shrink44(uint8_t *dst, int dst_wrap, · 23 unmodified lines | ||
| 219 | 228 | } |
| 220 | 229 | |
| 221 | 230 | /* 8x8 -> 1x1 */ |
| 222 | −static void shrink88(uint8_t *dst, int dst_wrap, | |
| 223 | − const uint8_t *src, int src_wrap, | |
| 231 | +static void shrink88(uint8_t *dst, ptrdiff_t dst_wrap, | |
| 232 | + const uint8_t *src, ptrdiff_t src_wrap, | |
| 224 | 233 | int width, int height) |
| 225 | 234 | { |
| 226 | 235 | int w, i; |
| @@ -247,7 +256,7 @@ av_cold void ff_mpegvideoencdsp_init(MpegvideoEncDSPContext *c, · 20 unmodified lines | ||
| 247 | 256 | c->try_8x8basis = try_8x8basis_c; |
| 248 | 257 | c->add_8x8basis = add_8x8basis_c; |
| 249 | 258 | |
| 250 | − c->shrink[0] = av_image_copy_plane; | |
| 259 | + c->shrink[0] = copy_plane_wrapper; | |
| 251 | 260 | c->shrink[1] = shrink22; |
| 252 | 261 | c->shrink[2] = shrink44; |
| 253 | 262 | c->shrink[3] = shrink88; |
| @@ -34,13 +34,13 @@ typedef struct MpegvideoEncDSPContext { · 33 unmodified lines | ||
| 34 | 34 | const int16_t basis[64], int scale); |
| 35 | 35 | void (*add_8x8basis)(int16_t rem[64], const int16_t basis[64], int scale); |
| 36 | 36 | |
| 37 | − int (*pix_sum)(const uint8_t *pix, int line_size); | |
| 38 | − int (*pix_norm1)(const uint8_t *pix, int line_size); | |
| 37 | + int (*pix_sum)(const uint8_t *pix, ptrdiff_t line_size); | |
| 38 | + int (*pix_norm1)(const uint8_t *pix, ptrdiff_t line_size); | |
| 39 | 39 | |
| 40 | − void (*shrink[4])(uint8_t *dst, int dst_wrap, const uint8_t *src, | |
| 41 | − int src_wrap, int width, int height); | |
| 40 | + void (*shrink[4])(uint8_t *dst, ptrdiff_t dst_wrap, const uint8_t *src, | |
| 41 | + ptrdiff_t src_wrap, int width, int height); | |
| 42 | 42 | |
| 43 | − void (*draw_edges)(uint8_t *buf, int wrap, int width, int height, | |
| 43 | + void (*draw_edges)(uint8_t *buf, ptrdiff_t wrap, int width, int height, | |
| 44 | 44 | int w, int h, int sides); |
| 45 | 45 | } MpegvideoEncDSPContext; |
| 46 | 46 | |
| @@ -30,7 +30,7 @@ · 29 unmodified lines | ||
| 30 | 30 | #if HAVE_ALTIVEC |
| 31 | 31 | |
| 32 | 32 | #if HAVE_VSX |
| 33 | −static int pix_norm1_altivec(const uint8_t *pix, int line_size) | |
| 33 | +static int pix_norm1_altivec(const uint8_t *pix, ptrdiff_t line_size) | |
| 34 | 34 | { |
| 35 | 35 | int i, s = 0; |
| 36 | 36 | const vector unsigned int zero = |
| @@ -57,7 +57,7 @@ static int pix_norm1_altivec(const uint8_t *pix, int line_size) · 20 unmodified lines | ||
| 57 | 57 | return s; |
| 58 | 58 | } |
| 59 | 59 | #else |
| 60 | −static int pix_norm1_altivec(const uint8_t *pix, int line_size) | |
| 60 | +static int pix_norm1_altivec(const uint8_t *pix, ptrdiff_t line_size) | |
| 61 | 61 | { |
| 62 | 62 | int i, s = 0; |
| 63 | 63 | const vector unsigned int zero = |
| @@ -87,7 +87,7 @@ static int pix_norm1_altivec(const uint8_t *pix, int line_size) · 23 unmodified lines | ||
| 87 | 87 | #endif /* HAVE_VSX */ |
| 88 | 88 | |
| 89 | 89 | #if HAVE_VSX |
| 90 | −static int pix_sum_altivec(const uint8_t *pix, int line_size) | |
| 90 | +static int pix_sum_altivec(const uint8_t *pix, ptrdiff_t line_size) | |
| 91 | 91 | { |
| 92 | 92 | int i, s; |
| 93 | 93 | const vector unsigned int zero = |
| @@ -115,7 +115,7 @@ static int pix_sum_altivec(const uint8_t *pix, int line_size) · 21 unmodified lines | ||
| 115 | 115 | return s; |
| 116 | 116 | } |
| 117 | 117 | #else |
| 118 | −static int pix_sum_altivec(const uint8_t *pix, int line_size) | |
| 118 | +static int pix_sum_altivec(const uint8_t *pix, ptrdiff_t line_size) | |
| 119 | 119 | { |
| 120 | 120 | int i, s; |
| 121 | 121 | const vector unsigned int zero = |
| @@ -26,8 +26,8 @@ · 25 unmodified lines | ||
| 26 | 26 | int ff_try_8x8basis_rvv(const int16_t rem[64], const int16_t weight[64], |
| 27 | 27 | const int16_t basis[16], int scale); |
| 28 | 28 | void ff_add_8x8basis_rvv(int16_t rem[64], const int16_t basis[16], int scale); |
| 29 | −int ff_pix_sum_rvv(const uint8_t *pix, int line_size); | |
| 30 | −int ff_pix_norm1_rvv(const uint8_t *pix, int line_size); | |
| 29 | +int ff_pix_sum_rvv(const uint8_t *pix, ptrdiff_t line_size); | |
| 30 | +int ff_pix_norm1_rvv(const uint8_t *pix, ptrdiff_t line_size); | |
| 31 | 31 | |
| 32 | 32 | av_cold void ff_mpegvideoencdsp_init_riscv(MpegvideoEncDSPContext *c, |
| 33 | 33 | AVCodecContext *avctx) |
| @@ -24,12 +24,11 @@ · 23 unmodified lines | ||
| 24 | 24 | %include "libavutil/x86/x86util.asm" |
| 25 | 25 | |
| 26 | 26 | SECTION .text |
| 27 | −; int ff_pix_sum16(const uint8_t *pix, int line_size) | |
| 27 | +; int ff_pix_sum16(const uint8_t *pix, ptrdiff_t line_size) | |
| 28 | 28 | ; %1 = number of loops |
| 29 | 29 | ; %2 = number of GPRs used |
| 30 | 30 | %macro PIX_SUM16 3 |
| 31 | 31 | cglobal pix_sum16, 2, %2, 6 |
| 32 | − movsxdifnidn r1, r1d | |
| 33 | 32 | mov r2, %1 |
| 34 | 33 | lea r3, [r1*3] |
| 35 | 34 | %if notcpuflag(xop) |
| @@ -72,12 +71,11 @@ INIT_XMM xop · 36 unmodified lines | ||
| 72 | 71 | PIX_SUM16 4, 4, 4 |
| 73 | 72 | %endif |
| 74 | 73 | |
| 75 | −; int ff_pix_norm1(const uint8_t *pix, int line_size) | |
| 74 | +; int ff_pix_norm1(const uint8_t *pix, ptrdiff_t line_size) | |
| 76 | 75 | ; %1 = number of xmm registers used |
| 77 | 76 | ; %2 = number of loops |
| 78 | 77 | %macro PIX_NORM1 2 |
| 79 | 78 | cglobal pix_norm1, 2, 3, %1 |
| 80 | − movsxdifnidn r1, r1d | |
| 81 | 79 | mov r2, %2 |
| 82 | 80 | pxor m0, m0 |
| 83 | 81 | pxor m5, m5 |
| @@ -23,9 +23,9 @@ · 22 unmodified lines | ||
| 23 | 23 | #include "libavcodec/avcodec.h" |
| 24 | 24 | #include "libavcodec/mpegvideoencdsp.h" |
| 25 | 25 | |
| 26 | −int ff_pix_sum16_sse2(const uint8_t *pix, int line_size); | |
| 27 | −int ff_pix_sum16_xop(const uint8_t *pix, int line_size); | |
| 28 | −int ff_pix_norm1_sse2(const uint8_t *pix, int line_size); | |
| 26 | +int ff_pix_sum16_sse2(const uint8_t *pix, ptrdiff_t line_size); | |
| 27 | +int ff_pix_sum16_xop(const uint8_t *pix, ptrdiff_t line_size); | |
| 28 | +int ff_pix_norm1_sse2(const uint8_t *pix, ptrdiff_t line_size); | |
| 29 | 29 | |
| 30 | 30 | #if HAVE_INLINE_ASM |
| 31 | 31 | |
| @@ -96,7 +96,7 @@ int ff_pix_norm1_sse2(const uint8_t *pix, int line_size); · 64 unmodified lines | ||
| 96 | 96 | #endif /* HAVE_SSSE3_INLINE */ |
| 97 | 97 | |
| 98 | 98 | /* Draw the edges of width 'w' of an image of size width, height */ |
| 99 | −static void draw_edges_mmx(uint8_t *buf, int wrap, int width, int height, | |
| 99 | +static void draw_edges_mmx(uint8_t *buf, ptrdiff_t wrap, int width, int height, | |
| 100 | 100 | int w, int h, int sides) |
| 101 | 101 | { |
| 102 | 102 | uint8_t *ptr, *last_line; |
| @@ -34,7 +34,7 @@ static void check_pix_sum(MpegvideoEncDSPContext *c) · 33 unmodified lines | ||
| 34 | 34 | { |
| 35 | 35 | LOCAL_ALIGNED_16(uint8_t, src, [16 * 16]); |
| 36 | 36 | |
| 37 | − declare_func(int, const uint8_t *pix, int line_size); | |
| 37 | + declare_func(int, const uint8_t *pix, ptrdiff_t line_size); | |
| 38 | 38 | |
| 39 | 39 | randomize_buffers(src, 16 * 16); |
| 40 | 40 | |
| @@ -43,7 +43,7 @@ static void check_pix_sum(MpegvideoEncDSPContext *c) · 2 unmodified lines | ||
| 43 | 43 | if (check_func(c->pix_sum, "pix_sum%s", negstride_str)) { |
| 44 | 44 | int sum0, sum1; |
| 45 | 45 | const uint8_t *pix = src + (n ? (15 * 16) : 0); |
| 46 | − int line_size = 16 * (n ? -1 : 1); | |
| 46 | + ptrdiff_t line_size = 16 * (n ? -1 : 1); | |
| 47 | 47 | sum0 = call_ref(pix, line_size); |
| 48 | 48 | sum1 = call_new(pix, line_size); |
| 49 | 49 | if (sum0 != sum1) |
| @@ -57,7 +57,7 @@ static void check_pix_norm1(MpegvideoEncDSPContext *c) · 7 unmodified lines | ||
| 57 | 57 | { |
| 58 | 58 | LOCAL_ALIGNED_16(uint8_t, src, [16 * 16]); |
| 59 | 59 | |
| 60 | − declare_func(int, const uint8_t *pix, int line_size); | |
| 60 | + declare_func(int, const uint8_t *pix, ptrdiff_t line_size); | |
| 61 | 61 | |
| 62 | 62 | randomize_buffers(src, 16 * 16); |
| 63 | 63 | |
| @@ -66,7 +66,7 @@ static void check_pix_norm1(MpegvideoEncDSPContext *c) · 2 unmodified lines | ||
| 66 | 66 | if (check_func(c->pix_norm1, "pix_norm1%s", negstride_str)) { |
| 67 | 67 | int sum0, sum1; |
| 68 | 68 | const uint8_t *pix = src + (n ? (15 * 16) : 0); |
| 69 | − int line_size = 16 * (n ? -1 : 1); | |
| 69 | + ptrdiff_t line_size = 16 * (n ? -1 : 1); | |
| 70 | 70 | sum0 = call_ref(pix, line_size); |
| 71 | 71 | sum1 = call_new(pix, line_size); |
| 72 | 72 | if (sum0 != sum1) |
| @@ -88,7 +88,7 @@ static void check_draw_edges(MpegvideoEncDSPContext *c) · 15 unmodified lines | ||
| 88 | 88 | LOCAL_ALIGNED_16(uint8_t, buf0, [BUFSIZE]); |
| 89 | 89 | LOCAL_ALIGNED_16(uint8_t, buf1, [BUFSIZE]); |
| 90 | 90 | |
| 91 | − declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *buf, int wrap, int width, int height, | |
| 91 | + declare_func_emms(AV_CPU_FLAG_MMX, void, uint8_t *buf, ptrdiff_t wrap, int width, int height, | |
| 92 | 92 | int w, int h, int sides); |
| 93 | 93 | |
| 94 | 94 | for (int isi = 0; isi < FF_ARRAY_ELEMS(input_sizes); isi++) { |
| @@ -96,7 +96,7 @@ static void check_draw_edges(MpegvideoEncDSPContext *c) · 1 unmodified line | ||
| 96 | 96 | int negstride = input_size < 0; |
| 97 | 97 | const char *negstride_str = negstride ? "_negstride" : ""; |
| 98 | 98 | int width = FFABS(input_size); |
| 99 | − int linesize = EDGE_WIDTH + width + EDGE_WIDTH; | |
| 99 | + ptrdiff_t linesize = EDGE_WIDTH + width + EDGE_WIDTH; | |
| 100 | 100 | /* calculate height based on specified width to use the entire buffer. */ |
| 101 | 101 | int height = (BUFSIZE / linesize) - (2 * EDGE_WIDTH); |
| 102 | 102 | uint8_t *dst0 = buf0 + EDGE_WIDTH * linesize + EDGE_WIDTH; |