From patchwork Fri Jan 11 14:36:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Borsboom X-Patchwork-Id: 11708 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 11DFE44DA27 for ; Fri, 11 Jan 2019 16:36:58 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3E1F768A832; Fri, 11 Jan 2019 16:36:46 +0200 (EET) 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 E82DA68A803 for ; Fri, 11 Jan 2019 16:36:39 +0200 (EET) Received: from [10.1.51.188] ([87.215.30.74]) (authenticated bits=0) by kyoto.xs4all.nl (8.14.7/8.14.7) with ESMTP id x0BEap6l023964 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 11 Jan 2019 15:36:51 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=carpalis.nl; s=default; t=1547217411; bh=Zg9q/FOicoruv+O0t0BzO+vM6ET03NnA8cyjxUkBJj0=; h=To:From:Subject:Date; b=ZY9S6JhlbQ4mOAr+Hzaf8kzDX+z1+YeL5vlMjP6UdrJL7TReJDNqiyZqN40I0mEUI v9sSteCBM5VpWjKZdQ/zhuh8tvza3k648n1zTG0gVJ1eKCFei16yL99fHaAJfjcimx MrB+5iNA0NxdQZ/dOiPnSsPObmQCG8pJx01J2jHXr6pP2rWJqsA5QBjN2NpXgWfHOa 1685WIGhrYuGvdcrLQ0IxdSZXBbGKwcyqtWIApyVaWGT9dVWDSO/dpONQZYtkaV8sb 9H9fj520zfICEsO1Vr2QLiRfNMUQoNJMh0NRdz2e3JaCSrs3hTr2i5N8fMvLbvoO7E vw02tRkc/eOtg== To: FFmpeg development discussions and patches From: Jerome Borsboom Message-ID: <6d53a008-2bbe-0006-1412-4d9037e298ee@carpalis.nl> Date: Fri, 11 Jan 2019 15:36:51 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 Content-Language: nl Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/vc1: fix decoding of old WMV3 format 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" The position of the B MV predicitor candidate is slightly different for the old WMV3 format that is indicated by RES_RTM_FLAG. This patch fixes the decoding artifacts in the niceday.wmv sample. Signed-off-by: Jerome Borsboom --- libavcodec/vc1.c | 5 ----- libavcodec/vc1_pred.c | 7 ++++++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libavcodec/vc1.c b/libavcodec/vc1.c index 3581d87b57..e102b931d8 100644 --- a/libavcodec/vc1.c +++ b/libavcodec/vc1.c @@ -379,11 +379,6 @@ int ff_vc1_decode_sequence_header(AVCodecContext *avctx, VC1Context *v, GetBitCo } else { v->res_rtm_flag = get_bits1(gb); //reserved } - if (!v->res_rtm_flag) { - av_log(avctx, AV_LOG_ERROR, - "Old WMV3 version detected, some frames may be decoded incorrectly\n"); - //return -1; - } //TODO: figure out what they mean (always 0x402F) if (!v->res_fasttx) skip_bits(gb, 16); diff --git a/libavcodec/vc1_pred.c b/libavcodec/vc1_pred.c index 0b22d9916c..1ae1e33fbe 100644 --- a/libavcodec/vc1_pred.c +++ b/libavcodec/vc1_pred.c @@ -275,7 +275,12 @@ void ff_vc1_pred_mv(VC1Context *v, int n, int dmv_x, int dmv_y, //in 4-MV mode different blocks have different B predictor position switch (n) { case 0: - off = (s->mb_x > 0) ? -1 : 1; + if (v->res_rtm_flag) + off = s->mb_x ? -1 : 1; + else { + off = s->mb_x ? -1 : 2 * s->mb_width - wrap - 1; + b_valid = b_valid && (s->mb_x || s->mb_y > 1); + } break; case 1: off = (s->mb_x == (s->mb_width - 1)) ? -1 : 1;