From patchwork Fri Jun 16 13:53:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Darnley X-Patchwork-Id: 3999 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.22.4 with SMTP id 4csp1300096vsw; Fri, 16 Jun 2017 07:00:19 -0700 (PDT) X-Received: by 10.28.66.196 with SMTP id k65mr7119364wmi.55.1497621619875; Fri, 16 Jun 2017 07:00:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497621619; cv=none; d=google.com; s=arc-20160816; b=0HUK1tnEyqBN99cUA2XT+Y4hVQFQxOzGmJ4pVkSWqw0iS5W4RVH5mbco5sR2Tr5eJh K7/MYSeETMh334gBaw9bqOTgkkoCkHwtUgpWNrJxIhcp07/8rBU8S07Nd5a+cTNXoELw UVAi1/5JvHhz79BCT7jZgZS0oV4g3gh/YHhHO8u9lWPCVbuWKceVu0rvlFSlu+Di3AsY FNr90cVVz1Hlch+eisfGkaEIXm9x1xjUJzutjbHSIzhmxUhe5VitBZi5HJR9my1fwqP1 ct1/689U9bkvFXMpJrAAcYh1rqPATHKp3DQ2vR/owH93cYDmnjwF1ppeLQRrFxdrg3K7 lM1w== 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:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=Hi9M+6EVfn6Xb1FAcs+SMf5HYt72W+RSYQEhJnedSxQ=; b=RxTcMC9zStKtnbnCao1a/oFKiZbYModiIXj2UE60amPVXsNkW62nVeLRNfdFfzqMxn FVdYzIUgREJk+o6ZZtuRFz780LJwruOGOMI4UUD/+i38QYdUPQaZPCbS3YsyPRNwVAte tsGghsNUjHeAbly9ReImKxDksMjirg+wNgJI7YLwp3Ks81pGw2nsD0P9HhtLque7mqIr sJGFeLmc5bDXFRYDawMgGdt7RxHUObxPUlJhdb6v5gsp0xbvTjfsy109QEBSlyAXUMeX otiN+q07m3qN5AHbJ8kEe6FA7z201tu4LKcGr620rSW4Uqd9DQ8bmaaurmnVFPfHFe57 9/cQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@ob-encoder-com.20150623.gappssmtp.com header.b=JBJA4R8x; 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 r99si2556213wrb.381.2017.06.16.07.00.18; Fri, 16 Jun 2017 07:00:19 -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=@ob-encoder-com.20150623.gappssmtp.com header.b=JBJA4R8x; 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 52FDC68A1F2; Fri, 16 Jun 2017 17:00:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD67768A166 for ; Fri, 16 Jun 2017 16:59:56 +0300 (EEST) Received: by mail-wm0-f67.google.com with SMTP id 70so5202966wme.1 for ; Fri, 16 Jun 2017 07:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ob-encoder-com.20150623.gappssmtp.com; s=20150623; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=oGMwhSsT/nZketpejZjbzR6Nr3cobd387gl6Yu0xQtM=; b=JBJA4R8x9cta6STMhgilkNoJBToUNfLEF5fDQ53TFJDIcvql7MihfIrg9UqWsDYrw/ X7XNr8YuWQfxAs3930xR+/QZHn3mRrJZYQQ4QxGwMVpq0A2BUA/1O9QxXlqpSfbd/HCr ODLQWB7A6lp87LzbYwXOyTXv9ACxiVBZ2pFt5fla/GkTXGcJ2Qgg87Qu4tLdLNA+K2m3 kewXDnFVDUe9lNmqKpKFn4bMwUr8tbuB9GtoPiNn1c9W7c7BvRvju2XTyihkjoG+I17y MlQ0d2mXjjEBxgHYkfo95FSktZ5dlPe+A2Q+3C+p3sF1mvvls/5EoYta69SApGPnHmot PghQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=oGMwhSsT/nZketpejZjbzR6Nr3cobd387gl6Yu0xQtM=; b=FNqHQrwNrcoe+VTmNMOOWLrrmf9so/r6s5r3aHQgAZFlWaWldTEi0X3OYzaaBr4kFT ssObgpm1GI42cDyU721kPAe/69mNX15qch8tlh6Dws1A7LBOAxSbPHZsQ6bdJ6aNyt7q M5fBJ7LJ5ny5BbK+jpBjng8Sg97FQX7gLmUmhLrbplbpg3FvzxJG1g0BqYCViQuGyCL3 j0v0O+MXgC9QjNeMFZZSzx2Z8xEtph2+ANPsg3Fz3mSGzS5QekiIfUgcY6pKCYbGQgBT s/1Hgss4KgIBpA4roUo1fpAILol963XutSwSOVPgHxbC69a8cpHpXKkQLzbKaE39FqoS sbxQ== X-Gm-Message-State: AKS2vOyW6gWo0PMKC4Uz1lCEjxaxGhA8qt2GoxVQgZbkwHkDihTjDXPC YcfMoBqgO8CMVLdk4Z8= X-Received: by 10.80.168.102 with SMTP id j93mr7779359edc.32.1497621599678; Fri, 16 Jun 2017 06:59:59 -0700 (PDT) Received: from Ifrit.systemlords.lan (d51a44418.access.telenet.be. [81.164.68.24]) by smtp.gmail.com with ESMTPSA id 4sm1080918eds.48.2017.06.16.06.59.59 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 16 Jun 2017 06:59:59 -0700 (PDT) From: James Darnley To: FFmpeg development discussions and patches Date: Fri, 16 Jun 2017 15:53:28 +0200 Message-Id: <20170616135328.14495-2-jdarnley@obe.tv> X-Mailer: git-send-email 2.13.1 In-Reply-To: <20170616135328.14495-1-jdarnley@obe.tv> References: <20170616135328.14495-1-jdarnley@obe.tv> Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/x86/mpegenc: support transpose permuation type 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- libavcodec/x86/mpegvideoenc_template.c | 47 +++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/libavcodec/x86/mpegvideoenc_template.c b/libavcodec/x86/mpegvideoenc_template.c index 3ce72e1367..1201be514b 100644 --- a/libavcodec/x86/mpegvideoenc_template.c +++ b/libavcodec/x86/mpegvideoenc_template.c @@ -366,12 +366,57 @@ static int RENAME(dct_quantize)(MpegEncContext *s, block[0x3D] = temp_block[0x3D]; block[0x36] = temp_block[0x36]; block[0x2F] = temp_block[0x2F]; block[0x37] = temp_block[0x37]; block[0x3E] = temp_block[0x3E]; block[0x3F] = temp_block[0x3F]; + } else if (s->idsp.perm_type == FF_IDCT_PERM_TRANSPOSE) { + if(last_non_zero_p1 <= 1) goto end; + block[0x08] = temp_block[0x01]; + block[0x01] = temp_block[0x08]; block[0x02] = temp_block[0x10]; + if(last_non_zero_p1 <= 4) goto end; + block[0x09] = temp_block[0x09]; block[0x10] = temp_block[0x02]; + block[0x18] = temp_block[0x03]; + if(last_non_zero_p1 <= 7) goto end; + block[0x11] = temp_block[0x0A]; block[0x0A] = temp_block[0x11]; + block[0x03] = temp_block[0x18]; block[0x04] = temp_block[0x20]; + if(last_non_zero_p1 <= 11) goto end; + block[0x0B] = temp_block[0x19]; + block[0x12] = temp_block[0x12]; block[0x19] = temp_block[0x0B]; + block[0x20] = temp_block[0x04]; block[0x28] = temp_block[0x05]; + if(last_non_zero_p1 <= 16) goto end; + block[0x21] = temp_block[0x0C]; block[0x1A] = temp_block[0x13]; + block[0x13] = temp_block[0x1A]; block[0x0C] = temp_block[0x21]; + block[0x05] = temp_block[0x28]; block[0x06] = temp_block[0x30]; + block[0x0D] = temp_block[0x29]; block[0x14] = temp_block[0x22]; + if(last_non_zero_p1 <= 24) goto end; + block[0x1B] = temp_block[0x1B]; block[0x22] = temp_block[0x14]; + block[0x29] = temp_block[0x0D]; block[0x30] = temp_block[0x06]; + block[0x38] = temp_block[0x07]; block[0x31] = temp_block[0x0E]; + block[0x2A] = temp_block[0x15]; block[0x23] = temp_block[0x1C]; + if(last_non_zero_p1 <= 32) goto end; + block[0x1C] = temp_block[0x23]; block[0x15] = temp_block[0x2A]; + block[0x0E] = temp_block[0x31]; block[0x07] = temp_block[0x38]; + block[0x0F] = temp_block[0x39]; block[0x16] = temp_block[0x32]; + block[0x1D] = temp_block[0x2B]; block[0x24] = temp_block[0x24]; + if(last_non_zero_p1 <= 40) goto end; + block[0x2B] = temp_block[0x1D]; block[0x32] = temp_block[0x16]; + block[0x39] = temp_block[0x0F]; block[0x3A] = temp_block[0x17]; + block[0x33] = temp_block[0x1E]; block[0x2C] = temp_block[0x25]; + block[0x25] = temp_block[0x2C]; block[0x1E] = temp_block[0x33]; + if(last_non_zero_p1 <= 48) goto end; + block[0x17] = temp_block[0x3A]; block[0x1F] = temp_block[0x3B]; + block[0x26] = temp_block[0x34]; block[0x2D] = temp_block[0x2D]; + block[0x34] = temp_block[0x26]; block[0x3B] = temp_block[0x1F]; + block[0x3C] = temp_block[0x27]; block[0x35] = temp_block[0x2E]; + if(last_non_zero_p1 <= 56) goto end; + block[0x2E] = temp_block[0x35]; block[0x27] = temp_block[0x3C]; + block[0x2F] = temp_block[0x3D]; block[0x36] = temp_block[0x36]; + block[0x3D] = temp_block[0x2F]; block[0x3E] = temp_block[0x37]; + block[0x37] = temp_block[0x3E]; block[0x3F] = temp_block[0x3F]; } else { av_log(s, AV_LOG_DEBUG, "s->idsp.perm_type: %d\n", (int)s->idsp.perm_type); av_assert0(s->idsp.perm_type == FF_IDCT_PERM_NONE || s->idsp.perm_type == FF_IDCT_PERM_LIBMPEG2 || - s->idsp.perm_type == FF_IDCT_PERM_SIMPLE); + s->idsp.perm_type == FF_IDCT_PERM_SIMPLE || + s->idsp.perm_type == FF_IDCT_PERM_TRANSPOSE); } end: return last_non_zero_p1 - 1;