aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiego Biurrun <diego@biurrun.de>2016-08-23 23:23:45 +0200
committerDiego Biurrun <diego@biurrun.de>2016-08-26 11:36:26 +0200
commitd9d26a3674f31f482f54e936fcb382160830877a (patch)
tree027c2a1b7b9258c64f255b37a1ca00889388caf6
parent6892df9294d93322d43255ada299507465bc93c8 (diff)
downloadffmpeg-d9d26a3674f31f482f54e936fcb382160830877a.tar.gz
vp56: Change type of stride parameters to ptrdiff_t
This avoids SIMD-optimized functions having to sign-extend their line size argument manually to be able to do pointer arithmetic.
-rw-r--r--libavcodec/arm/vp6dsp_init_arm.c4
-rw-r--r--libavcodec/vp56.h4
-rw-r--r--libavcodec/vp56dsp.c3
-rw-r--r--libavcodec/vp56dsp.h10
-rw-r--r--libavcodec/vp6.c8
-rw-r--r--libavcodec/vp6dsp.c2
-rw-r--r--libavcodec/x86/vp6dsp.asm5
-rw-r--r--libavcodec/x86/vp6dsp_init.c4
8 files changed, 20 insertions, 20 deletions
diff --git a/libavcodec/arm/vp6dsp_init_arm.c b/libavcodec/arm/vp6dsp_init_arm.c
index 4ec41ed9f1..235b0b6bf3 100644
--- a/libavcodec/arm/vp6dsp_init_arm.c
+++ b/libavcodec/arm/vp6dsp_init_arm.c
@@ -25,8 +25,8 @@
#include "libavcodec/avcodec.h"
#include "libavcodec/vp56dsp.h"
-void ff_vp6_edge_filter_hor_neon(uint8_t *yuv, int stride, int t);
-void ff_vp6_edge_filter_ver_neon(uint8_t *yuv, int stride, int t);
+void ff_vp6_edge_filter_hor_neon(uint8_t *yuv, ptrdiff_t stride, int t);
+void ff_vp6_edge_filter_ver_neon(uint8_t *yuv, ptrdiff_t stride, int t);
av_cold void ff_vp6dsp_init_arm(VP56DSPContext *s, enum AVCodecID codec)
{
diff --git a/libavcodec/vp56.h b/libavcodec/vp56.h
index f2ed770b85..52fe3182f4 100644
--- a/libavcodec/vp56.h
+++ b/libavcodec/vp56.h
@@ -72,7 +72,7 @@ typedef struct VP56mv {
typedef void (*VP56ParseVectorAdjustment)(VP56Context *s,
VP56mv *vect);
typedef void (*VP56Filter)(VP56Context *s, uint8_t *dst, uint8_t *src,
- int offset1, int offset2, int stride,
+ int offset1, int offset2, ptrdiff_t stride,
VP56mv mv, int mask, int select, int luma);
typedef void (*VP56ParseCoeff)(VP56Context *s);
typedef void (*VP56DefaultModelsInit)(VP56Context *s);
@@ -178,7 +178,7 @@ struct vp56_context {
int flip; /* are we flipping ? */
int frbi; /* first row block index in MB */
int srbi; /* second row block index in MB */
- int stride[4]; /* stride for each plan */
+ ptrdiff_t stride[4]; /* stride for each plan */
const uint8_t *vp56_coord_div;
VP56ParseVectorAdjustment parse_vector_adjustment;
diff --git a/libavcodec/vp56dsp.c b/libavcodec/vp56dsp.c
index 5e09d2414e..297534bbdd 100644
--- a/libavcodec/vp56dsp.c
+++ b/libavcodec/vp56dsp.c
@@ -58,7 +58,8 @@ static int vp6_adjust(int v, int t)
#define VP56_EDGE_FILTER(pfx, suf, pix_inc, line_inc) \
-static void pfx##_edge_filter_##suf(uint8_t *yuv, int stride, int t) \
+static void pfx ## _edge_filter_ ## suf(uint8_t *yuv, ptrdiff_t stride, \
+ int t) \
{ \
int pix2_inc = 2 * pix_inc; \
int i, v; \
diff --git a/libavcodec/vp56dsp.h b/libavcodec/vp56dsp.h
index 389d35901c..d52ee660db 100644
--- a/libavcodec/vp56dsp.h
+++ b/libavcodec/vp56dsp.h
@@ -21,18 +21,20 @@
#ifndef AVCODEC_VP56DSP_H
#define AVCODEC_VP56DSP_H
+#include <stddef.h>
#include <stdint.h>
+
#include "avcodec.h"
typedef struct VP56DSPContext {
- void (*edge_filter_hor)(uint8_t *yuv, int stride, int t);
- void (*edge_filter_ver)(uint8_t *yuv, int stride, int t);
+ void (*edge_filter_hor)(uint8_t *yuv, ptrdiff_t stride, int t);
+ void (*edge_filter_ver)(uint8_t *yuv, ptrdiff_t stride, int t);
- void (*vp6_filter_diag4)(uint8_t *dst, uint8_t *src, int stride,
+ void (*vp6_filter_diag4)(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
const int16_t *h_weights,const int16_t *v_weights);
} VP56DSPContext;
-void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, int stride,
+void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
const int16_t *h_weights, const int16_t *v_weights);
void ff_vp56dsp_init(VP56DSPContext *s, enum AVCodecID codec);
diff --git a/libavcodec/vp6.c b/libavcodec/vp6.c
index c48c2b8180..aa0d09effb 100644
--- a/libavcodec/vp6.c
+++ b/libavcodec/vp6.c
@@ -514,7 +514,7 @@ static void vp6_parse_coeff(VP56Context *s)
}
}
-static int vp6_block_variance(uint8_t *src, int stride)
+static int vp6_block_variance(uint8_t *src, ptrdiff_t stride)
{
int sum = 0, square_sum = 0;
int y, x;
@@ -529,7 +529,7 @@ static int vp6_block_variance(uint8_t *src, int stride)
return (16*square_sum - sum*sum) >> 8;
}
-static void vp6_filter_hv4(uint8_t *dst, uint8_t *src, int stride,
+static void vp6_filter_hv4(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
int delta, const int16_t *weights)
{
int x, y;
@@ -547,7 +547,7 @@ static void vp6_filter_hv4(uint8_t *dst, uint8_t *src, int stride,
}
static void vp6_filter_diag2(VP56Context *s, uint8_t *dst, uint8_t *src,
- int stride, int h_weight, int v_weight)
+ ptrdiff_t stride, int h_weight, int v_weight)
{
uint8_t *tmp = s->edge_emu_buffer+16;
s->h264chroma.put_h264_chroma_pixels_tab[0](tmp, src, stride, 9, h_weight, 0);
@@ -555,7 +555,7 @@ static void vp6_filter_diag2(VP56Context *s, uint8_t *dst, uint8_t *src,
}
static void vp6_filter(VP56Context *s, uint8_t *dst, uint8_t *src,
- int offset1, int offset2, int stride,
+ int offset1, int offset2, ptrdiff_t stride,
VP56mv mv, int mask, int select, int luma)
{
int filter4 = 0;
diff --git a/libavcodec/vp6dsp.c b/libavcodec/vp6dsp.c
index 54a96ed13a..c9968f28cf 100644
--- a/libavcodec/vp6dsp.c
+++ b/libavcodec/vp6dsp.c
@@ -27,7 +27,7 @@
#include "vp56dsp.h"
-void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, int stride,
+void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
const int16_t *h_weights, const int16_t *v_weights)
{
int x, y;
diff --git a/libavcodec/x86/vp6dsp.asm b/libavcodec/x86/vp6dsp.asm
index 80f8ca5f38..b667d38aea 100644
--- a/libavcodec/x86/vp6dsp.asm
+++ b/libavcodec/x86/vp6dsp.asm
@@ -115,7 +115,7 @@ SECTION .text
%endmacro
%macro vp6_filter_diag4 0
-; void ff_vp6_filter_diag4_<opt>(uint8_t *dst, uint8_t *src, int stride,
+; void ff_vp6_filter_diag4_<opt>(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
; const int16_t h_weight[4], const int16_t v_weights[4])
cglobal vp6_filter_diag4, 5, 7, 8
mov r5, rsp ; backup stack pointer
@@ -126,9 +126,6 @@ cglobal vp6_filter_diag4, 5, 7, 8
sub rsp, 8*15
movq m6, [pw_64]
%endif
-%if ARCH_X86_64
- movsxd r2, r2d
-%endif
sub r1, r2
diff --git a/libavcodec/x86/vp6dsp_init.c b/libavcodec/x86/vp6dsp_init.c
index 9bf41783c2..472e03439e 100644
--- a/libavcodec/x86/vp6dsp_init.c
+++ b/libavcodec/x86/vp6dsp_init.c
@@ -25,9 +25,9 @@
#include "libavutil/x86/cpu.h"
#include "libavcodec/vp56dsp.h"
-void ff_vp6_filter_diag4_mmx(uint8_t *dst, uint8_t *src, int stride,
+void ff_vp6_filter_diag4_mmx(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
const int16_t *h_weights,const int16_t *v_weights);
-void ff_vp6_filter_diag4_sse2(uint8_t *dst, uint8_t *src, int stride,
+void ff_vp6_filter_diag4_sse2(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
const int16_t *h_weights,const int16_t *v_weights);
av_cold void ff_vp6dsp_init_x86(VP56DSPContext* c, enum AVCodecID codec)