From patchwork Tue Feb 27 20:35:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Murmann X-Patchwork-Id: 7759 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.181.170 with SMTP id m39csp2978824jaj; Tue, 27 Feb 2018 12:41:38 -0800 (PST) X-Google-Smtp-Source: AG47ELuNOb+zvcOOJYaj7PuN1cWbR10Ei/z2uZ0qNV6C42KyfIYzNVW2raa4odgl7DAPvh5DANiM X-Received: by 10.28.234.8 with SMTP id i8mr13273114wmh.44.1519764098907; Tue, 27 Feb 2018 12:41:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519764098; cv=none; d=google.com; s=arc-20160816; b=yx9+r0E6dx5jBpzzX6jzVHZgYa+D07tWkR7Mzd0w4+bm+EcvubElavBnlRJoWKFyzY 3E6Mc9Bo284io3s2NRlI3lS5Sstg80Cf4SK5KYWq/9jrAnNWywWkkuqBXrvi6g/fCx8C k/Cu+yO/S7AaKGeOozLeZu/OHB1oDFyRg0xnT6Bulhrj0SciU9zHj7y9WOWVVagPPT9Y fcLNRgn/Ert79pVZJphaTxX8faHl10Y/q8INAIc4mDiCj+tYnwvY8YtDHIjW2PfBx1E7 x3q80KjBXuzaIbmpQQzCLDO9NOOAV+9YnQnqwjxEqUeXvsUpZcn5JcuqDwvydp5cnaWG qV4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:user-agent:date:message-id:to:from :dkim-signature:delivered-to:arc-authentication-results; bh=cPiItTyK/KTU2+1oFNtlfVYFyitJz+69+z5micuW3r4=; b=BYnN5XEdarwuJB9jqBJ+esBSI/r6rVYFKX4rZwbxmc3fBlf6STWxOMHdaV/erCIOif Ama+A2rZRJOv9DTxfdD5eeIqSrpcy+9nG+vgfIkN3ij5wagtOZ72aNnGHOrPJRRq+A8b wZtNP3aKEgtIceDYcC7e9xvoeazvI+awljDNctt2PtiyHlzOHiOvckdNQ9rgE892yCHb Y6ATiPKjBWxlotfMWfgGwibSXdG3pVYdxRX6016rv/dIuDj1GgKyTQ6cG8YHykGGOpSl UlFlgdvLzOYpkcZmKyjZsg8LWRpVbl5x5HYS6aXiYD8K1F+UICg/NlY4Oa0tAtoYCT5c vSBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@btf-de.20150623.gappssmtp.com header.s=20150623 header.b=bvaEudXC; 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 l81si176135wmi.129.2018.02.27.12.41.38; Tue, 27 Feb 2018 12:41:38 -0800 (PST) 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=@btf-de.20150623.gappssmtp.com header.s=20150623 header.b=bvaEudXC; 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 201D6689FBB; Tue, 27 Feb 2018 22:41:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 74EB2689B5B for ; Tue, 27 Feb 2018 22:41:25 +0200 (EET) Received: by mail-wr0-f194.google.com with SMTP id z12so153073wrg.4 for ; Tue, 27 Feb 2018 12:41:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btf-de.20150623.gappssmtp.com; s=20150623; h=from:subject:to:message-id:date:user-agent:mime-version :content-transfer-encoding; bh=x3yEQXIUxNo8j23f/NVRuGAqZH/WvXUP56yn59sjrCk=; b=bvaEudXC7xXgGj0G9hAeJo0hcGII/tz8kPO+8oeTi3cdF7vExSkjas4j7b6CJ7C9FU 08FPtcORHm69kO13P5I6AiM1+vTbPPDrYdJbDo+53CusCylMLEoxTXLMEvJwljW+5AXn Vz81uij3mo6c2L0clsopXT/PELT64a9euQE1qIH0NIJ7go74LSOhkLitmy53vMDEP6ZO wDOkJJjW24CeQzAZKk08kXj9eK3O1egsKzJVRcunWT+s4+c9vi6IVH1TuCdtkcQLE839 Bqq2/xFsw/lQoU0p8vGF7rxJhvFABLzVDo0pw5lE22EMp5dLwOfIaYHuoQOOEJ+WgMCq kPSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:message-id:date:user-agent :mime-version:content-transfer-encoding; bh=x3yEQXIUxNo8j23f/NVRuGAqZH/WvXUP56yn59sjrCk=; b=BISwBEyKxiNqWNXBgReFi/tsVpsO5varW4eq4zKep+QObttWw7EL8EfTgpwwQC1mcq yKcCEYRNsLiPQmkpwOUGMnvGR73ICsuW4JUucqQXYmh9pEkgrK9mLZ+bT6d2zB29Gp4d b+bFBFJBB+pRT4jPLShmvhpreujTZC/AYxCHR93gIsby7nRYbMiiAkPKNG9/kj2gEJzn HzYSmTLXrnNDYJGCmtkuF6lvcMGQvFgD99FUtzA2tWd0xdy+mDsK10XwHLrLCmk38tFK 1oY6duQUKbpFuVoQ7IK/UljuimNPeK3Cf+nQt+Z0Yfa5kHwKQSjulbyNs7pAPbXbD/re aTVQ== X-Gm-Message-State: APf1xPBXKhLYhHYVJf98B2+58Z6YvI6UN/p7VvUB/2MUFkU8EoyW7gK9 WXf/XBllahMzokIpXWPO7lvjVIkymqtrYr1ati6h7JHvui4kE9tDbZW6UJwgAhRtC1Ljnta/vQY tU3dhl1rtVB0Hl3gW X-Received: by 10.223.164.221 with SMTP id h29mr14921860wrb.259.1519763727657; Tue, 27 Feb 2018 12:35:27 -0800 (PST) Received: from [192.168.9.14] ([80.157.216.42]) by smtp.gmail.com with ESMTPSA id s2sm15885793wmf.0.2018.02.27.12.35.26 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Feb 2018 12:35:27 -0800 (PST) From: David Murmann X-Google-Original-From: David Murmann To: ffmpeg-devel@ffmpeg.org X-Forwarded-Message-Id: Message-ID: <6a39cc61-df29-b742-bc53-7629cb8af705@btf.de> Date: Tue, 27 Feb 2018 21:35:26 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/proresenc_anatoliy: change quantization scaling to floating point to utilize vectorization 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" Quantization scaling seems to be a slight bottleneck, this change allows the compiler to more easily vectorize the loop. This improves total encoding performance in my tests by about 10-20%. Signed-off-by: David Murmann --- libavcodec/proresenc_anatoliy.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libavcodec/proresenc_anatoliy.c b/libavcodec/proresenc_anatoliy.c index 0516066163..8b296f6f1b 100644 --- a/libavcodec/proresenc_anatoliy.c +++ b/libavcodec/proresenc_anatoliy.c @@ -232,14 +232,18 @@ static const uint8_t lev_to_cb[10] = { 0x04, 0x0A, 0x05, 0x06, 0x04, 0x28, static void encode_ac_coeffs(AVCodecContext *avctx, PutBitContext *pb, int16_t *in, int blocks_per_slice, int *qmat) { + int16_t block[64]; int prev_run = 4; int prev_level = 2; int run = 0, level, code, i, j; - for (i = 1; i < 64; i++) { - int indp = progressive_scan[i]; - for (j = 0; j < blocks_per_slice; j++) { - int val = QSCALE(qmat, indp, in[(j << 6) + indp]); + for (j = 0; j < blocks_per_slice; j++) { + for (i = 0; i < 64; i++) { + block[i] = (float)in[(j << 6) + i] / (float)qmat[i]; + } + + for (i = 1; i < 64; i++) { + int val = block[progressive_scan[i]]; if (val) { encode_codeword(pb, run, run_to_cb[FFMIN(prev_run, 15)]); -- 2.16.2