From patchwork Wed Jun 21 13:46:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ronald S. Bultje" X-Patchwork-Id: 4070 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.22.4 with SMTP id 4csp1900207vsw; Wed, 21 Jun 2017 06:47:13 -0700 (PDT) X-Received: by 10.28.7.130 with SMTP id 124mr6426092wmh.89.1498052833396; Wed, 21 Jun 2017 06:47:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1498052833; cv=none; d=google.com; s=arc-20160816; b=B8LEYeVAm7nc2ALGqt+MoCLHxQLrE/BpTukvwyBf4KRMNdZ8ERlsCPGJKHV8igNRvK dmY8HtRJ2xCj+X3Tig+WT6c3pA5YPF00Iy7b1n/MDJ4HL6zvLL76Wkab9XQdnfGr6bhB eHOu/0/2GKlG7jOE9s9Wt/dGil0LSf1zkipi0my7u0nBsiY8Q0BUeTY1RvU3gR65FFn0 MHpzJqiH6rOJUJCL/S5/B6VRoxqGlq5sGNNs/q9tLBa5Cwv/VEqto51cCL/+hpv8RREa HtmwgwUb6lQ6MXcBWB++Mb8+wWGKeLbWYKfDVhrY4WwCfzrjUsCDHFZia3+pQb3nVOAJ vA0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=VoPGc/ENz64yWkcslKLF1+DS0YfN61bZyx+nIEjC91s=; b=PXjKI6TLTJFNTO5i87TcHS8krWRynzk/m+tpRtu5m27B4y4YpDNgCvl6iOai8m7cGe OMoEpmqoJqErbYlJ1h3jLYqWmpOl2bg5RHd8nIahBHDgG+/K+RN6yo0HwnQ/UfTjL0+6 q50umC7s/IDf1HD8o1J0zmZ4iguLFa7x6/PWe+YzmQfji4J9roFjqCuigXXXFeIj4qDF 1DPoO8JUlM+V/xnGkiUzy85nAI26FXJ2QVcHNaCDxZsxdU40LtfUSNkHOBbhdWMx4vRV 3fqLyLDQJcSmyivZ/jQDnjbt0B+ZrrWMX3rXejwRKJFatCEzwKJJaFnJndAYX2efmeRw Tf3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.b=FnmxrDGa; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s204si12409499wmf.68.2017.06.21.06.47.12; Wed, 21 Jun 2017 06:47: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=@gmail.com header.b=FnmxrDGa; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0A8A368A249; Wed, 21 Jun 2017 16:47:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1FB7B68A1B2 for ; Wed, 21 Jun 2017 16:46:57 +0300 (EEST) Received: by mail-qt0-f196.google.com with SMTP id c20so3295947qte.0 for ; Wed, 21 Jun 2017 06:47:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=+TMpGPMe7uNLwbLFL/zxCVLYwY2M0dSCBNfxdcpxCYk=; b=FnmxrDGaaocKA/mko6uBp3Yivp1oMJhFUgND0NmIBN+mfLy5upfm6CkdqZ9gjU22Ec 4/fqSEAnKuizOP9phNKn2KhHx7wc4gDrQX1hz+0XovfkZASqvYeM164NbATXLc4n8RXP JmBIevenGCcGjIwo2oTCdOacqM/AddNYyN74XsF1dmT1Fw+DxSDlqEh1XTvXn/4aEjZJ 0vTpgaa6Lj6Az3F6Igr/0LRqoOKJnK6xH7elrU+cGMJsw3OmLvcz6F7S6TsanNjCli7B vSb3Fdx/KuUWTfJfGB39fH0oZo1XAA2S+3GjGaPM81LUGMeIZCRsv/nZyA7HSywikNI/ LRjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=+TMpGPMe7uNLwbLFL/zxCVLYwY2M0dSCBNfxdcpxCYk=; b=S8M8AUSaZ7dnKBphh/Pg6rnOvJFaWEok23I+XpB9ynPo84Nn25M9a2400imXMcbybc ejVINk1m2cPq/IkC+irwH6tlybG1nkJOKTjiJw57QHCDQXEj8TyvvOIsq6PMO2x4ydmd osKt+jRFqk+DZh5tMVzLvAQXsGh5z33X4xfJGlUhbbmt78W6ivD8ufGMtEAvL4XsO1lp gAZ+yCH5nZl4t349ex6V9tFHQmobcjLZuSCw01Fz/pbtQMtgntbjjW4SHBXsKmoaNCR+ amh8QLvbK2xuOOpZ4aIrSgU005PqkLqdFpDQOrbI5xa26I/SwJf8+/k8xJ/gU/6x6+Za 5BNA== X-Gm-Message-State: AKS2vOx3TGkf9423aMqKjNC0uUqDdNKccGpnLTOWxchczVVMHRPzXzI+ 1ujdZWpPriIXFJpg+SQ= X-Received: by 10.237.38.193 with SMTP id q59mr38438589qtd.69.1498052821595; Wed, 21 Jun 2017 06:47:01 -0700 (PDT) Received: from localhost.localdomain ([65.206.95.146]) by smtp.gmail.com with ESMTPSA id w72sm2002444qka.63.2017.06.21.06.47.00 (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 21 Jun 2017 06:47:01 -0700 (PDT) From: "Ronald S. Bultje" To: ffmpeg-devel@ffmpeg.org Date: Wed, 21 Jun 2017 09:46:58 -0400 Message-Id: <1498052818-62867-1-git-send-email-rsbultje@gmail.com> X-Mailer: git-send-email 2.8.1 Subject: [FFmpeg-devel] [PATCH] vf_spp: only assign function pointers if permutation matches expectations. 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 Cc: "Ronald S. Bultje" MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavfilter/x86/vf_spp.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/libavfilter/x86/vf_spp.c b/libavfilter/x86/vf_spp.c index 45a9eb0..8e3c820 100644 --- a/libavfilter/x86/vf_spp.c +++ b/libavfilter/x86/vf_spp.c @@ -217,6 +217,17 @@ static void store_slice_mmx(uint8_t *dst, const int16_t *src, #endif /* HAVE_MMX_INLINE */ +static const uint8_t simple_mmx_permutation[64] = { + 0x00, 0x08, 0x04, 0x09, 0x01, 0x0C, 0x05, 0x0D, + 0x10, 0x18, 0x14, 0x19, 0x11, 0x1C, 0x15, 0x1D, + 0x20, 0x28, 0x24, 0x29, 0x21, 0x2C, 0x25, 0x2D, + 0x12, 0x1A, 0x16, 0x1B, 0x13, 0x1E, 0x17, 0x1F, + 0x02, 0x0A, 0x06, 0x0B, 0x03, 0x0E, 0x07, 0x0F, + 0x30, 0x38, 0x34, 0x39, 0x31, 0x3C, 0x35, 0x3D, + 0x22, 0x2A, 0x26, 0x2B, 0x23, 0x2E, 0x27, 0x2F, + 0x32, 0x3A, 0x36, 0x3B, 0x33, 0x3E, 0x37, 0x3F, +}; + av_cold void ff_spp_init_x86(SPPContext *s) { #if HAVE_MMX_INLINE @@ -226,7 +237,9 @@ av_cold void ff_spp_init_x86(SPPContext *s) int64_t bps; s->store_slice = store_slice_mmx; av_opt_get_int(s->dct, "bits_per_sample", 0, &bps); - if (bps <= 8) { + if (bps <= 8 && + !memcmp(s->dct->idct_permutation, simple_mmx_permutation, + sizeof(simple_mmx_permutation))) { switch (s->mode) { case 0: s->requantize = hardthresh_mmx; break; case 1: s->requantize = softthresh_mmx; break;