From patchwork Sun Sep 15 04:54:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 51604 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9fc3:0:b0:48e:c0f8:d0de with SMTP id k3csp618214vqy; Sat, 14 Sep 2024 21:54:44 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUkhL4BJMRScCpTZufZcklGy3dcN4tu8r0g2KkxjrGVfuSYgWiwyOIjLk83mYczxdxSVLHtLeyvIyZCQALwJqh+@gmail.com X-Google-Smtp-Source: AGHT+IF5sMHLvNBFgYf9iK2EKDpCM5RCiSaGB8/1IKUaU3yqOGIVkPM7EL9fuXLq5dLmparq53sL X-Received: by 2002:a05:6512:3b86:b0:533:46cc:a736 with SMTP id 2adb3069b0e04-53678fed099mr6213818e87.37.1726376083749; Sat, 14 Sep 2024 21:54:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1726376083; cv=none; d=google.com; s=arc-20240605; b=APnkddAfhW2RFSkK6obY1/PvRL4nbrWjsypzbYJ6qtgf1xLoceqV3Kk0Imx8eh87AZ ak/6E+3xnrapz+Vv3l+qkd4fU5Ryv9v2JNQ8GcmFtS7YwbO1ftX3LE4w+mhrXcd9Fzb3 CMXzCbpt75ApEV3wMScgASDhiog/MQxV3fsEl6d+4YWbhDUv/NCX8lSIt3C2BxQCIFeD WMaY7XRCGjtsrumQW73myX7/GzUXk66bkuGVtOWfqUd+J9VXTzyIc5Li8CAugyoJ+pLP JtVY6Kan9AfJsUTxYRWynHT8nbEAnTdSfzliT/zTruLWsBbmxDY+bSTWiVjTBWS9Us+J PcJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=eCBqHem4jQLEzLM03B5n3i2yvKMwhTTqdF7VCQQRNKM=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=UGmW+CGC+E466otW+1G0EWk+BB64OzXp7C8mj+lGO1r3PgVtGdpxI71IvUjXdP9Qkm Kurr5D9sDJxtK9vCBMRgp01PQZ5BiXgtSqo7oD0JY7Zjpdc4jNY0fcj4CnzwgKj8ReHm 2u7QfBtDXkq1t6qZ6A52bhIVYQvnbd/o8JLpaoystFXsaxZGuAwvBXFY7QieBKl2zMby yYJGICt0HKbj1pEqTM+KwK9VRAgSi/VGcLTk6anWitUOThcMoZzwxQXYltHaJluBdNfO SfARdyKkF33AyBfTJGR5TMVNThUd+nqGCCxbK92PyglUU8ia33BHYQCV3mt+5WxbowBW GydA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=Z86TXrNY; 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=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 2adb3069b0e04-536870b04d4si823667e87.544.2024.09.14.21.54.42; Sat, 14 Sep 2024 21:54:43 -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=@foxmail.com header.s=s201512 header.b=Z86TXrNY; 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=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E0DBB68D154; Sun, 15 Sep 2024 07:54:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-236.mail.qq.com (out203-205-221-236.mail.qq.com [203.205.221.236]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 35D6C68AAC5 for ; Sun, 15 Sep 2024 07:54:29 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1726376059; bh=RyYepFiJNpgoyRD9nh7s3B21mlOqDg2Fu2NGBwWpw4E=; h=From:To:Cc:Subject:Date; b=Z86TXrNYdan8FjNGeaxmJfd8ygbTiFoMgfSKJ0Itwm97w0uEVq9K/6OxMFIi9cb9g HJ6EXZnukwAa1A8SRwqC/6UzZGL4Qe2TSoa6lzkUqlt/cTE9QiCpci/399/qTDionb JveME+dFWAJK3FbuIEdRoqlPv7IPl+zRV3pT7JQs= Received: from ZHILIZHAO-MB1.tencent.com ([113.118.115.139]) by newxmesmtplogicsvrszc5-2.qq.com (NewEsmtp) with SMTP id D9226ADE; Sun, 15 Sep 2024 12:54:18 +0800 X-QQ-mid: xmsmtpt1726376058tedm6ou33 Message-ID: X-QQ-XMAILINFO: OSjQccS6YHkHe0NnYNuJa/1Z12AA50cFzKXtZZHDfb2IExPxasDg0sH15067sk VTVKWiDzrg3D8AcMZjiPUewsLhxtSyH5sei4Q80kcDGLuHn7LptbnXhj4yhcrpXSc4m5kHMGzfiu wTrWeiSF5ert28V/Xs7QhRQmy/2ecF/QfZIqhI/xhv7CkoI5UtA7xdDVIik+3OtwyFYm0S+AR2Gj wfI91Z9zV1Zir8VFm/lG3QRjcs4sHjL7Z2N1yDphW3ycAIoOOtSIc0S5lLh532fTz6H7W/Rz7gof GCn7T46n8KWt7u7wsu5EEPx0hjitg7l81BDHhZ/UMhNp4BD249qMwMVpvNS1AvmyEHbz/MC01Uui n2tgakGseah3dzCNxvEI4Csq0LpLe5b/MbgeOkpumiMBWpVEfxSiPs6ogoe0MeGwo75+vmYxPAtJ 3AoxwAxmvwapBVlUDidFzabdBi/kOL8Kc5D4/zsotzPaiIqLRcMCCUGR3RiQJWz9xJGK0x+IhSt/ uyaaWnevJg3ulk91jRPuRuFuC8W/wNtUb++TJ3Cbb/xVxyxh1v4yQoQpKDKjx3oO1EYbGUeJyo+h Izt8sTB1OEk4KKWK0tobhsTZxOKbJVr+Oh73erGn3SJI3WsFpZr6dHO9l2aO9GqW6lyHhQJlGuE1 X4ob1aWrVzqYjD72k730nmTWMfOvbdhHCpH8biOr3Fs00py4teT2IcDnF9g3OaWKktd9HLTl07Jz 3lATPKia5BxYTjzJZrmHfquyqZd/OrJU4Iu+YzMrT2Ne8nMOzcOUR1R66NTXF8Jqj/ztNFdP/Y2R JOllmzEury2Cs+w7Vr+5pvFZYP1KApGLZve0WIBeGW4OJPtjFu9I+JTCTPn70TTKyCjvyoB86SBO 13QQCnRycMaZPB/EGSaVFW9KAv7cs7PkT74wT6L81UMcxt1/VwOAQHHL5A/Qb4HeJb5eQIwci/cr ge8XCKQcyRNVsojCUQdjKKXvdCD2EMiN1UFcaM3ltzz9okfU90CYin0KvyBObm28Itlpmq+mM= X-QQ-XMRINFO: NI4Ajvh11aEj8Xl/2s1/T8w= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sun, 15 Sep 2024 12:54:16 +0800 X-OQ-MSGID: <20240915045417.77336-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 1/2] avcodec/vvc: Fix output and unref a frame which isn't decoding yet X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Cc: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2qtozXz4GCMS From: Zhao Zhili ff_vvc_output_frame is called before actually decoding. It's possible for ff_vvc_output_frame to select current frame to output. If current frame is nonref frame, it will be released by ff_vvc_unref_frame. Fix this by always marking the current frame with VVC_FRAME_FLAG_SHORT_REF, as is done by the HEVC decoder. --- libavcodec/vvc/refs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vvc/refs.c b/libavcodec/vvc/refs.c index bebcef7fd6..133ff9eaba 100644 --- a/libavcodec/vvc/refs.c +++ b/libavcodec/vvc/refs.c @@ -193,7 +193,7 @@ int ff_vvc_set_new_ref(VVCContext *s, VVCFrameContext *fc, AVFrame **frame) if (s->no_output_before_recovery_flag && (IS_RASL(s) || !GDR_IS_RECOVERED(s))) ref->flags = VVC_FRAME_FLAG_SHORT_REF; else if (ph->r->ph_pic_output_flag) - ref->flags = VVC_FRAME_FLAG_OUTPUT; + ref->flags = VVC_FRAME_FLAG_OUTPUT | VVC_FRAME_FLAG_SHORT_REF; if (!ph->r->ph_non_ref_pic_flag) ref->flags |= VVC_FRAME_FLAG_SHORT_REF;