Commit 3ab9a2a5 authored by Ronald S. Bultje's avatar Ronald S. Bultje

rv34: change most "int stride" into "ptrdiff_t stride".

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.
parent 770a5c6d
...@@ -27,8 +27,8 @@ void ff_rv34_inv_transform_noround_neon(DCTELEM *block); ...@@ -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_inv_transform_noround_dc_neon(DCTELEM *block);
void ff_rv34_idct_add_neon(uint8_t *dst, int stride, DCTELEM *block); void ff_rv34_idct_add_neon(uint8_t *dst, ptrdiff_t stride, DCTELEM *block);
void ff_rv34_idct_dc_add_neon(uint8_t *dst, int stride, int dc); void ff_rv34_idct_dc_add_neon(uint8_t *dst, ptrdiff_t stride, int dc);
void ff_rv34dsp_init_neon(RV34DSPContext *c, DSPContext* dsp) 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); ...@@ -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_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_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_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, int); 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 beta, int beta2, int edge,
int *p1, int *q1); 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 beta, int beta2, int edge,
int *p1, int *q1); 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 filter_q1, int alpha, int beta,
int lim_p0q0, int lim_q1, int lim_p1); 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 filter_q1, int alpha, int beta,
int lim_p0q0, int lim_q1, int lim_p1); 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) ...@@ -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 * Real Video 3.0/4.0 inverse transform + sample reconstruction
* Code is almost the same as in SVQ3, only scaling is different. * 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]; int temp[16];
uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
int i; int i;
...@@ -101,7 +101,7 @@ static void rv34_inv_transform_noround_c(DCTELEM *block){ ...@@ -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; const uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;
int i, j; int i, j;
......
...@@ -32,24 +32,24 @@ ...@@ -32,24 +32,24 @@
typedef void (*rv40_weight_func)(uint8_t *dst/*align width (8 or 16)*/, typedef void (*rv40_weight_func)(uint8_t *dst/*align width (8 or 16)*/,
uint8_t *src1/*align width (8 or 16)*/, uint8_t *src1/*align width (8 or 16)*/,
uint8_t *src2/*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_inv_transform_func)(DCTELEM *block);
typedef void (*rv34_idct_add_func)(uint8_t *dst, int stride, DCTELEM *block); typedef void (*rv34_idct_add_func)(uint8_t *dst, ptrdiff_t stride, DCTELEM *block);
typedef void (*rv34_idct_dc_add_func)(uint8_t *dst, int stride, typedef void (*rv34_idct_dc_add_func)(uint8_t *dst, ptrdiff_t stride,
int dc); 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 filter_p1, int filter_q1,
int alpha, int beta, int alpha, int beta,
int lims, int lim_q1, int lim_p1); 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 alpha, int lims,
int dmode, int chroma); 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 beta, int beta2, int edge,
int *p1, int *q1); int *p1, int *q1);
......
...@@ -278,7 +278,7 @@ RV40_CHROMA_MC(put_, op_put) ...@@ -278,7 +278,7 @@ RV40_CHROMA_MC(put_, op_put)
RV40_CHROMA_MC(avg_, op_avg) RV40_CHROMA_MC(avg_, op_avg)
#define RV40_WEIGHT_FUNC(size) \ #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;\ int i, j;\
\ \
...@@ -316,7 +316,7 @@ static const uint8_t rv40_dither_r[16] = { ...@@ -316,7 +316,7 @@ static const uint8_t rv40_dither_r[16] = {
*/ */
static av_always_inline void rv40_weak_loop_filter(uint8_t *src, static av_always_inline void rv40_weak_loop_filter(uint8_t *src,
const int step, const int step,
const int stride, const ptrdiff_t stride,
const int filter_p1, const int filter_p1,
const int filter_q1, const int filter_q1,
const int alpha, const int alpha,
...@@ -362,7 +362,7 @@ static av_always_inline void rv40_weak_loop_filter(uint8_t *src, ...@@ -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 filter_p1, const int filter_q1,
const int alpha, const int beta, const int alpha, const int beta,
const int lim_p0q0, const int lim_q1, 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, ...@@ -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); 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 filter_p1, const int filter_q1,
const int alpha, const int beta, const int alpha, const int beta,
const int lim_p0q0, const int lim_q1, 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, ...@@ -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, static av_always_inline void rv40_strong_loop_filter(uint8_t *src,
const int step, const int step,
const int stride, const ptrdiff_t stride,
const int alpha, const int alpha,
const int lims, const int lims,
const int dmode, const int dmode,
...@@ -440,14 +440,14 @@ static av_always_inline void rv40_strong_loop_filter(uint8_t *src, ...@@ -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 alpha, const int lims,
const int dmode, const int chroma) const int dmode, const int chroma)
{ {
rv40_strong_loop_filter(src, stride, 1, alpha, lims, dmode, 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 alpha, const int lims,
const int dmode, const int chroma) const int dmode, const int chroma)
{ {
...@@ -455,7 +455,7 @@ static void rv40_v_strong_loop_filter(uint8_t *src, const int stride, ...@@ -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, 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 beta, int beta2,
int edge, int edge,
int *p1, int *q1) int *p1, int *q1)
...@@ -490,14 +490,14 @@ static av_always_inline int rv40_loop_filter_strength(uint8_t *src, ...@@ -490,14 +490,14 @@ static av_always_inline int rv40_loop_filter_strength(uint8_t *src,
return strong0 && strong1; 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 beta, int beta2, int edge,
int *p1, int *q1) int *p1, int *q1)
{ {
return rv40_loop_filter_strength(src, stride, 1, beta, beta2, edge, p1, 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 beta, int beta2, int edge,
int *p1, int *q1) int *p1, int *q1)
{ {
......
...@@ -26,8 +26,8 @@ ...@@ -26,8 +26,8 @@
void ff_rv34_idct_dc_mmx2(DCTELEM *block); void ff_rv34_idct_dc_mmx2(DCTELEM *block);
void ff_rv34_idct_dc_noround_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_mmx(uint8_t *dst, ptrdiff_t stride, int dc);
void ff_rv34_idct_dc_add_sse4(uint8_t *dst, int 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) 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, ...@@ -42,9 +42,9 @@ void ff_avg_rv40_chroma_mc4_3dnow(uint8_t *dst, uint8_t *src,
#define DECLARE_WEIGHT(opt) \ #define DECLARE_WEIGHT(opt) \
void ff_rv40_weight_func_16_##opt(uint8_t *dst, uint8_t *src1, uint8_t *src2, \ 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, \ 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(mmx)
DECLARE_WEIGHT(sse2) DECLARE_WEIGHT(sse2)
DECLARE_WEIGHT(ssse3) DECLARE_WEIGHT(ssse3)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment