This prevents having to sign-extend on 64-bit systems with 32-bit ints, such as x86-64. Also fixes crashes on systems where we don't do it and arguments are not in registers, such as Win64 for all weight functions.tags/n0.11
| @@ -27,8 +27,8 @@ void ff_rv34_inv_transform_noround_neon(DCTELEM *block); | |||
| void ff_rv34_inv_transform_noround_dc_neon(DCTELEM *block); | |||
| void ff_rv34_idct_add_neon(uint8_t *dst, int stride, DCTELEM *block); | |||
| void ff_rv34_idct_dc_add_neon(uint8_t *dst, int stride, int dc); | |||
| void ff_rv34_idct_add_neon(uint8_t *dst, ptrdiff_t stride, DCTELEM *block); | |||
| void ff_rv34_idct_dc_add_neon(uint8_t *dst, ptrdiff_t stride, int dc); | |||
| void ff_rv34dsp_init_neon(RV34DSPContext *c, DSPContext* dsp) | |||
| { | |||
| @@ -51,20 +51,20 @@ void ff_put_rv40_chroma_mc4_neon(uint8_t *, uint8_t *, int, int, int, int); | |||
| void ff_avg_rv40_chroma_mc8_neon(uint8_t *, uint8_t *, int, int, int, int); | |||
| void ff_avg_rv40_chroma_mc4_neon(uint8_t *, uint8_t *, int, int, int, int); | |||
| void ff_rv40_weight_func_16_neon(uint8_t *, uint8_t *, uint8_t *, int, int, int); | |||
| void ff_rv40_weight_func_8_neon(uint8_t *, uint8_t *, uint8_t *, int, int, int); | |||
| void ff_rv40_weight_func_16_neon(uint8_t *, uint8_t *, uint8_t *, int, int, ptrdiff_t); | |||
| void ff_rv40_weight_func_8_neon(uint8_t *, uint8_t *, uint8_t *, int, int, ptrdiff_t); | |||
| int ff_rv40_h_loop_filter_strength_neon(uint8_t *src, int stride, | |||
| int ff_rv40_h_loop_filter_strength_neon(uint8_t *src, ptrdiff_t stride, | |||
| int beta, int beta2, int edge, | |||
| int *p1, int *q1); | |||
| int ff_rv40_v_loop_filter_strength_neon(uint8_t *src, int stride, | |||
| int ff_rv40_v_loop_filter_strength_neon(uint8_t *src, ptrdiff_t stride, | |||
| int beta, int beta2, int edge, | |||
| int *p1, int *q1); | |||
| void ff_rv40_h_weak_loop_filter_neon(uint8_t *src, int stride, int filter_p1, | |||
| void ff_rv40_h_weak_loop_filter_neon(uint8_t *src, ptrdiff_t stride, int filter_p1, | |||
| int filter_q1, int alpha, int beta, | |||
| int lim_p0q0, int lim_q1, int lim_p1); | |||
| void ff_rv40_v_weak_loop_filter_neon(uint8_t *src, int stride, int filter_p1, | |||
| void ff_rv40_v_weak_loop_filter_neon(uint8_t *src, ptrdiff_t stride, int filter_p1, | |||
| int filter_q1, int alpha, int beta, | |||
| int lim_p0q0, int lim_q1, int lim_p1); | |||
| @@ -53,7 +53,7 @@ static av_always_inline void rv34_row_transform(int temp[16], DCTELEM *block) | |||
| * Real Video 3.0/4.0 inverse transform + sample reconstruction | |||
| * Code is almost the same as in SVQ3, only scaling is different. | |||
| */ | |||
| static void rv34_idct_add_c(uint8_t *dst, int stride, DCTELEM *block){ | |||
| static void rv34_idct_add_c(uint8_t *dst, ptrdiff_t stride, DCTELEM *block){ | |||
| int temp[16]; | |||
| uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; | |||
| int i; | |||
| @@ -101,7 +101,7 @@ static void rv34_inv_transform_noround_c(DCTELEM *block){ | |||
| } | |||
| } | |||
| static void rv34_idct_dc_add_c(uint8_t *dst, int stride, int dc) | |||
| static void rv34_idct_dc_add_c(uint8_t *dst, ptrdiff_t stride, int dc) | |||
| { | |||
| const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; | |||
| int i, j; | |||
| @@ -32,24 +32,24 @@ | |||
| typedef void (*rv40_weight_func)(uint8_t *dst/*align width (8 or 16)*/, | |||
| uint8_t *src1/*align width (8 or 16)*/, | |||
| uint8_t *src2/*align width (8 or 16)*/, | |||
| int w1, int w2, int stride); | |||
| int w1, int w2, ptrdiff_t stride); | |||
| typedef void (*rv34_inv_transform_func)(DCTELEM *block); | |||
| typedef void (*rv34_idct_add_func)(uint8_t *dst, int stride, DCTELEM *block); | |||
| typedef void (*rv34_idct_dc_add_func)(uint8_t *dst, int stride, | |||
| typedef void (*rv34_idct_add_func)(uint8_t *dst, ptrdiff_t stride, DCTELEM *block); | |||
| typedef void (*rv34_idct_dc_add_func)(uint8_t *dst, ptrdiff_t stride, | |||
| int dc); | |||
| typedef void (*rv40_weak_loop_filter_func)(uint8_t *src, int stride, | |||
| typedef void (*rv40_weak_loop_filter_func)(uint8_t *src, ptrdiff_t stride, | |||
| int filter_p1, int filter_q1, | |||
| int alpha, int beta, | |||
| int lims, int lim_q1, int lim_p1); | |||
| typedef void (*rv40_strong_loop_filter_func)(uint8_t *src, int stride, | |||
| typedef void (*rv40_strong_loop_filter_func)(uint8_t *src, ptrdiff_t stride, | |||
| int alpha, int lims, | |||
| int dmode, int chroma); | |||
| typedef int (*rv40_loop_filter_strength_func)(uint8_t *src, int stride, | |||
| typedef int (*rv40_loop_filter_strength_func)(uint8_t *src, ptrdiff_t stride, | |||
| int beta, int beta2, int edge, | |||
| int *p1, int *q1); | |||
| @@ -278,7 +278,7 @@ RV40_CHROMA_MC(put_, op_put) | |||
| RV40_CHROMA_MC(avg_, op_avg) | |||
| #define RV40_WEIGHT_FUNC(size) \ | |||
| static void rv40_weight_func_ ## size (uint8_t *dst, uint8_t *src1, uint8_t *src2, int w1, int w2, int stride)\ | |||
| static void rv40_weight_func_ ## size (uint8_t *dst, uint8_t *src1, uint8_t *src2, int w1, int w2, ptrdiff_t stride)\ | |||
| {\ | |||
| int i, j;\ | |||
| \ | |||
| @@ -316,7 +316,7 @@ static const uint8_t rv40_dither_r[16] = { | |||
| */ | |||
| static av_always_inline void rv40_weak_loop_filter(uint8_t *src, | |||
| const int step, | |||
| const int stride, | |||
| const ptrdiff_t stride, | |||
| const int filter_p1, | |||
| const int filter_q1, | |||
| const int alpha, | |||
| @@ -362,7 +362,7 @@ static av_always_inline void rv40_weak_loop_filter(uint8_t *src, | |||
| } | |||
| } | |||
| static void rv40_h_weak_loop_filter(uint8_t *src, const int stride, | |||
| static void rv40_h_weak_loop_filter(uint8_t *src, const ptrdiff_t stride, | |||
| const int filter_p1, const int filter_q1, | |||
| const int alpha, const int beta, | |||
| const int lim_p0q0, const int lim_q1, | |||
| @@ -372,7 +372,7 @@ static void rv40_h_weak_loop_filter(uint8_t *src, const int stride, | |||
| alpha, beta, lim_p0q0, lim_q1, lim_p1); | |||
| } | |||
| static void rv40_v_weak_loop_filter(uint8_t *src, const int stride, | |||
| static void rv40_v_weak_loop_filter(uint8_t *src, const ptrdiff_t stride, | |||
| const int filter_p1, const int filter_q1, | |||
| const int alpha, const int beta, | |||
| const int lim_p0q0, const int lim_q1, | |||
| @@ -384,7 +384,7 @@ static void rv40_v_weak_loop_filter(uint8_t *src, const int stride, | |||
| static av_always_inline void rv40_strong_loop_filter(uint8_t *src, | |||
| const int step, | |||
| const int stride, | |||
| const ptrdiff_t stride, | |||
| const int alpha, | |||
| const int lims, | |||
| const int dmode, | |||
| @@ -440,14 +440,14 @@ static av_always_inline void rv40_strong_loop_filter(uint8_t *src, | |||
| } | |||
| } | |||
| static void rv40_h_strong_loop_filter(uint8_t *src, const int stride, | |||
| static void rv40_h_strong_loop_filter(uint8_t *src, const ptrdiff_t stride, | |||
| const int alpha, const int lims, | |||
| const int dmode, const int chroma) | |||
| { | |||
| rv40_strong_loop_filter(src, stride, 1, alpha, lims, dmode, chroma); | |||
| } | |||
| static void rv40_v_strong_loop_filter(uint8_t *src, const int stride, | |||
| static void rv40_v_strong_loop_filter(uint8_t *src, const ptrdiff_t stride, | |||
| const int alpha, const int lims, | |||
| const int dmode, const int chroma) | |||
| { | |||
| @@ -455,7 +455,7 @@ static void rv40_v_strong_loop_filter(uint8_t *src, const int stride, | |||
| } | |||
| static av_always_inline int rv40_loop_filter_strength(uint8_t *src, | |||
| int step, int stride, | |||
| int step, ptrdiff_t stride, | |||
| int beta, int beta2, | |||
| int edge, | |||
| int *p1, int *q1) | |||
| @@ -490,14 +490,14 @@ static av_always_inline int rv40_loop_filter_strength(uint8_t *src, | |||
| return strong0 && strong1; | |||
| } | |||
| static int rv40_h_loop_filter_strength(uint8_t *src, int stride, | |||
| static int rv40_h_loop_filter_strength(uint8_t *src, ptrdiff_t stride, | |||
| int beta, int beta2, int edge, | |||
| int *p1, int *q1) | |||
| { | |||
| return rv40_loop_filter_strength(src, stride, 1, beta, beta2, edge, p1, q1); | |||
| } | |||
| static int rv40_v_loop_filter_strength(uint8_t *src, int stride, | |||
| static int rv40_v_loop_filter_strength(uint8_t *src, ptrdiff_t stride, | |||
| int beta, int beta2, int edge, | |||
| int *p1, int *q1) | |||
| { | |||
| @@ -26,8 +26,8 @@ | |||
| void ff_rv34_idct_dc_mmx2(DCTELEM *block); | |||
| void ff_rv34_idct_dc_noround_mmx2(DCTELEM *block); | |||
| void ff_rv34_idct_dc_add_mmx(uint8_t *dst, int stride, int dc); | |||
| void ff_rv34_idct_dc_add_sse4(uint8_t *dst, int stride, int dc); | |||
| void ff_rv34_idct_dc_add_mmx(uint8_t *dst, ptrdiff_t stride, int dc); | |||
| void ff_rv34_idct_dc_add_sse4(uint8_t *dst, ptrdiff_t stride, int dc); | |||
| av_cold void ff_rv34dsp_init_x86(RV34DSPContext* c, DSPContext *dsp) | |||
| { | |||
| @@ -42,9 +42,9 @@ void ff_avg_rv40_chroma_mc4_3dnow(uint8_t *dst, uint8_t *src, | |||
| #define DECLARE_WEIGHT(opt) \ | |||
| void ff_rv40_weight_func_16_##opt(uint8_t *dst, uint8_t *src1, uint8_t *src2, \ | |||
| int w1, int w2, int stride); \ | |||
| int w1, int w2, ptrdiff_t stride); \ | |||
| void ff_rv40_weight_func_8_##opt (uint8_t *dst, uint8_t *src1, uint8_t *src2, \ | |||
| int w1, int w2, int stride); | |||
| int w1, int w2, ptrdiff_t stride); | |||
| DECLARE_WEIGHT(mmx) | |||
| DECLARE_WEIGHT(sse2) | |||
| DECLARE_WEIGHT(ssse3) | |||