From patchwork Sun Jan 13 20:02:47 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Ross X-Patchwork-Id: 11729 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 205E944D9D3 for ; Sun, 13 Jan 2019 22:03:08 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 44EF368A599; Sun, 13 Jan 2019 22:02:56 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mx.sdf.org (ol.sdf.org [205.166.94.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BDE4B68A4F7 for ; Sun, 13 Jan 2019 22:02:49 +0200 (EET) Received: from ab67b4ac11d956a73d36cdc02c370879 (pa49-199-107-96.pa.vic.optusnet.com.au [49.199.107.96]) (authenticated (128 bits)) by mx.sdf.org (8.15.2/8.14.5) with ESMTPSA id x0DK2pjZ003330 (using TLSv1.2 with cipher AES256-GCM-SHA384 (256 bits) verified NO) for ; Sun, 13 Jan 2019 20:02:59 GMT Authentication-Results: mx.sdf.org; dkim=none Date: Mon, 14 Jan 2019 07:02:47 +1100 From: Peter Ross To: ffmpeg-devel@ffmpeg.org Message-ID: <1b353c0b4af069072a12974e1d273171138590f3.1547408762.git.pross@xvid.org> References: MIME-Version: 1.0 In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) Subject: [FFmpeg-devel] [PATCH 4/6] avcodec/vp6: use ff_vp4_[hv]_loop_filter_12_c X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavcodec/vp56.c | 10 ++++++++++ libavcodec/vp56.h | 1 + libavcodec/vp56dsp.c | 19 ------------------- 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c index 27b4b8b944..c5c5a9fb65 100644 --- a/libavcodec/vp56.c +++ b/libavcodec/vp56.c @@ -33,6 +33,8 @@ void ff_vp56_init_dequant(VP56Context *s, int quantizer) { + if (s->quantizer != quantizer) + ff_vp3dsp_set_bounding_values(s->bounding_values_array, ff_vp56_filter_threshold[quantizer]); s->quantizer = quantizer; s->dequant_dc = ff_vp56_dc_dequant[quantizer] << 2; s->dequant_ac = ff_vp56_ac_dequant[quantizer] << 2; @@ -320,9 +322,17 @@ static void vp56_add_predictors_dc(VP56Context *s, VP56Frame ref_frame) static void vp56_deblock_filter(VP56Context *s, uint8_t *yuv, ptrdiff_t stride, int dx, int dy) { + if (s->avctx->codec->id == AV_CODEC_ID_VP5) { int t = ff_vp56_filter_threshold[s->quantizer]; if (dx) s->vp56dsp.edge_filter_hor(yuv + 10-dx , stride, t); if (dy) s->vp56dsp.edge_filter_ver(yuv + stride*(10-dy), stride, t); + } else { + int * bounding_values = s->bounding_values_array + 127; + if (dx) + ff_vp4_h_loop_filter_12_c(yuv + 10-dx, stride, bounding_values); + if (dy) + ff_vp4_v_loop_filter_12_c(yuv + stride*(10-dy), stride, bounding_values); + } } static void vp56_mc(VP56Context *s, int b, int plane, uint8_t *src, diff --git a/libavcodec/vp56.h b/libavcodec/vp56.h index 70e1d38a83..9b3036895c 100644 --- a/libavcodec/vp56.h +++ b/libavcodec/vp56.h @@ -170,6 +170,7 @@ struct vp56_context { int filter_mode; int max_vector_length; int sample_variance_threshold; + DECLARE_ALIGNED(8, int, bounding_values_array)[256]; uint8_t coeff_ctx[4][64]; /* used in vp5 only */ uint8_t coeff_ctx_last[4]; /* used in vp5 only */ diff --git a/libavcodec/vp56dsp.c b/libavcodec/vp56dsp.c index 9f299dc60f..e8d93d6680 100644 --- a/libavcodec/vp56dsp.c +++ b/libavcodec/vp56dsp.c @@ -72,27 +72,8 @@ av_cold void ff_vp5dsp_init(VP56DSPContext *s) #endif /* CONFIG_VP5_DECODER */ #if CONFIG_VP6_DECODER -static int vp6_adjust(int v, int t) -{ - int V = v, s = v >> 31; - V ^= s; - V -= s; - if (V-t-1 >= (unsigned)(t-1)) - return v; - V = 2*t - V; - V += s; - V ^= s; - return V; -} - -VP56_EDGE_FILTER(vp6, hor, 1, stride) -VP56_EDGE_FILTER(vp6, ver, stride, 1) - av_cold void ff_vp6dsp_init(VP56DSPContext *s) { - s->edge_filter_hor = vp6_edge_filter_hor; - s->edge_filter_ver = vp6_edge_filter_ver; - s->vp6_filter_diag4 = ff_vp6_filter_diag4_c; if (ARCH_ARM)