This avoids SIMD-optimized functions having to sign-extend their stride argument manually to be able to do pointer arithmetic.
Also rename all such parameters to "stride" for consistency. --- libavcodec/arm/vc1dsp_init_neon.c | 2 +- libavcodec/vc1.c | 11 ++++++----- libavcodec/vc1_block.c | 21 +++++++++++++-------- libavcodec/vc1_loopfilter.c | 8 +++++--- libavcodec/vc1_pred.c | 9 ++++++--- libavcodec/vc1dsp.c | 26 +++++++++++++------------- libavcodec/vc1dsp.h | 16 ++++++++-------- libavcodec/x86/vc1dsp.asm | 22 +++++++++++----------- libavcodec/x86/vc1dsp_init.c | 16 ++++++++-------- libavcodec/x86/vc1dsp_mmx.c | 21 +++++++++++---------- 10 files changed, 82 insertions(+), 70 deletions(-) diff --git a/libavcodec/arm/vc1dsp_init_neon.c b/libavcodec/arm/vc1dsp_init_neon.c index 08c07c4..944d184 100644 --- a/libavcodec/arm/vc1dsp_init_neon.c +++ b/libavcodec/arm/vc1dsp_init_neon.c @@ -35,7 +35,7 @@ void ff_vc1_inv_trans_8x4_dc_neon(uint8_t *dest, ptrdiff_t stride, int16_t *bloc void ff_vc1_inv_trans_4x4_dc_neon(uint8_t *dest, ptrdiff_t stride, int16_t *block); void ff_put_pixels8x8_neon(uint8_t *block, const uint8_t *pixels, - ptrdiff_t line_size, int rnd); + ptrdiff_t stride, int rnd); void ff_put_vc1_mspel_mc10_neon(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd); diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index 7a93e97..27e3071 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -64,8 +64,8 @@ enum Imode { * @param[in] height Height of this buffer * @param[in] stride of this buffer */ -static void decode_rowskip(uint8_t* plane, int width, int height, int stride, - GetBitContext *gb) +static void decode_rowskip(uint8_t* plane, int width, int height, + ptrdiff_t stride, GetBitContext *gb) { int x, y; @@ -86,8 +86,8 @@ static void decode_rowskip(uint8_t* plane, int width, int height, int stride, * @param[in] stride of this buffer * @todo FIXME: Optimize */ -static void decode_colskip(uint8_t* plane, int width, int height, int stride, - GetBitContext *gb) +static void decode_colskip(uint8_t* plane, int width, int height, + ptrdiff_t stride, GetBitContext *gb) { int x, y; @@ -115,7 +115,8 @@ static int bitplane_decoding(uint8_t* data, int *raw_flag, VC1Context *v) int imode, x, y, code, offset; uint8_t invert, *planep = data; - int width, height, stride; + int width, height; + ptrdiff_t stride; width = v->s.mb_width; height = v->s.mb_height >> v->field_mode; diff --git a/libavcodec/vc1_block.c b/libavcodec/vc1_block.c index 0e1018c..eee32f2 100644 --- a/libavcodec/vc1_block.c +++ b/libavcodec/vc1_block.c @@ -82,8 +82,8 @@ static void vc1_put_signed_blocks_clamped(VC1Context *v) { MpegEncContext *s = &v->s; int topleft_mb_pos, top_mb_pos; - int stride_y, fieldtx = 0; - int v_dist; + int v_dist, fieldtx = 0; + ptrdiff_t stride_y; /* The put pixels loop is always one MB row behind the decoding loop, * because we can only put pixels when overlap filtering is done, and @@ -348,7 +348,8 @@ static inline void vc1_b_mc(VC1Context *v, int dmv_x[2], int dmv_y[2], static inline int vc1_i_pred_dc(MpegEncContext *s, int overlap, int pq, int n, int16_t **dc_val_ptr, int *dir_ptr) { - int a, b, c, wrap, pred, scale; + int a, b, c, pred, scale; + ptrdiff_t wrap; int16_t *dc_val; static const uint16_t dcpred[32] = { -1, 1024, 512, 341, 256, 205, 171, 146, 128, @@ -414,7 +415,8 @@ static inline int ff_vc1_pred_dc(MpegEncContext *s, int overlap, int pq, int n, int a_avail, int c_avail, int16_t **dc_val_ptr, int *dir_ptr) { - int a, b, c, wrap, pred; + int a, b, c, pred; + ptrdiff_t wrap; int16_t *dc_val; int mb_pos = s->mb_x + s->mb_y * s->mb_stride; int q1, q2 = 0; @@ -490,7 +492,8 @@ static inline int ff_vc1_pred_dc(MpegEncContext *s, int overlap, int pq, int n, static inline int vc1_coded_block_pred(MpegEncContext * s, int n, uint8_t **coded_block_ptr) { - int xy, wrap, pred, a, b, c; + int xy, pred, a, b, c; + ptrdiff_t wrap; xy = s->block_index[n]; wrap = s->b8_stride; @@ -1176,7 +1179,7 @@ static int vc1_decode_intra_block(VC1Context *v, int16_t block[64], int n, */ static int vc1_decode_p_block(VC1Context *v, int16_t block[64], int n, int mquant, int ttmb, int first_block, - uint8_t *dst, int linesize, int skip_block, + uint8_t *dst, ptrdiff_t linesize, int skip_block, int *ttmb_out) { MpegEncContext *s = &v->s; @@ -1600,7 +1603,8 @@ static int vc1_decode_p_mb_intfr(VC1Context *v) int skipped, fourmv = 0, twomv = 0; int block_cbp = 0, pat, block_tt = 0; int idx_mbmode = 0, mvbp; - int stride_y, fieldtx; + int fieldtx; + ptrdiff_t stride_y; mquant = v->pq; /* Lossy initialization */ @@ -2248,7 +2252,8 @@ static int vc1_decode_b_mb_intfr(VC1Context *v) int skipped, direct, twomv = 0; int block_cbp = 0, pat, block_tt = 0; int idx_mbmode = 0, mvbp; - int stride_y, fieldtx; + int fieldtx; + ptrdiff_t stride_y; int bmvtype = BMV_TYPE_BACKWARD; int dir, dir2; diff --git a/libavcodec/vc1_loopfilter.c b/libavcodec/vc1_loopfilter.c index 52cff1e..de739a5 100644 --- a/libavcodec/vc1_loopfilter.c +++ b/libavcodec/vc1_loopfilter.c @@ -210,7 +210,8 @@ static av_always_inline void vc1_apply_p_v_loop_filter(VC1Context *v, int block_ block_cbp = mb_cbp >> (block_num * 4), bottom_cbp, mb_is_intra = v->is_intra[s->mb_x - s->mb_stride], block_is_intra = mb_is_intra >> (block_num * 4), bottom_is_intra; - int idx, linesize = block_num > 3 ? s->uvlinesize : s->linesize, ttblk; + int idx, ttblk; + ptrdiff_t linesize = block_num > 3 ? s->uvlinesize : s->linesize; uint8_t *dst; if (block_num > 3) { @@ -220,7 +221,7 @@ static av_always_inline void vc1_apply_p_v_loop_filter(VC1Context *v, int block_ } if (s->mb_y != s->end_mb_y || block_num < 2) { int16_t (*mv)[2]; - int mv_stride; + ptrdiff_t mv_stride; if (block_num > 3) { bottom_cbp = v->cbp[s->mb_x] >> (block_num * 4); @@ -274,7 +275,8 @@ static av_always_inline void vc1_apply_p_h_loop_filter(VC1Context *v, int block_ block_cbp = mb_cbp >> (block_num * 4), right_cbp, mb_is_intra = v->is_intra[s->mb_x - 1 - s->mb_stride], block_is_intra = mb_is_intra >> block_num, right_is_intra; - int idx, linesize = block_num > 3 ? s->uvlinesize : s->linesize, ttblk; + int idx, ttblk; + ptrdiff_t linesize = block_num > 3 ? s->uvlinesize : s->linesize; uint8_t *dst; if (block_num > 3) { diff --git a/libavcodec/vc1_pred.c b/libavcodec/vc1_pred.c index 25be787..f806ab8 100644 --- a/libavcodec/vc1_pred.c +++ b/libavcodec/vc1_pred.c @@ -213,7 +213,8 @@ void ff_vc1_pred_mv(VC1Context *v, int n, int dmv_x, int dmv_y, int pred_flag, int dir) { MpegEncContext *s = &v->s; - int xy, wrap, off = 0; + int xy, off = 0; + ptrdiff_t wrap; int16_t *A, *B, *C; int px, py; int sum; @@ -466,7 +467,8 @@ void ff_vc1_pred_mv_intfr(VC1Context *v, int n, int dmv_x, int dmv_y, int mvn, int r_x, int r_y, uint8_t* is_intra, int dir) { MpegEncContext *s = &v->s; - int xy, wrap, off = 0; + int xy, off = 0; + ptrdiff_t wrap; int A[2], B[2], C[2]; int px = 0, py = 0; int a_valid = 0, b_valid = 0, c_valid = 0; @@ -685,7 +687,8 @@ void ff_vc1_pred_b_mv(VC1Context *v, int dmv_x[2], int dmv_y[2], int direct, int mvtype) { MpegEncContext *s = &v->s; - int xy, wrap, off = 0; + int xy, off = 0; + ptrdiff_t wrap; int16_t *A, *B, *C; int px, py; int sum; diff --git a/libavcodec/vc1dsp.c b/libavcodec/vc1dsp.c index 571309b..a36a9f4 100644 --- a/libavcodec/vc1dsp.c +++ b/libavcodec/vc1dsp.c @@ -31,7 +31,7 @@ #include "startcode.h" /* Apply overlap transform to horizontal edge */ -static void vc1_v_overlap_c(uint8_t *src, int stride) +static void vc1_v_overlap_c(uint8_t *src, ptrdiff_t stride) { int i; int a, b, c, d; @@ -55,7 +55,7 @@ static void vc1_v_overlap_c(uint8_t *src, int stride) } /* Apply overlap transform to vertical edge */ -static void vc1_h_overlap_c(uint8_t *src, int stride) +static void vc1_h_overlap_c(uint8_t *src, ptrdiff_t stride) { int i; int a, b, c, d; @@ -138,7 +138,7 @@ static void vc1_h_s_overlap_c(int16_t *left, int16_t *right) * @return whether other 3 pairs should be filtered or not * @see 8.6 */ -static av_always_inline int vc1_filter_line(uint8_t *src, int stride, int pq) +static av_always_inline int vc1_filter_line(uint8_t *src, ptrdiff_t stride, int pq) { int a0 = (2 * (src[-2 * stride] - src[1 * stride]) - 5 * (src[-1 * stride] - src[0 * stride]) + 4) >> 3; @@ -187,7 +187,7 @@ static av_always_inline int vc1_filter_line(uint8_t *src, int stride, int pq) * @param pq block quantizer * @see 8.6 */ -static inline void vc1_loop_filter(uint8_t *src, int step, int stride, +static inline void vc1_loop_filter(uint8_t *src, int step, ptrdiff_t stride, int len, int pq) { int i; @@ -204,32 +204,32 @@ static inline void vc1_loop_filter(uint8_t *src, int step, int stride, } } -static void vc1_v_loop_filter4_c(uint8_t *src, int stride, int pq) +static void vc1_v_loop_filter4_c(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, 1, stride, 4, pq); } -static void vc1_h_loop_filter4_c(uint8_t *src, int stride, int pq) +static void vc1_h_loop_filter4_c(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, stride, 1, 4, pq); } -static void vc1_v_loop_filter8_c(uint8_t *src, int stride, int pq) +static void vc1_v_loop_filter8_c(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, 1, stride, 8, pq); } -static void vc1_h_loop_filter8_c(uint8_t *src, int stride, int pq) +static void vc1_h_loop_filter8_c(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, stride, 1, 8, pq); } -static void vc1_v_loop_filter16_c(uint8_t *src, int stride, int pq) +static void vc1_v_loop_filter16_c(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, 1, stride, 16, pq); } -static void vc1_h_loop_filter16_c(uint8_t *src, int stride, int pq) +static void vc1_h_loop_filter16_c(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, stride, 1, 16, pq); } @@ -538,7 +538,7 @@ static void vc1_inv_trans_4x4_c(uint8_t *dest, ptrdiff_t stride, int16_t *block) /* Filter in case of 2 filters */ #define VC1_MSPEL_FILTER_16B(DIR, TYPE) \ static av_always_inline int vc1_mspel_ ## DIR ## _filter_16bits(const TYPE *src, \ - int stride, \ + ptrdiff_t stride, \ int mode) \ { \ switch(mode) { \ @@ -561,7 +561,7 @@ VC1_MSPEL_FILTER_16B(ver, uint8_t) VC1_MSPEL_FILTER_16B(hor, int16_t) /* Filter used to interpolate fractional pel values */ -static av_always_inline int vc1_mspel_filter(const uint8_t *src, int stride, +static av_always_inline int vc1_mspel_filter(const uint8_t *src, ptrdiff_t stride, int mode, int r) { switch (mode) { @@ -584,7 +584,7 @@ static av_always_inline int vc1_mspel_filter(const uint8_t *src, int stride, #define VC1_MSPEL_MC(OP, OPNAME) \ static av_always_inline void OPNAME ## vc1_mspel_mc(uint8_t *dst, \ const uint8_t *src, \ - int stride, \ + ptrdiff_t stride, \ int hmode, \ int vmode, \ int rnd) \ diff --git a/libavcodec/vc1dsp.h b/libavcodec/vc1dsp.h index a9bd712..41663df 100644 --- a/libavcodec/vc1dsp.h +++ b/libavcodec/vc1dsp.h @@ -40,16 +40,16 @@ typedef struct VC1DSPContext { void (*vc1_inv_trans_8x4_dc)(uint8_t *dest, ptrdiff_t stride, int16_t *block); void (*vc1_inv_trans_4x8_dc)(uint8_t *dest, ptrdiff_t stride, int16_t *block); void (*vc1_inv_trans_4x4_dc)(uint8_t *dest, ptrdiff_t stride, int16_t *block); - void (*vc1_v_overlap)(uint8_t *src, int stride); - void (*vc1_h_overlap)(uint8_t *src, int stride); + void (*vc1_v_overlap)(uint8_t *src, ptrdiff_t stride); + void (*vc1_h_overlap)(uint8_t *src, ptrdiff_t stride); void (*vc1_v_s_overlap)(int16_t *top, int16_t *bottom); void (*vc1_h_s_overlap)(int16_t *left, int16_t *right); - void (*vc1_v_loop_filter4)(uint8_t *src, int stride, int pq); - void (*vc1_h_loop_filter4)(uint8_t *src, int stride, int pq); - void (*vc1_v_loop_filter8)(uint8_t *src, int stride, int pq); - void (*vc1_h_loop_filter8)(uint8_t *src, int stride, int pq); - void (*vc1_v_loop_filter16)(uint8_t *src, int stride, int pq); - void (*vc1_h_loop_filter16)(uint8_t *src, int stride, int pq); + void (*vc1_v_loop_filter4)(uint8_t *src, ptrdiff_t stride, int pq); + void (*vc1_h_loop_filter4)(uint8_t *src, ptrdiff_t stride, int pq); + void (*vc1_v_loop_filter8)(uint8_t *src, ptrdiff_t stride, int pq); + void (*vc1_h_loop_filter8)(uint8_t *src, ptrdiff_t stride, int pq); + void (*vc1_v_loop_filter16)(uint8_t *src, ptrdiff_t stride, int pq); + void (*vc1_h_loop_filter16)(uint8_t *src, ptrdiff_t stride, int pq); /* put 8x8 block with bicubic interpolation and quarterpel precision * last argument is actually round value instead of height diff --git a/libavcodec/x86/vc1dsp.asm b/libavcodec/x86/vc1dsp.asm index adf08d7..9136ad9 100644 --- a/libavcodec/x86/vc1dsp.asm +++ b/libavcodec/x86/vc1dsp.asm @@ -237,19 +237,19 @@ cglobal vc1_h_loop_filter_internal VC1_H_LOOP_FILTER 4, r4 ret -; void ff_vc1_v_loop_filter4_mmxext(uint8_t *src, int stride, int pq) +; void ff_vc1_v_loop_filter4_mmxext(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_v_loop_filter4, 3,5,0 START_V_FILTER call vc1_v_loop_filter_internal RET -; void ff_vc1_h_loop_filter4_mmxext(uint8_t *src, int stride, int pq) +; void ff_vc1_h_loop_filter4_mmxext(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_h_loop_filter4, 3,5,0 START_H_FILTER 4 call vc1_h_loop_filter_internal RET -; void ff_vc1_v_loop_filter8_mmxext(uint8_t *src, int stride, int pq) +; void ff_vc1_v_loop_filter8_mmxext(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_v_loop_filter8, 3,5,0 START_V_FILTER call vc1_v_loop_filter_internal @@ -258,7 +258,7 @@ cglobal vc1_v_loop_filter8, 3,5,0 call vc1_v_loop_filter_internal RET -; void ff_vc1_h_loop_filter8_mmxext(uint8_t *src, int stride, int pq) +; void ff_vc1_h_loop_filter8_mmxext(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_h_loop_filter8, 3,5,0 START_H_FILTER 4 call vc1_h_loop_filter_internal @@ -271,46 +271,46 @@ INIT_MMX mmxext VC1_LF INIT_XMM sse2 -; void ff_vc1_v_loop_filter8_sse2(uint8_t *src, int stride, int pq) +; void ff_vc1_v_loop_filter8_sse2(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_v_loop_filter8, 3,5,8 START_V_FILTER VC1_V_LOOP_FILTER 8, q RET -; void ff_vc1_h_loop_filter8_sse2(uint8_t *src, int stride, int pq) +; void ff_vc1_h_loop_filter8_sse2(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_h_loop_filter8, 3,6,8 START_H_FILTER 8 VC1_H_LOOP_FILTER 8, r5 RET INIT_MMX ssse3 -; void ff_vc1_v_loop_filter4_ssse3(uint8_t *src, int stride, int pq) +; void ff_vc1_v_loop_filter4_ssse3(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_v_loop_filter4, 3,5,0 START_V_FILTER VC1_V_LOOP_FILTER 4, d RET -; void ff_vc1_h_loop_filter4_ssse3(uint8_t *src, int stride, int pq) +; void ff_vc1_h_loop_filter4_ssse3(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_h_loop_filter4, 3,5,0 START_H_FILTER 4 VC1_H_LOOP_FILTER 4, r4 RET INIT_XMM ssse3 -; void ff_vc1_v_loop_filter8_ssse3(uint8_t *src, int stride, int pq) +; void ff_vc1_v_loop_filter8_ssse3(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_v_loop_filter8, 3,5,8 START_V_FILTER VC1_V_LOOP_FILTER 8, q RET -; void ff_vc1_h_loop_filter8_ssse3(uint8_t *src, int stride, int pq) +; void ff_vc1_h_loop_filter8_ssse3(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_h_loop_filter8, 3,6,8 START_H_FILTER 8 VC1_H_LOOP_FILTER 8, r5 RET INIT_XMM sse4 -; void ff_vc1_h_loop_filter8_sse4(uint8_t *src, int stride, int pq) +; void ff_vc1_h_loop_filter8_sse4(uint8_t *src, ptrdiff_t stride, int pq) cglobal vc1_h_loop_filter8, 3,5,8 START_H_FILTER 8 VC1_H_LOOP_FILTER 8 diff --git a/libavcodec/x86/vc1dsp_init.c b/libavcodec/x86/vc1dsp_init.c index 8982ff9..fda6c3c 100644 --- a/libavcodec/x86/vc1dsp_init.c +++ b/libavcodec/x86/vc1dsp_init.c @@ -33,18 +33,18 @@ #include "config.h" #define LOOP_FILTER(EXT) \ -void ff_vc1_v_loop_filter4_ ## EXT(uint8_t *src, int stride, int pq); \ -void ff_vc1_h_loop_filter4_ ## EXT(uint8_t *src, int stride, int pq); \ -void ff_vc1_v_loop_filter8_ ## EXT(uint8_t *src, int stride, int pq); \ -void ff_vc1_h_loop_filter8_ ## EXT(uint8_t *src, int stride, int pq); \ +void ff_vc1_v_loop_filter4_ ## EXT(uint8_t *src, ptrdiff_t stride, int pq); \ +void ff_vc1_h_loop_filter4_ ## EXT(uint8_t *src, ptrdiff_t stride, int pq); \ +void ff_vc1_v_loop_filter8_ ## EXT(uint8_t *src, ptrdiff_t stride, int pq); \ +void ff_vc1_h_loop_filter8_ ## EXT(uint8_t *src, ptrdiff_t stride, int pq); \ \ -static void vc1_v_loop_filter16_ ## EXT(uint8_t *src, int stride, int pq) \ +static void vc1_v_loop_filter16_ ## EXT(uint8_t *src, ptrdiff_t stride, int pq) \ { \ ff_vc1_v_loop_filter8_ ## EXT(src, stride, pq); \ ff_vc1_v_loop_filter8_ ## EXT(src+8, stride, pq); \ } \ \ -static void vc1_h_loop_filter16_ ## EXT(uint8_t *src, int stride, int pq) \ +static void vc1_h_loop_filter16_ ## EXT(uint8_t *src, ptrdiff_t stride, int pq) \ { \ ff_vc1_h_loop_filter8_ ## EXT(src, stride, pq); \ ff_vc1_h_loop_filter8_ ## EXT(src+8*stride, stride, pq); \ @@ -55,9 +55,9 @@ LOOP_FILTER(mmxext) LOOP_FILTER(sse2) LOOP_FILTER(ssse3) -void ff_vc1_h_loop_filter8_sse4(uint8_t *src, int stride, int pq); +void ff_vc1_h_loop_filter8_sse4(uint8_t *src, ptrdiff_t stride, int pq); -static void vc1_h_loop_filter16_sse4(uint8_t *src, int stride, int pq) +static void vc1_h_loop_filter16_sse4(uint8_t *src, ptrdiff_t stride, int pq) { ff_vc1_h_loop_filter8_sse4(src, stride, pq); ff_vc1_h_loop_filter8_sse4(src+8*stride, stride, pq); diff --git a/libavcodec/x86/vc1dsp_mmx.c b/libavcodec/x86/vc1dsp_mmx.c index d64ddf0..070b35a 100644 --- a/libavcodec/x86/vc1dsp_mmx.c +++ b/libavcodec/x86/vc1dsp_mmx.c @@ -83,7 +83,7 @@ /** Sacrificing mm6 allows to pipeline loads from src */ static void vc1_put_ver_16b_shift2_mmx(int16_t *dst, - const uint8_t *src, x86_reg stride, + const uint8_t *src, ptrdiff_t stride, int rnd, int64_t shift) { __asm__ volatile( @@ -120,7 +120,7 @@ static void vc1_put_ver_16b_shift2_mmx(int16_t *dst, * memory. */ #define VC1_HOR_16b_SHIFT2(OP, OPNAME)\ -static void OPNAME ## vc1_hor_16b_shift2_mmx(uint8_t *dst, x86_reg stride,\ +static void OPNAME ## vc1_hor_16b_shift2_mmx(uint8_t *dst, ptrdiff_t stride,\ const int16_t *src, int rnd)\ {\ int h = 8;\ @@ -169,7 +169,7 @@ VC1_HOR_16b_SHIFT2(OP_AVG, avg_) */ #define VC1_SHIFT2(OP, OPNAME)\ static void OPNAME ## vc1_shift2_mmx(uint8_t *dst, const uint8_t *src,\ - x86_reg stride, int rnd, x86_reg offset)\ + ptrdiff_t stride, int rnd, x86_reg offset)\ {\ rnd = 8-rnd;\ __asm__ volatile(\ @@ -273,7 +273,7 @@ VC1_SHIFT2(OP_AVG, avg_) #define MSPEL_FILTER13_VER_16B(NAME, A1, A2, A3, A4) \ static void \ vc1_put_ver_16b_ ## NAME ## _mmx(int16_t *dst, const uint8_t *src, \ - x86_reg src_stride, \ + ptrdiff_t src_stride, \ int rnd, int64_t shift) \ { \ int h = 8; \ @@ -328,7 +328,7 @@ vc1_put_ver_16b_ ## NAME ## _mmx(int16_t *dst, const uint8_t *src, \ */ #define MSPEL_FILTER13_HOR_16B(NAME, A1, A2, A3, A4, OP, OPNAME) \ static void \ -OPNAME ## vc1_hor_16b_ ## NAME ## _mmx(uint8_t *dst, x86_reg stride, \ +OPNAME ## vc1_hor_16b_ ## NAME ## _mmx(uint8_t *dst, ptrdiff_t stride, \ const int16_t *src, int rnd) \ { \ int h = 8; \ @@ -367,7 +367,8 @@ OPNAME ## vc1_hor_16b_ ## NAME ## _mmx(uint8_t *dst, x86_reg stride, \ #define MSPEL_FILTER13_8B(NAME, A1, A2, A3, A4, OP, OPNAME) \ static void \ OPNAME ## vc1_## NAME ## _mmx(uint8_t *dst, const uint8_t *src, \ - x86_reg stride, int rnd, x86_reg offset) \ + ptrdiff_t stride, int rnd, \ + x86_reg offset) \ { \ int h = 8; \ src -= offset; \ @@ -405,9 +406,9 @@ MSPEL_FILTER13_VER_16B(shift3, "0(%1 )", "0(%1,%3 )", "0(%1,%3,2)", "0(%1,% MSPEL_FILTER13_HOR_16B(shift3, "2*0(%1)", "2*1(%1)", "2*2(%1)", "2*3(%1)", OP_PUT, put_) MSPEL_FILTER13_HOR_16B(shift3, "2*0(%1)", "2*1(%1)", "2*2(%1)", "2*3(%1)", OP_AVG, avg_) -typedef void (*vc1_mspel_mc_filter_ver_16bits)(int16_t *dst, const uint8_t *src, x86_reg src_stride, int rnd, int64_t shift); -typedef void (*vc1_mspel_mc_filter_hor_16bits)(uint8_t *dst, x86_reg dst_stride, const int16_t *src, int rnd); -typedef void (*vc1_mspel_mc_filter_8bits)(uint8_t *dst, const uint8_t *src, x86_reg stride, int rnd, x86_reg offset); +typedef void (*vc1_mspel_mc_filter_ver_16bits)(int16_t *dst, const uint8_t *src, ptrdiff_t src_stride, int rnd, int64_t shift); +typedef void (*vc1_mspel_mc_filter_hor_16bits)(uint8_t *dst, ptrdiff_t dst_stride, const int16_t *src, int rnd); +typedef void (*vc1_mspel_mc_filter_8bits)(uint8_t *dst, const uint8_t *src, ptrdiff_t stride, int rnd, x86_reg offset); /** * Interpolate fractional pel values by applying proper vertical then @@ -421,7 +422,7 @@ typedef void (*vc1_mspel_mc_filter_8bits)(uint8_t *dst, const uint8_t *src, x86_ * @param rnd Rounding bias. */ #define VC1_MSPEL_MC(OP)\ -static void OP ## vc1_mspel_mc(uint8_t *dst, const uint8_t *src, int stride,\ +static void OP ## vc1_mspel_mc(uint8_t *dst, const uint8_t *src, ptrdiff_t stride,\ int hmode, int vmode, int rnd)\ {\ static const vc1_mspel_mc_filter_ver_16bits vc1_put_shift_ver_16bits[] =\ -- 2.7.3 _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel