Showing the changes to libavcodec (11 of 12 files). Show all
Unified · Split
| @@ -24,11 +24,11 @@ · 23 unmodified lines | |||
| 24 | #include "libavcodec/mpegvideoencdsp.h" | 24 | #include "libavcodec/mpegvideoencdsp.h" |
| 25 | #include "config.h" | 25 | #include "config.h" |
| 26 | 26 | ||
| 27 | int ff_pix_sum16_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, int line_size); | 28 | int ff_pix_norm1_neon(const uint8_t *pix, ptrdiff_t line_size); |
| 29 | 29 | ||
| 30 | #if HAVE_DOTPROD | 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 | #endif | 32 | #endif |
| 33 | 33 | ||
| 34 | av_cold void ff_mpegvideoencdsp_init_aarch64(MpegvideoEncDSPContext *c, | 34 | av_cold void ff_mpegvideoencdsp_init_aarch64(MpegvideoEncDSPContext *c, |
| @@ -22,9 +22,8 @@ · 21 unmodified lines | |||
| 22 | 22 | ||
| 23 | function ff_pix_sum16_neon, export=1 | 23 | function ff_pix_sum16_neon, export=1 |
| 24 | // x0 const uint8_t *pix | 24 | // x0 const uint8_t *pix |
| 25 | // x1 int line_size | 25 | // x1 ptrdiff_t line_size |
| 26 | 26 | ||
| 27 | sxtw x1, w1 | ||
| 28 | add x2, x0, x1 | 27 | add x2, x0, x1 |
| 29 | lsl x1, x1, #1 | 28 | lsl x1, x1, #1 |
| 30 | movi v0.16b, #0 | 29 | movi v0.16b, #0 |
| @@ -46,9 +45,8 @@ endfunc · 15 unmodified lines | |||
| 46 | 45 | ||
| 47 | function ff_pix_norm1_neon, export=1 | 46 | function ff_pix_norm1_neon, export=1 |
| 48 | // x0 const uint8_t *pix | 47 | // x0 const uint8_t *pix |
| 49 | // x1 int line_size | 48 | // x1 ptrdiff_t line_size |
| 50 | 49 | ||
| 51 | sxtw x1, w1 | ||
| 52 | movi v0.16b, #0 | 50 | movi v0.16b, #0 |
| 53 | mov w2, #16 | 51 | mov w2, #16 |
| 54 | 52 | ||
| @@ -72,9 +70,8 @@ ENABLE_DOTPROD · 17 unmodified lines | |||
| 72 | 70 | ||
| 73 | function ff_pix_norm1_neon_dotprod, export=1 | 71 | function ff_pix_norm1_neon_dotprod, export=1 |
| 74 | // x0 const uint8_t *pix | 72 | // x0 const uint8_t *pix |
| 75 | // x1 int line_size | 73 | // x1 ptrdiff_t line_size |
| 76 | 74 | ||
| 77 | sxtw x1, w1 | ||
| 78 | movi v0.16b, #0 | 75 | movi v0.16b, #0 |
| 79 | mov w2, #16 | 76 | mov w2, #16 |
| 80 | 77 | ||
| @@ -24,8 +24,8 @@ · 23 unmodified lines | |||
| 24 | #include "libavcodec/avcodec.h" | 24 | #include "libavcodec/avcodec.h" |
| 25 | #include "libavcodec/mpegvideoencdsp.h" | 25 | #include "libavcodec/mpegvideoencdsp.h" |
| 26 | 26 | ||
| 27 | int ff_pix_norm1_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, int line_size); | 28 | int ff_pix_sum_armv6(const uint8_t *pix, ptrdiff_t line_size); |
| 29 | 29 | ||
| 30 | av_cold void ff_mpegvideoencdsp_init_arm(MpegvideoEncDSPContext *c, | 30 | av_cold void ff_mpegvideoencdsp_init_arm(MpegvideoEncDSPContext *c, |
| 31 | AVCodecContext *avctx) | 31 | AVCodecContext *avctx) |
| @@ -31,6 +31,6 @@ void ff_dct_unquantize_h263_inter_msa(MpegEncContext *s, int16_t *block, · 30 unmodified lines | |||
| 31 | int32_t index, int32_t q_scale); | 31 | int32_t index, int32_t q_scale); |
| 32 | void ff_dct_unquantize_h263_intra_msa(MpegEncContext *s, int16_t *block, | 32 | void ff_dct_unquantize_h263_intra_msa(MpegEncContext *s, int16_t *block, |
| 33 | int32_t index, int32_t q_scale); | 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 | #endif // #ifndef AVCODEC_MIPS_H263DSP_MIPS_H | 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 | return sum; | 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 | return sum_u8src_16width_msa(pix, line_size); | 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 | (BASIS_SHIFT - RECON_SHIFT); | 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 | int s = 0, i, j; | 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 | return s; | 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 | int s = 0, i, j; | 83 | int s = 0, i, j; |
| 84 | const uint32_t *sq = ff_square_tab + 256; | 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 | return s; | 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 | for (int i = 0; i < height; i++) { | 119 | for (int i = 0; i < height; i++) { |
| 120 | memset(ptr - w, ptr[0], w); | 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 | /* draw the edges of width 'w' of an image of size width, height */ | 126 | /* draw the edges of width 'w' of an image of size width, height */ |
| 127 | // FIXME: Check that this is OK for MPEG-4 interlaced. | 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 | int w, int h, int sides) | 129 | int w, int h, int sides) |
| 130 | { | 130 | { |
| 131 | uint8_t *last_line; | 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 | memcpy(last_line + (i + 1) * wrap, last_line, width + w + w); | 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 | /* 2x2 -> 1x1 */ | 166 | /* 2x2 -> 1x1 */ |
| 158 | static void shrink22(uint8_t *dst, int dst_wrap, | 167 | static void shrink22(uint8_t *dst, ptrdiff_t dst_wrap, |
| 159 | const uint8_t *src, int src_wrap, | 168 | const uint8_t *src, ptrdiff_t src_wrap, |
| 160 | int width, int height) | 169 | int width, int height) |
| 161 | { | 170 | { |
| 162 | int w; | 171 | int w; |
| @@ -188,8 +197,8 @@ static void shrink22(uint8_t *dst, int dst_wrap, · 25 unmodified lines | |||
| 188 | } | 197 | } |
| 189 | 198 | ||
| 190 | /* 4x4 -> 1x1 */ | 199 | /* 4x4 -> 1x1 */ |
| 191 | static void shrink44(uint8_t *dst, int dst_wrap, | 200 | static void shrink44(uint8_t *dst, ptrdiff_t dst_wrap, |
| 192 | const uint8_t *src, int src_wrap, | 201 | const uint8_t *src, ptrdiff_t src_wrap, |
| 193 | int width, int height) | 202 | int width, int height) |
| 194 | { | 203 | { |
| 195 | int w; | 204 | int w; |
| @@ -219,8 +228,8 @@ static void shrink44(uint8_t *dst, int dst_wrap, · 23 unmodified lines | |||
| 219 | } | 228 | } |
| 220 | 229 | ||
| 221 | /* 8x8 -> 1x1 */ | 230 | /* 8x8 -> 1x1 */ |
| 222 | static void shrink88(uint8_t *dst, int dst_wrap, | 231 | static void shrink88(uint8_t *dst, ptrdiff_t dst_wrap, |
| 223 | const uint8_t *src, int src_wrap, | 232 | const uint8_t *src, ptrdiff_t src_wrap, |
| 224 | int width, int height) | 233 | int width, int height) |
| 225 | { | 234 | { |
| 226 | int w, i; | 235 | int w, i; |
| @@ -247,7 +256,7 @@ av_cold void ff_mpegvideoencdsp_init(MpegvideoEncDSPContext *c, · 20 unmodified lines | |||
| 247 | c->try_8x8basis = try_8x8basis_c; | 256 | c->try_8x8basis = try_8x8basis_c; |
| 248 | c->add_8x8basis = add_8x8basis_c; | 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 | c->shrink[1] = shrink22; | 260 | c->shrink[1] = shrink22; |
| 252 | c->shrink[2] = shrink44; | 261 | c->shrink[2] = shrink44; |
| 253 | c->shrink[3] = shrink88; | 262 | c->shrink[3] = shrink88; |
| @@ -34,13 +34,13 @@ typedef struct MpegvideoEncDSPContext { · 33 unmodified lines | |||
| 34 | const int16_t basis[64], int scale); | 34 | const int16_t basis[64], int scale); |
| 35 | void (*add_8x8basis)(int16_t rem[64], const int16_t basis[64], int scale); | 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); | 37 | int (*pix_sum)(const uint8_t *pix, ptrdiff_t line_size); |
| 38 | int (*pix_norm1)(const uint8_t *pix, int 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, | 40 | void (*shrink[4])(uint8_t *dst, ptrdiff_t dst_wrap, const uint8_t *src, |
| 41 | int src_wrap, int width, int height); | 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 | int w, int h, int sides); | 44 | int w, int h, int sides); |
| 45 | } MpegvideoEncDSPContext; | 45 | } MpegvideoEncDSPContext; |
| 46 | 46 | ||
| @@ -30,7 +30,7 @@ · 29 unmodified lines | |||
| 30 | #if HAVE_ALTIVEC | 30 | #if HAVE_ALTIVEC |
| 31 | 31 | ||
| 32 | #if HAVE_VSX | 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 | int i, s = 0; | 35 | int i, s = 0; |
| 36 | const vector unsigned int zero = | 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 | return s; | 57 | return s; |
| 58 | } | 58 | } |
| 59 | #else | 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 | int i, s = 0; | 62 | int i, s = 0; |
| 63 | const vector unsigned int zero = | 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 | #endif /* HAVE_VSX */ | 87 | #endif /* HAVE_VSX */ |
| 88 | 88 | ||
| 89 | #if HAVE_VSX | 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 | int i, s; | 92 | int i, s; |
| 93 | const vector unsigned int zero = | 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 | return s; | 115 | return s; |
| 116 | } | 116 | } |
| 117 | #else | 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 | int i, s; | 120 | int i, s; |
| 121 | const vector unsigned int zero = | 121 | const vector unsigned int zero = |
| @@ -26,8 +26,8 @@ · 25 unmodified lines | |||
| 26 | int ff_try_8x8basis_rvv(const int16_t rem[64], const int16_t weight[64], | 26 | int ff_try_8x8basis_rvv(const int16_t rem[64], const int16_t weight[64], |
| 27 | const int16_t basis[16], int scale); | 27 | const int16_t basis[16], int scale); |
| 28 | void ff_add_8x8basis_rvv(int16_t rem[64], const int16_t basis[16], int scale); | 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); | 29 | int ff_pix_sum_rvv(const uint8_t *pix, ptrdiff_t line_size); |
| 30 | int ff_pix_norm1_rvv(const uint8_t *pix, int line_size); | 30 | int ff_pix_norm1_rvv(const uint8_t *pix, ptrdiff_t line_size); |
| 31 | 31 | ||
| 32 | av_cold void ff_mpegvideoencdsp_init_riscv(MpegvideoEncDSPContext *c, | 32 | av_cold void ff_mpegvideoencdsp_init_riscv(MpegvideoEncDSPContext *c, |
| 33 | AVCodecContext *avctx) | 33 | AVCodecContext *avctx) |
| @@ -24,12 +24,11 @@ · 23 unmodified lines | |||
| 24 | %include "libavutil/x86/x86util.asm" | 24 | %include "libavutil/x86/x86util.asm" |
| 25 | 25 | ||
| 26 | SECTION .text | 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 | ; %1 = number of loops | 28 | ; %1 = number of loops |
| 29 | ; %2 = number of GPRs used | 29 | ; %2 = number of GPRs used |
| 30 | %macro PIX_SUM16 3 | 30 | %macro PIX_SUM16 3 |
| 31 | cglobal pix_sum16, 2, %2, 6 | 31 | cglobal pix_sum16, 2, %2, 6 |
| 32 | movsxdifnidn r1, r1d | ||
| 33 | mov r2, %1 | 32 | mov r2, %1 |
| 34 | lea r3, [r1*3] | 33 | lea r3, [r1*3] |
| 35 | %if notcpuflag(xop) | 34 | %if notcpuflag(xop) |
| @@ -72,12 +71,11 @@ INIT_XMM xop · 36 unmodified lines | |||
| 72 | PIX_SUM16 4, 4, 4 | 71 | PIX_SUM16 4, 4, 4 |
| 73 | %endif | 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 | ; %1 = number of xmm registers used | 75 | ; %1 = number of xmm registers used |
| 77 | ; %2 = number of loops | 76 | ; %2 = number of loops |
| 78 | %macro PIX_NORM1 2 | 77 | %macro PIX_NORM1 2 |
| 79 | cglobal pix_norm1, 2, 3, %1 | 78 | cglobal pix_norm1, 2, 3, %1 |
| 80 | movsxdifnidn r1, r1d | ||
| 81 | mov r2, %2 | 79 | mov r2, %2 |
| 82 | pxor m0, m0 | 80 | pxor m0, m0 |
| 83 | pxor m5, m5 | 81 | pxor m5, m5 |
| @@ -23,9 +23,9 @@ · 22 unmodified lines | |||
| 23 | #include "libavcodec/avcodec.h" | 23 | #include "libavcodec/avcodec.h" |
| 24 | #include "libavcodec/mpegvideoencdsp.h" | 24 | #include "libavcodec/mpegvideoencdsp.h" |
| 25 | 25 | ||
| 26 | int ff_pix_sum16_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, int 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, int line_size); | 28 | int ff_pix_norm1_sse2(const uint8_t *pix, ptrdiff_t line_size); |
| 29 | 29 | ||
| 30 | #if HAVE_INLINE_ASM | 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 | #endif /* HAVE_SSSE3_INLINE */ | 96 | #endif /* HAVE_SSSE3_INLINE */ |
| 97 | 97 | ||
| 98 | /* Draw the edges of width 'w' of an image of size width, height */ | 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 | int w, int h, int sides) | 100 | int w, int h, int sides) |
| 101 | { | 101 | { |
| 102 | uint8_t *ptr, *last_line; | 102 | uint8_t *ptr, *last_line; |