From patchwork Tue Mar 29 20:51:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Martin_Storsj=C3=B6?= X-Patchwork-Id: 35048 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp476661pzb; Tue, 29 Mar 2022 13:51:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz9cjZ19/z7qsTESR89BgJba3Ky0sfTf2QmmAzR4TBTXZOggBVOetGPPDgWqbMKe57CCoD3 X-Received: by 2002:a17:907:1ca7:b0:6e0:346:ca6 with SMTP id nb39-20020a1709071ca700b006e003460ca6mr35721310ejc.311.1648587073578; Tue, 29 Mar 2022 13:51:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648587073; cv=none; d=google.com; s=arc-20160816; b=qf17wAhRBoTx8ei3m4VpGJcdHyBjgNBJIuPZ6W+Tbty8iXP9ZdwT4tG4cm9rJsoCR5 JImQGZxL3QVH8nJfphAf3J9PWf+yD+91+J+klwltnqcQa2wvrIm/KDzfIO9Z4nk3octd 9pdzkAqf8LtveglhIaK5YTGFsa9/y091+GYdtU5p7N3zk1tW8VBiQAL3C3Btxl2+w85v NDvt6IhsU/a7giYG35uLuyxAuBKHsaJtxUxGBKqRRiiecjmlHlmES3KffqDDxqkC/ItG U266BoftLLKzRL1a3o1lqy8kWIUta7DEmw/Zq13oziRN40Qosbv+kdc59EloQKASk7hO yU1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=dFDnfVxlIAMCqj/yGAuZ2njLE/HOr4qOJ0X/zWMUbRQ=; b=iCpgDH4bm1u0/MzO0C8t066TIlNsXVK9xa9hLIXbMTVmTig2PH/ZxeBpdevo44JsuM +78P+VQR7GAyA4tGZ3reKMdfrwvdLEX1NBJNfwWEZr1JUu45Sj+pkVzp3DV4wCWYrrgZ fhz/HJ6D/PygXlkPCva6kZ3CFV+TVW/sySbr65fofoag5ulAX0w44MpSPHxXotJD/x4g HFqtGsNi5kX/ntIT9DHFYv8yIuPitxiXHVSHiPlinGpXTtwkIlwzMlA7P3WuQD2Zvb2f 9LpLKvw8IGetwHCwsvODaapMoZhskwx/iE3OF9rfvpYxAdPuuSTKKjs5nWPmzg2DSXBY uRYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@martin-st.20210112.gappssmtp.com header.s=20210112 header.b=ii+RLqq9; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gb6-20020a170907960600b006df76385cd5si21633563ejc.373.2022.03.29.13.51.12; Tue, 29 Mar 2022 13:51:13 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@martin-st.20210112.gappssmtp.com header.s=20210112 header.b=ii+RLqq9; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3D03A68B164; Tue, 29 Mar 2022 23:51:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6EB0668A6F6 for ; Tue, 29 Mar 2022 23:51:03 +0300 (EEST) Received: by mail-lj1-f170.google.com with SMTP id a30so17594543ljq.13 for ; Tue, 29 Mar 2022 13:51:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WTfGoPlV9bTTIPnPoZhukSmYphRdwtJqoPxtNVuA4Iw=; b=ii+RLqq9aXm3PFjyPzkRvgkwdnTDOZ8zNgHxAJwbXHMsA4H9XTicah+EOKNc3gbdeU U4UPp17/TML9g2xuZ4YHsr9rGVWKNVvLSPQlBLXbsUmZnyr4UHgA/CZ2P/yDrUlUHSBc v1LMLk/r0iuRu/nxx3PEJrTJzK9YwPAfLRsOVadWqFCNUOL8Tk5bp3iE+6qyyAJnyrgI 9UwZw/+mCoeKuUr3mfeoUNFJ8m6TE3+cpBks5SAbuB0L27Iq3RjBfmL1gx0WMgYCm6iP aDWDkCx+qA6O6sWg68aoIS/fq7vvLbCq7a9E4Fhphh2BiUMdDNNAohlLxpBlmN3U4gOT EVNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WTfGoPlV9bTTIPnPoZhukSmYphRdwtJqoPxtNVuA4Iw=; b=0iaXhAmsnU3t4pUCau6jrGOiCIV/WSjdhBk5h36H+CsNDKVoag3xU2q3rotf1DL24s tekupAmbmOydIg/3CTUKGAXMlIEd1DaDjLTkdJ321WhopX1Qe3m6PgHq2twDdBTJJJLz xDRRZ/i89A8jXKaFls7aHpwSbLDOU6SsIJEPM53pSUTZ5dZLxsVNwP0+Fntav2c8Dh+R 1zRyPGFCXl2VA6ydPan/P4c5zzWR/rIpvPFGf+zqYD2/FEgPPBEou7Dhk8Dy57TVRc5h 4hgog/3zbT57+Vz0Mr/+tVbUOWnmEwxFKbA57sG/2GH4EK9Ak29BNU1yjcmzqtFAIKAF bHAw== X-Gm-Message-State: AOAM530eIJ/V3mxUFoRRrwqtOKEfx8Vq5IZ82a3g8O7cEFiBTBjAzCGy 6ofZb922J7MhNoparfXr3x9ypLgpwo3b5K5J X-Received: by 2002:a2e:a239:0:b0:247:ee8e:b891 with SMTP id i25-20020a2ea239000000b00247ee8eb891mr4169990ljm.385.1648587062653; Tue, 29 Mar 2022 13:51:02 -0700 (PDT) Received: from localhost.localdomain (dsl-tkubng21-58c01c-243.dhcp.inet.fi. [88.192.28.243]) by smtp.gmail.com with ESMTPSA id p41-20020a05651213a900b00443e2c39fc4sm2105220lfa.111.2022.03.29.13.51.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Mar 2022 13:51:02 -0700 (PDT) From: =?utf-8?q?Martin_Storsj=C3=B6?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 29 Mar 2022 23:51:01 +0300 Message-Id: <20220329205101.2680155-1-martin@martin.st> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] vc1dsp: Change remaining stride parameters to ptrdiff_t X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: =?utf-8?q?Martin_Storsj=C3=B6?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: evjC+br92QOw The existing x86 assembly for loop filters uses the stride as a full register without clearing/sign extending the upper half of the registers on x86_64. This avoids crashes if the caller would have passed nonzero bits in the previously undefined upper 32 bits of the parameters. Signed-off-by: Martin Storsjö --- Updated function signatures in the mips code too, updated the left_stride/right_stride parameters in the vc1_h_s_overlap function too, updated the comments in the x86 assembly. --- libavcodec/mips/vc1dsp_mips.h | 20 ++++++++++---------- libavcodec/mips/vc1dsp_mmi.c | 18 +++++++++--------- libavcodec/vc1dsp.c | 22 +++++++++++----------- libavcodec/vc1dsp.h | 18 +++++++++--------- libavcodec/x86/vc1dsp_init.c | 16 ++++++++-------- libavcodec/x86/vc1dsp_loopfilter.asm | 22 +++++++++++----------- 6 files changed, 58 insertions(+), 58 deletions(-) diff --git a/libavcodec/mips/vc1dsp_mips.h b/libavcodec/mips/vc1dsp_mips.h index 5897daea8c..356153cab6 100644 --- a/libavcodec/mips/vc1dsp_mips.h +++ b/libavcodec/mips/vc1dsp_mips.h @@ -166,17 +166,17 @@ void ff_vc1_inv_trans_4x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *blo void ff_vc1_inv_trans_8x4_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block); void ff_vc1_inv_trans_8x8_dc_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block); -void ff_vc1_v_overlap_mmi(uint8_t *src, int stride); -void ff_vc1_h_overlap_mmi(uint8_t *src, int stride); +void ff_vc1_v_overlap_mmi(uint8_t *src, ptrdiff_t stride); +void ff_vc1_h_overlap_mmi(uint8_t *src, ptrdiff_t stride); void ff_vc1_v_s_overlap_mmi(int16_t *top, int16_t *bottom); -void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags); - -void ff_vc1_v_loop_filter4_mmi(uint8_t *src, int stride, int pq); -void ff_vc1_h_loop_filter4_mmi(uint8_t *src, int stride, int pq); -void ff_vc1_v_loop_filter8_mmi(uint8_t *src, int stride, int pq); -void ff_vc1_h_loop_filter8_mmi(uint8_t *src, int stride, int pq); -void ff_vc1_v_loop_filter16_mmi(uint8_t *src, int stride, int pq); -void ff_vc1_h_loop_filter16_mmi(uint8_t *src, int stride, int pq); +void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, ptrdiff_t left_stride, ptrdiff_t right_stride, int flags); + +void ff_vc1_v_loop_filter4_mmi(uint8_t *src, ptrdiff_t stride, int pq); +void ff_vc1_h_loop_filter4_mmi(uint8_t *src, ptrdiff_t stride, int pq); +void ff_vc1_v_loop_filter8_mmi(uint8_t *src, ptrdiff_t stride, int pq); +void ff_vc1_h_loop_filter8_mmi(uint8_t *src, ptrdiff_t stride, int pq); +void ff_vc1_v_loop_filter16_mmi(uint8_t *src, ptrdiff_t stride, int pq); +void ff_vc1_h_loop_filter16_mmi(uint8_t *src, ptrdiff_t stride, int pq); void ff_put_no_rnd_vc1_chroma_mc8_mmi(uint8_t *dst /* align 8 */, uint8_t *src /* align 1 */, diff --git a/libavcodec/mips/vc1dsp_mmi.c b/libavcodec/mips/vc1dsp_mmi.c index 27a3c813da..278aa566bc 100644 --- a/libavcodec/mips/vc1dsp_mmi.c +++ b/libavcodec/mips/vc1dsp_mmi.c @@ -1375,7 +1375,7 @@ void ff_vc1_inv_trans_4x4_mmi(uint8_t *dest, ptrdiff_t linesize, int16_t *block) } /* Apply overlap transform to horizontal edge */ -void ff_vc1_h_overlap_mmi(uint8_t *src, int stride) +void ff_vc1_h_overlap_mmi(uint8_t *src, ptrdiff_t stride) { int i; int a, b, c, d; @@ -1398,7 +1398,7 @@ void ff_vc1_h_overlap_mmi(uint8_t *src, int stride) } } -void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags) +void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, ptrdiff_t left_stride, ptrdiff_t right_stride, int flags) { int i; int a, b, c, d; @@ -1428,7 +1428,7 @@ void ff_vc1_h_s_overlap_mmi(int16_t *left, int16_t *right, int left_stride, int } /* Apply overlap transform to vertical edge */ -void ff_vc1_v_overlap_mmi(uint8_t *src, int stride) +void ff_vc1_v_overlap_mmi(uint8_t *src, ptrdiff_t stride) { int i; int a, b, c, d; @@ -1551,32 +1551,32 @@ static inline void vc1_loop_filter(uint8_t *src, int step, int stride, } } -void ff_vc1_v_loop_filter4_mmi(uint8_t *src, int stride, int pq) +void ff_vc1_v_loop_filter4_mmi(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, 1, stride, 4, pq); } -void ff_vc1_h_loop_filter4_mmi(uint8_t *src, int stride, int pq) +void ff_vc1_h_loop_filter4_mmi(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, stride, 1, 4, pq); } -void ff_vc1_v_loop_filter8_mmi(uint8_t *src, int stride, int pq) +void ff_vc1_v_loop_filter8_mmi(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, 1, stride, 8, pq); } -void ff_vc1_h_loop_filter8_mmi(uint8_t *src, int stride, int pq) +void ff_vc1_h_loop_filter8_mmi(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, stride, 1, 8, pq); } -void ff_vc1_v_loop_filter16_mmi(uint8_t *src, int stride, int pq) +void ff_vc1_v_loop_filter16_mmi(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, 1, stride, 16, pq); } -void ff_vc1_h_loop_filter16_mmi(uint8_t *src, int stride, int pq) +void ff_vc1_h_loop_filter16_mmi(uint8_t *src, ptrdiff_t stride, int pq) { vc1_loop_filter(src, stride, 1, 16, pq); } diff --git a/libavcodec/vc1dsp.c b/libavcodec/vc1dsp.c index a29b91bf3d..f651d7d461 100644 --- a/libavcodec/vc1dsp.c +++ b/libavcodec/vc1dsp.c @@ -36,7 +36,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; @@ -60,7 +60,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; @@ -109,7 +109,7 @@ static void vc1_v_s_overlap_c(int16_t *top, int16_t *bottom) } } -static void vc1_h_s_overlap_c(int16_t *left, int16_t *right, int left_stride, int right_stride, int flags) +static void vc1_h_s_overlap_c(int16_t *left, int16_t *right, ptrdiff_t left_stride, ptrdiff_t right_stride, int flags) { int i; int a, b, c, d; @@ -146,7 +146,7 @@ static void vc1_h_s_overlap_c(int16_t *left, int16_t *right, int left_stride, in * @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; @@ -195,7 +195,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; @@ -212,32 +212,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); } diff --git a/libavcodec/vc1dsp.h b/libavcodec/vc1dsp.h index c6443acb20..fe60025a2a 100644 --- a/libavcodec/vc1dsp.h +++ b/libavcodec/vc1dsp.h @@ -42,16 +42,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, int left_stride, int right_stride, int flags); - 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_h_s_overlap)(int16_t *left, int16_t *right, ptrdiff_t left_stride, ptrdiff_t right_stride, int flags); + 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_init.c b/libavcodec/x86/vc1dsp_init.c index 8e0c284cc0..2fbf0b3a74 100644 --- a/libavcodec/x86/vc1dsp_init.c +++ b/libavcodec/x86/vc1dsp_init.c @@ -34,18 +34,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); \ @@ -56,9 +56,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_loopfilter.asm b/libavcodec/x86/vc1dsp_loopfilter.asm index fd33bd13dc..74360949dc 100644 --- a/libavcodec/x86/vc1dsp_loopfilter.asm +++ b/libavcodec/x86/vc1dsp_loopfilter.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