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
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel