Module: libav Branch: release/12 Commit: bee1bb6dcc5d35b1c8546c1fb48b192d8ab013e3
Author: Diego Biurrun <di...@biurrun.de> Committer: Sean McGovern <gsean...@gmail.com> Date: Tue Aug 23 23:23:45 2016 +0200 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. --- libavcodec/arm/vp6dsp_init_arm.c | 4 ++-- libavcodec/vp56.h | 4 ++-- libavcodec/vp56dsp.c | 3 ++- libavcodec/vp56dsp.h | 10 ++++++---- libavcodec/vp6.c | 8 ++++---- libavcodec/vp6dsp.c | 2 +- libavcodec/x86/vp6dsp.asm | 5 +---- libavcodec/x86/vp6dsp_init.c | 4 ++-- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/libavcodec/arm/vp6dsp_init_arm.c b/libavcodec/arm/vp6dsp_init_arm.c index 4ec41ed..235b0b6 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 f2ed770..52fe318 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 5e09d24..297534b 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 389d359..d52ee66 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 c48c2b8..aa0d09e 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 54a96ed..c9968f2 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 80f8ca5..b667d38 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 9bf4178..472e034 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) _______________________________________________ libav-commits mailing list libav-commits@libav.org https://lists.libav.org/mailman/listinfo/libav-commits