From patchwork Mon Jun 19 15:10:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Darnley X-Patchwork-Id: 4036 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.22.4 with SMTP id 4csp959105vsw; Mon, 19 Jun 2017 08:18:05 -0700 (PDT) X-Received: by 10.28.183.213 with SMTP id h204mr12382481wmf.56.1497885485464; Mon, 19 Jun 2017 08:18:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1497885485; cv=none; d=google.com; s=arc-20160816; b=q9DTqf1f08JYL8yDTc5U9qgdhWEqM+55VRNItySRMom52qru+l6nnBQM7ho/njZm38 c/r3QDYNSscST3FcIgJIzpaHFUwVSLKiTgdm7ZPiZGFHUkozNePuwLMXOQKmbY+0f7k6 2Ntzf7vI8AUD2q3wlMLf4yOCFrdUJsWDHmWX+SsQ52Dx4tpq4Cs8RVchuWoqro/Z4Wo5 QZTsX+ozZZOCauVohbcMY2lMsCctUqqaIzztmb/wHWNLpDNQwxs9qiZCLQ5MqwS2DiTs AAiy3bD+AKqd/rI/qUiN6X5WyxTnqdZK6BIXCgM2veuk3UK649k0uJpfX2Yf9IxBM2zZ ZRrQ== 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=AIcUsv9jaTvXGXLeLqqSm++aIXSMoiqki3doXEVR+KKxwA0CwDhckKm1yKmcmssBuC TYI94ya7cf2gATbvP0t1Bo8N4QF/ioqGiBcVx9S7sQZ/wrnN/42hhruJwnVi5ghEsLQi iP5iRkM46uaoEA3CxrbHm3QQ7Le+LXV2tqAHzWTK299YBq9LtmiJPbrzqm3GiO8B+Vbn gmZ2ZV3zz4vY/pmmy9R10Fa1QLdgyfD2U9UJ9hMdrDKLaZDgQKIcDYC/nh8MPw6qeyJO jOwc6SxQnQyTb1w2pujQMuyS8Ql1WaG+a+lUfBlF5ymSZvdxgoi+5/sfQTtlaRWpoH6M 4+dg== 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=0NzXTlQK; 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 194si6915307wmq.166.2017.06.19.08.18.05; Mon, 19 Jun 2017 08:18:05 -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=0NzXTlQK; 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 A6CC968A4EE; Mon, 19 Jun 2017 18:17:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f50.google.com (mail-wm0-f50.google.com [74.125.82.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3114D68A446 for ; Mon, 19 Jun 2017 18:17:35 +0300 (EEST) Received: by mail-wm0-f50.google.com with SMTP id d73so73488021wma.0 for ; Mon, 19 Jun 2017 08:17:40 -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=0NzXTlQKq04y/2XVJfObTdMtZ3tzmVtxJLaFiQZpoMcr4njvEjRarfmhc3HDtZsfLf btmdHIqN6CCZnxHT9cdZOqNSpUoYRoiaRQ+M/dq7HPSeg9vVUleVyoCfnJDg6AMXLxc/ Y5xlM/qKZShHNSSfMpj4TgoblFvFcRJvYkNs5CrjPel9uX2Zq+5wwTfDDmONMO5/HWCh +wPFTSAMs2evCQvtaNeUdCX3u0EKL1Blpj/DpV52sjceDZzg4Derc7ibdGRZ85UjChWb jiiMG9gmqlfxjEBqxzCsDLkB/hhh7hdjbRNzqGT6DOHbXoAGkbysbERe+C24eANcDQu+ 08eg== 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=Vfk227S9qF4Syqn8qbIZfmcDchcG761/SfX6NlXUyau4BL35K9/sQ2Nj7oxizAVuN9 pmQ+mMCMkUgzACpgImk6KFSOW6ynURCyfFLGil1hH2B5ap2+Ud0PwUsU/KK2OYFjilGB QIpnVTZrwopkStSqHUClZIUS4CVpMg1I14ulBhiZXiOhn7IJ/KIj6CEF2wjyOfn9KUnC k4huh6BTXEy11pivxlUUKvgWtgzR8fpV4ZYq9AIGJmI3dutJYrhK6yE1+cWzmLFFxrYg ytgBCRCk4xGUFs3rI3bRcR3VptwRzljrhGXf5WuqW/QvPCm9QZ+IxcoAOzL96cyycebp z53Q== X-Gm-Message-State: AKS2vOxo3x0OZEdjnBHAMBaJ4P1iF0yU+ftAdL/S4er3tfH6ttsrFS95 EvDxIpnqSzDyBp1v9n8= X-Received: by 10.28.35.196 with SMTP id j187mr2763854wmj.26.1497885459188; Mon, 19 Jun 2017 08:17:39 -0700 (PDT) Received: from Ifrit.systemlords.lan (d51a44418.access.telenet.be. [81.164.68.24]) by smtp.gmail.com with ESMTPSA id 6sm8059540wrg.61.2017.06.19.08.17.38 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 19 Jun 2017 08:17:38 -0700 (PDT) From: James Darnley To: FFmpeg development discussions and patches Date: Mon, 19 Jun 2017 17:10:55 +0200 Message-Id: <20170619151104.31273-3-jdarnley@obe.tv> X-Mailer: git-send-email 2.13.1 In-Reply-To: <20170619151104.31273-1-jdarnley@obe.tv> References: <20170619151104.31273-1-jdarnley@obe.tv> Subject: [FFmpeg-devel] [PATCH 02/11] 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;