From patchwork Sat Oct 17 19:30:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 23050 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 7D51F4494C2 for ; Sat, 17 Oct 2020 22:30:47 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 54D7C68B8F0; Sat, 17 Oct 2020 22:30:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f195.google.com (mail-qk1-f195.google.com [209.85.222.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7E5AC68B55B for ; Sat, 17 Oct 2020 22:30:40 +0300 (EEST) Received: by mail-qk1-f195.google.com with SMTP id 188so4701949qkk.12 for ; Sat, 17 Oct 2020 12:30:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=fN0DHajZmqxHXISXzaIG2zQ7s/12GpMelIQcNTCySso=; b=QYXesmyNf3oos5zXUCFo+W583fTXndHNlLV9ErvIN7XZ+cOEw9UKOGPALLUZz2RM9M dDYRWxLOZUomo/cKEfk0LgM9n2PJtYyvnK1rgiZZr2MwEEtKdHuOJpAw64bb3+EwNVwt EFacihHYpi/zNYcHAdeiS7k/IHiSzM3s8TtlilzlrrDBWzXALGFCr0c6+lun87QhPw1V MCGHd3FNWHjahrwgpCoB/ElvD0igiDwqWMVDh76WaVSeBGeYzAb10BIO4cusIVnQ40RA qLLWh3h3LdEJ8xGMnIgQRTyV2O/HwZNOb0KMeSstrE8VXq5KqwmS6506lnzrMljNJ8Hb 5o/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=fN0DHajZmqxHXISXzaIG2zQ7s/12GpMelIQcNTCySso=; b=hTOPZQ76vQkG575Aln0aRZD7Iz1oQ1qJjWPpd6KMqRJWF3Ft49i6ylQK5hOXgEK2E6 3BkYzFrxj6gMjssfVpMk39LSYPlbSlw4as0fJciUF7hMnCOhUH5t1zVRFkh1uhYhrK/8 IjAJFTwV0SvKqM5gCqlx+GOhy2SQr4+8eI6uU2AU63+MQJ3DKYTz6qjUPfWU0iPfSqJ9 QdML70wGFt36EZIsN4Tw1IdJl8ppW6/xjSqm98QitQNp4Y7Rb9Wx54vdr6rXEGKYKtpj seU1IXv6mYvn7E9aV32xbskLj9iSnIjgQIgyH/2dUxnY8AzmyU19PO/tAepWJdOtx9EB q59A== X-Gm-Message-State: AOAM532oSj3o5PBFITQFpuDJ6RfFZvkWLV6nhON9lbc0QbDrZuIN8sjH SLgkMDamkXsxXqEmWiaNhwAMJ1oPkCE= X-Google-Smtp-Source: ABdhPJx4fH7+zE2NxMXyf9+iO7+vittanllvvFfj5Wjoa5QOJJigI1C89GMzlE8CBQAJkg7UMdQBrA== X-Received: by 2002:a37:9d11:: with SMTP id g17mr9472142qke.77.1602963038603; Sat, 17 Oct 2020 12:30:38 -0700 (PDT) Received: from localhost.localdomain ([181.23.86.134]) by smtp.gmail.com with ESMTPSA id k15sm2504012qtk.64.2020.10.17.12.30.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 17 Oct 2020 12:30:37 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 17 Oct 2020 16:30:20 -0300 Message-Id: <20201017193020.245-1-jamrial@gmail.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/av1dec: fix loading PrevGmParams for frames with primary_ref_frame none 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" Signed-off-by: James Almer --- libavcodec/av1dec.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c index 54aeba1812..04aaf5d148 100644 --- a/libavcodec/av1dec.c +++ b/libavcodec/av1dec.c @@ -109,13 +109,18 @@ static void read_global_param(AV1DecContext *s, int type, int ref, int idx) { uint8_t primary_frame, prev_frame; uint32_t abs_bits, prec_bits, round, prec_diff, sub, mx; - int32_t r; + int32_t r, prev_gm_param; primary_frame = s->raw_frame_header->primary_ref_frame; prev_frame = s->raw_frame_header->ref_frame_idx[primary_frame]; abs_bits = AV1_GM_ABS_ALPHA_BITS; prec_bits = AV1_GM_ALPHA_PREC_BITS; + if (s->raw_frame_header->primary_ref_frame == AV1_PRIMARY_REF_NONE) + prev_gm_param = s->cur_frame.gm_params[ref][idx]; + else + prev_gm_param = s->ref[prev_frame].gm_params[ref][idx]; + if (idx < 2) { if (type == AV1_WARP_MODEL_TRANSLATION) { abs_bits = AV1_GM_ABS_TRANS_ONLY_BITS - @@ -131,7 +136,7 @@ static void read_global_param(AV1DecContext *s, int type, int ref, int idx) prec_diff = AV1_WARPEDMODEL_PREC_BITS - prec_bits; sub = (idx % 3) == 2 ? (1 << prec_bits) : 0; mx = 1 << abs_bits; - r = (s->ref[prev_frame].gm_params[ref][idx] >> prec_diff) - sub; + r = (prev_gm_param >> prec_diff) - sub; s->cur_frame.gm_params[ref][idx] = (decode_signed_subexp_with_ref(s->raw_frame_header->gm_params[ref][idx],