From patchwork Mon Oct 9 23:53:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ivan Kalvachev X-Patchwork-Id: 5509 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.90 with SMTP id m26csp3213809jah; Mon, 9 Oct 2017 16:53:58 -0700 (PDT) X-Received: by 10.223.156.139 with SMTP id d11mr10511471wre.214.1507593238410; Mon, 09 Oct 2017 16:53:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507593238; cv=none; d=google.com; s=arc-20160816; b=rhm9ZxI0LTUpjE25cEFMk4MjEAGBm/MoW0+3ZVVTOTtZ9UMJjCjNThxA3NIwhR2Tc+ zqGWQRHiheqkSPTDQmFivG8iIXu8W7AgUbiQaxX8t+ZlE/Xl2yd9WityqaWiV9GusyUB awVIOqfrnJupnIOpwV07HkhQJs66+Y9rDk4Zhnf+l1G2qLN7pjOzs20Jlu3fLuatj99n XidUU0ZWDuKA7Pkn+/g4NSfsfKLHgEEg3kQAtptxmmvf3hSKW3tMoYhkrgfhr+3HLgg6 OLiLjqADvgOrwnRg49EV2g9D509UyB9JdcpCajZBPiWI5wKI1DJhi96trkJIhz2rUitu rlwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:delivered-to:arc-authentication-results; bh=o/H8BC2+dKFj/WC3xHaH5VL99uWF4LAYNhhHFsamqAU=; b=Xca3FKjcxGGB4i+F3Qbwqi8DvkO5bMfVAXa8AT8wV2EkUglCjQIloT4hka7fs8YTT4 8oUSACyXgmlbNccXxvJVs+3HOsQcXfw1STWk6+NbfLx80w/MkXN1W7vYJ+1rFLIsyWhR qcC3q8vGTSTWShhK6cFGQxEFsGfWzF2RU+90UaAMMTxnIKgXG/c2rxBPtmbTHsj84GAQ RLDo0ikQ240eInySUn0jfA+0r0mXRZM3Hnsnx0G1B1+sCl40B0hv4iTC1FOUfZf5YMj+ T5llr4mJ+dlGCGqVfURsoeS7w7N9ElmTH0941i/1eMxwObUdPFD0kBkI6qiAUXL280Wb rYdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=K9WtWqev; 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 x65si8214803wmd.28.2017.10.09.16.53.57; Mon, 09 Oct 2017 16:53:58 -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.s=20161025 header.b=K9WtWqev; 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 5E1C2680A69; Tue, 10 Oct 2017 02:53:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f178.google.com (mail-pf0-f178.google.com [209.85.192.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 540636804D7 for ; Tue, 10 Oct 2017 02:53:45 +0300 (EEST) Received: by mail-pf0-f178.google.com with SMTP id d28so638774pfe.2 for ; Mon, 09 Oct 2017 16:53:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=jAJqAzWC+QhNjG/uZHqO+aQrPPKFYsKRw05T67ap6B8=; b=K9WtWqevy1Qh3FBL8OUJ1nwIvOoaYp5jzvszm0foNdXs3qzMx8s53Mr/HMgPzUsLgr 1PYfpskkVXiOBprkvlT6J9UVYaz/gO8fnO+T/XFfbaU524IoWCjJr8gMwwzheyB2aWuj i/a56Fqrht1XU//hpmX26Qt/YQRtC2HS6enmVRwuTtNgeQBUekG6kEhdI1iPyTvoaLYB of3p7xvZv9gu/N9xKmLO1zepuqQUYwRkOMGvnizz35F4uC3vEnRs+eA7ICERKEJ8Lt83 cW8aRYHUOIrdT2sNW191ClSFTrl7kVNS0GYcU6otQ1teTgXIe4bDsLhZ856wV4oZPVfe E6nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=jAJqAzWC+QhNjG/uZHqO+aQrPPKFYsKRw05T67ap6B8=; b=jB7UdM1ur3O/Xtq7gBgU6wkNsgkvqKeK/FudTcHco1qNR6gO+6ZCHj6gv4xgu8UD92 lw8AQpdDtBuMAP819z4ELZ18sq1ebG43iFWQ8D7mxxQqz9JacBm5OwGkjaxvXOKNnlfD O3dISbyas1Ci9orWUlCBjvXk4MAyz3vonbjkBHTECyc6sM66g+oUt/2tHEjyPN9NewN5 Owlh1WN8ZkDqX2HXS7gAprQcO2GmUEqMYG/V6SjQg1aVP1fnJVkgyiy39MA7aOqPzWt/ 6+4nIizheuZSujedwueAgDALE3xDrcaETW+VTQWOOV/zA317Q//p4IVBwxDU2g6aQ7E0 eG6w== X-Gm-Message-State: AMCzsaXiss1Haj21B//v89Bg7mCwchWycRAtlEWonerHe30R4xeyDZMr SsqNSiMHKkdun0R6+c7gldOHKHNstwUZLxI2KQ4= X-Google-Smtp-Source: AOwi7QAArVQ5qSMp0PNS+JESm8YatJAJolgwXhLguZ4ecfUBuFKFo8XZCLbjJcfaJU93qJLpyndllq+BoYm60T7/VZw= X-Received: by 10.98.0.150 with SMTP id 144mr11522088pfa.75.1507593225414; Mon, 09 Oct 2017 16:53:45 -0700 (PDT) MIME-Version: 1.0 Received: by 10.100.151.236 with HTTP; Mon, 9 Oct 2017 16:53:43 -0700 (PDT) In-Reply-To: <20171009181256.GP6009@nb4> References: <20171009181256.GP6009@nb4> From: Ivan Kalvachev Date: Tue, 10 Oct 2017 02:53:43 +0300 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH v2] Fix visual glitch with XvMC, caused by wrong idct permutation. 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" On 10/9/17, Michael Niedermayer wrote: > On Mon, Oct 09, 2017 at 09:02:38AM -0400, Ronald S. Bultje wrote: >> Hi, >> >> On Mon, Oct 9, 2017 at 6:46 AM, Ivan Kalvachev >> wrote: >> >> > On 10/9/17, Ronald S. Bultje wrote: >> > > On Sun, Oct 8, 2017 at 6:52 PM, Ivan Kalvachev >> > wrote: >> > > [..] >> > > >> > > Indentation is off in the second hunk, can you fix that? >> > >> > You want it 4 spaces to the right Done. >> >> Yes, please. >> >> BTW, I think it would be better to use "127" number. >> > >> >> I don't really mind either way. The number 128 suggests it may have been >> intended as a bitmask. Michael is probably better positioned to comment >> on >> this. > > I don't really remember but i think 128 was chosen for ABI > compatibility with additions to it from libav. So it should no longer > matter what values are used on additions Then I'm using the next free number "24". Please, commit when you think it is appropriate. Best Regards Ivan Kalvachev From 8842a69091b5eb5cf9b704b3ff504d21db4aad9b Mon Sep 17 00:00:00 2001 From: Ivan Kalvachev Date: Mon, 9 Oct 2017 01:25:00 +0300 Subject: [PATCH] Fix visual glitch with XvMC, caused by wrong idct permutation. In the past XvMC forced simple_idct since it was using FF_IDCT_PERM_NONE. However now we have SIMD variants of simple_idct that are using FF_IDCT_PERM_TRANSPOSE and if they are selected XvMC would get coefficients in the wrong order. The patch creates new FF_IDCT_NONE that is used only for this kind of hardware decoding and that fallbacks to the old C only simple idct. Signed-off-by: Ivan Kalvachev --- libavcodec/avcodec.h | 1 + libavcodec/idctdsp.c | 1 + libavcodec/mpeg12dec.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 52cc5b0ca..18c3e3ea1 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3146,6 +3146,7 @@ typedef struct AVCodecContext { #if FF_API_ARCH_ALPHA #define FF_IDCT_SIMPLEALPHA 23 #endif +#define FF_IDCT_NONE 24 /* Used by XvMC to extract IDCT coefficients with FF_IDCT_PERM_NONE */ #define FF_IDCT_SIMPLEAUTO 128 /** diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c index d596aed1a..0122d29ef 100644 --- a/libavcodec/idctdsp.c +++ b/libavcodec/idctdsp.c @@ -279,6 +279,7 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) c->perm_type = FF_IDCT_PERM_NONE; #endif /* CONFIG_FAANIDCT */ } else { // accurate/default + /* Be sure FF_IDCT_NONE will select this one, since it uses FF_IDCT_PERM_NONE */ c->idct_put = ff_simple_idct_put_8; c->idct_add = ff_simple_idct_add_8; c->idct = ff_simple_idct_8; diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 22c29c150..4e68be27f 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -1217,7 +1217,7 @@ static void setup_hwaccel_for_pixfmt(AVCodecContext *avctx) #endif ) if (avctx->idct_algo == FF_IDCT_AUTO) - avctx->idct_algo = FF_IDCT_SIMPLE; + avctx->idct_algo = FF_IDCT_NONE; if (avctx->hwaccel && avctx->pix_fmt == AV_PIX_FMT_XVMC) { Mpeg1Context *s1 = avctx->priv_data; -- 2.14.1