From patchwork Thu Mar 29 11:43:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Borsboom X-Patchwork-Id: 8221 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp1580704jad; Thu, 29 Mar 2018 04:43:45 -0700 (PDT) X-Google-Smtp-Source: AIpwx49pRirN0ubiVGuX1zPRJuR/uXypQ0hnPa2tmxQIPuNteP9qXwexR8rxwj8AHxiEvEGLE3Xm X-Received: by 10.28.35.76 with SMTP id j73mr5281867wmj.103.1522323825295; Thu, 29 Mar 2018 04:43:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522323825; cv=none; d=google.com; s=arc-20160816; b=wBQMKXGM67gEFCEJiRfBKr1Lgs0w05lydH/8dYrGnG4FxQni57bFP3wyO5OYwsohXI PEfz27ibZ/HiylfuNVuJO8Cm86iHJm8kbesaSopzooBXx1zNvbPHwQzEPifxMKa80k86 TrF61p+dGz4zRNnKQ5z/SeSviN60ytU/h9L5k9H0nNAUBcLznLofjG3umivCQdi6lpvn YQ/XrIGJZqfT3tMPYM2mUwwg85CCR6rS6S/9uCKBZoNtdI++MnCIziB1iDHYBAlVwMt9 btrtUGcarHCaXuUKYcp+bNHoTACFTVE2CpfATYHCccRTJe45T622IypLrNxliEt6BQdL WJcA== 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:content-language:mime-version:user-agent:date :message-id:from:to:dkim-signature:delivered-to :arc-authentication-results; bh=hxZjtK/4dv/q4e1Q6NYGu+xm+RjFGSLWoc0MV0rB21c=; b=N7Fx++Aa/n5AIiwpuntY+zfQJZpe8Bntjla5xqamne3WrPDiK1/hlW5625ZVxJCgCr Zs8b7cuvxGN4sW6eHdfkKxkh3xhmn0MM89sm1/QbLDymP6grJsqzznkjy0LHfOhvLuuk H0iaTw9N5oEy+DMH+X30iCEAjsQr9pLrkJ8YXAbD4yjtR2bgI7OAGxXORQvlyKNudq+8 SJOHQNQx38XgLR4n7AB7uAIAfn6OKiAfntiOZMc85ZjqXCigBzrLjbx7lAuzWbV4YVnA 27gxpLVWFVEd8xNxA1HIlFQW8JaqQwzmiXjtP0vInQ6R+JoC/tNyFobakzxraXuKH2bt VsgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@carpalis.nl header.s=default header.b=Ech6Cg40; 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 e18si1215032wmh.112.2018.03.29.04.43.44; Thu, 29 Mar 2018 04:43:45 -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=@carpalis.nl header.s=default header.b=Ech6Cg40; 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 80FD0689C78; Thu, 29 Mar 2018 14:43:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from kyoto.xs4all.nl (kyoto.xs4all.nl [83.161.153.34]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 20F2A6898BF for ; Thu, 29 Mar 2018 14:43:17 +0300 (EEST) Received: from [IPv6:2001:980:9507:0:d6be:d9ff:fe47:dbd0] ([IPv6:2001:980:9507:0:d6be:d9ff:fe47:dbd0]) (authenticated bits=0) by kyoto.xs4all.nl (8.14.7/8.14.7) with ESMTP id w2TBhYTp025792 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Thu, 29 Mar 2018 13:43:35 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=carpalis.nl; s=default; t=1522323815; bh=J9EifzRx27rLTHomQp43lmVko27HdGz++he3hJCSaMc=; h=To:From:Subject:Date; b=Ech6Cg40CUhMZXP8fHazyc/TfTaWpEK7cyx9dnq1Gs2ykJ/2uYNtbHRng5dGEED93 nwsAASkqv2mSgy/QfQxg9abErPZkkXHI/6qk8tMgoIZ46gie3nTR8PaTGSJGb7+xLB 7O3l11GaLbwi7mhYtIQ/Rpzy3cQRn7WOVJx0K1hPpx2i67tSEG+DpvTdBq/cthDcPg GLq1TJ9YT7j0f3YZsKc4jbtEm/i6UVXDJbXjZi37vwp5OgU8WPm7I4OgkzP3672uTT n0p6Ya28qHXzpETdM5yTAPEoE62+M7bTYiscvYjKlUqq3z6heT4al44aQPuUNY4AkV Rmtfsyh9e9jTw== To: ffmpeg-devel@ffmpeg.org From: Jerome Borsboom Message-ID: Date: Thu, 29 Mar 2018 13:43:34 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 Content-Language: nl Subject: [FFmpeg-devel] [PATCH] avcodec/vaapi: do not parse MVMODE for VC-1 interlaced frame pictures 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" Interlaced frame pictures do not contain the MVMODE or MVMODE2 bitstream element. Trying to parse this element and passing a nonzero value to the hardware decoder results in small inaccuracies in the decoded picture. Signed-off-by: Jerome Borsboom --- With this patch the Intel hardware decoded fate test for ilaced_twomv.vc1 perfectly matches the output from the Microsoft software decoder. libavcodec/vaapi_vc1.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libavcodec/vaapi_vc1.c b/libavcodec/vaapi_vc1.c index 74ba783141..bdb5e24cc5 100644 --- a/libavcodec/vaapi_vc1.c +++ b/libavcodec/vaapi_vc1.c @@ -138,8 +138,9 @@ static int vc1_get_FPTYPE(const VC1Context *v) /** Reconstruct bitstream MVMODE (7.1.1.32) */ static inline VAMvModeVC1 vc1_get_MVMODE(const VC1Context *v) { - if ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) || - (v->s.pict_type == AV_PICTURE_TYPE_B && !v->bi_type)) + if ((v->fcm == PROGRESSIVE || v->fcm == ILACE_FIELD) && + ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) || + (v->s.pict_type == AV_PICTURE_TYPE_B && !v->bi_type))) return get_VAMvModeVC1(v->mv_mode); return 0; } @@ -147,7 +148,8 @@ static inline VAMvModeVC1 vc1_get_MVMODE(const VC1Context *v) /** Reconstruct bitstream MVMODE2 (7.1.1.33) */ static inline VAMvModeVC1 vc1_get_MVMODE2(const VC1Context *v) { - if ((v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) && + if ((v->fcm == PROGRESSIVE || v->fcm == ILACE_FIELD) && + (v->s.pict_type == AV_PICTURE_TYPE_P && !v->p_frame_skipped) && v->mv_mode == MV_PMODE_INTENSITY_COMP) return get_VAMvModeVC1(v->mv_mode2); return 0;