From patchwork Fri Sep 13 05:19:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 51562 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:612c:2986:b0:48e:c0f8:d0de with SMTP id ih6csp76779vqb; Thu, 12 Sep 2024 22:21:23 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXa+3F6h2QoOjf2qt1WYqseE6NZIBnuOYEObsgz2hsXHysBovvVR/p8VAjAKUmJjvoMqfTQG+Mgkiwi7KZYZB5f@gmail.com X-Google-Smtp-Source: AGHT+IGb1Fm5TJdRVgbm1ZPQVIM53CmT1u//dqODm2nrpyNbh79S1x8dyPkKANYI7VAFlhhdow7e X-Received: by 2002:a05:651c:1507:b0:2ee:d55c:255f with SMTP id 38308e7fff4ca-2f787f44d14mr6735111fa.7.1726204883413; Thu, 12 Sep 2024 22:21:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1726204883; cv=none; d=google.com; s=arc-20240605; b=BC7uEfj1Pjl+MM57ulV965Xsvcp3sh5KDGycnCISb+QW643AxWHuS2f8E3YbR66D5/ HB7/2caxkS+eXHMnBIKhpbbyz/DvpXZDd/B1zWQFM+uJLAZyGoUHkaHK0n87PDvPF+9Y isYbKYycyC/jdW0vpGANkissp52mmkvvyFJF26XpPq0IhliHTWTD34e/8v1fL01oiAWg OybiPVxCBbu34PteViZa38Yz1LiOE9BVEJY89zcMs9ZQJfG44TRRZIEcWqWeNdfywo3e w3EgbCMtYfoJ9Nzm2Lqad+oOGEQf9ZQd85Iz65NVUvMBmOe4QbQ7Y15kyexte96l0P8L WHyA== 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=72JFIVRGk0QQLN0O+IplWXncUjiEkXYsS1jdaD6fCOo=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=hSpx7nHjzot+tpZXzoypOfHQGgJvl67sTYWsRR7t9cu4vTFgyqdSqKui74fuPfWIJe cVCL7Nh5xuJ/QcMlvF4nhyPxDMP2jgeATI4KImI4HnSYSHvMp+3tXFZOvvDm2BEo2mzA catJ5GU6FydkMzTmKT8R6+NkvtZjYVsEj5/qn5W0juvXXVI1j0Nl0gBlgxsrx1/YIHE0 23DKzG0gCz8AroDm7LXLaC4phP7uPGv0rtYSaO3faRxv+/UeHA2M5aZinZbSssYTs8Xp 8sAWy/UYwsUGzHsdL8l8XrzGNkxuhEgM7nur4EWur+tS4AlPr3xeSZrXoG/RYDeDHejs BW6g==; 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=xDlUiTfK; 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 38308e7fff4ca-2f75c0b8825si39742911fa.608.2024.09.12.22.21.22; Thu, 12 Sep 2024 22:21:23 -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=xDlUiTfK; 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 F0FC768DDD7; Fri, 13 Sep 2024 08:21:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-57-49.mail.qq.com (out162-62-57-49.mail.qq.com [162.62.57.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3C22268BDC1 for ; Fri, 13 Sep 2024 08:21:10 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1726204867; bh=UqTyrNVMCaYogaKYJCoQg9TYfrYKIKFmEKWJ/Js4nUU=; h=From:To:Cc:Subject:Date; b=xDlUiTfKSRcoJe4edMaJ4eiFGuzkW8cudwl2LqDBirWNJCRBSMj1RDeFf9+jDXgda UGcd/fCdAufEZLYES0LZnpt4d15ykIjcnNaGQFp1OlRxACj1utSvucHnr73Lg8J3M7 hJpzJjrpnNDaUcimTXzeAudj+5M0syvmIsJD8jkU= Received: from ZHILIZHAO-MB1.tencent.com ([113.108.77.60]) by newxmesmtplogicsvrszc13-0.qq.com (NewEsmtp) with SMTP id 4F219099; Fri, 13 Sep 2024 13:19:50 +0800 X-QQ-mid: xmsmtpt1726204790t1as4v592 Message-ID: X-QQ-XMAILINFO: MmpliBmRb3iC3IwL82etZq2d+ghe/PV6rsqWiewNq2tL150lQWj2AOwJuPI27G 2HD85HMCuoUquiPhNcxfGDAWexYtSXs2pl5r/HqTrq7nk97uimwKRFw/76ZQxuiMkr+vQg767kel eWUZoPXBFUhjfFVOIzbrWtdR0ezXEl1kbYFWq3vNpptnmJaJSd98NuhNuXmy2Kl7Eq9XvcKWdcN3 EwmNsznNPbulOONZqlkJKxSOHR7ilLV+ULY/+AYw5Xj+1Pg7hSzsVmYjjpKaTzA37n2j1Eee9eS0 TTQ7ZRIYcuNvbUZ+8I8s77+ZxWCgtohwW672oGN9z1yfxeOQKyQgfqcJ7sKEEFaJsLptdAwFPbGz ybuk96lePu2zVKlGVRuXGw4yvrPSU3C3frw1yHc+IMwxFw+79/OUFefD+4+45b8rMO9VYZ66ZXSg jDstHMx6c1xw9uInZz3bMPb5Eey87PIs0Qvh94pWUz8hNHjQ/N2FkEVHPsbkdeVgyN9bb/2gtpKO UttRLTN8OfdblVNMY54bpFUILlivVBrG1dUe6/SxP3nitXi6aQbuDSRUnEXDOyxNaCy+ARaaUJ9N /A2k2AUSyqoBaRAtglaijnohQwggKT3S67UEaULNKUNlMKfK3kP4d9rQrAAVGi65BifORrplrHFy emTmc6BTxda8M7lYKfjTfInS7nkU+aQvkU7uVmJnsF64H3ZDAy30qBH7s2S/sPfwMwEt6VU8LFtR XzlFMQn/NC/Buc5vjmr/iAG7vkJDqwjDSC1v9mKW8pIY011UcW4hVSkAfTqnv8ul0SL437e3KXqn Pbdjb/uGCfrKOY3xwNK2IKu+LfPS7jd7b01ygaoIBL8nEa6nBzTrhIVlIPGLMs/veHkgBHIbg1l6 Hc4ND3SjLJkuXpxEA+kcTBkAe4h9986Edfv5wb2APc22tWUTDqiVA2wOBIYEP53ckcFyl5Duo1XA 4txjD5ZcsnYPtb7AXhIdmvONmXhYwis9OtRFgZrp4JgMpbSsqjDqVpA4zSoDJe0U8F4T9I+Xc= X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 13 Sep 2024 13:19:48 +0800 X-OQ-MSGID: <20240913051948.72260-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] 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: uvJZF3ubq01B 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. --- fate sample: https://drive.google.com/file/d/1U5WGWeSsMFiEkhsl_vL4NiMma-LLh02t/view?usp=drive_link md5sum: 8054b4b8e62c0171476b40206d044590 Hierarchical.bit libavcodec/vvc/refs.c | 11 +++---- tests/fate/vvc.mak | 1 + tests/ref/fate/vvc-conformance-Hierarchical | 35 +++++++++++++++++++++ 3 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 tests/ref/fate/vvc-conformance-Hierarchical diff --git a/libavcodec/vvc/refs.c b/libavcodec/vvc/refs.c index bebcef7fd6..d3663c7c69 100644 --- a/libavcodec/vvc/refs.c +++ b/libavcodec/vvc/refs.c @@ -190,13 +190,10 @@ int ff_vvc_set_new_ref(VVCContext *s, VVCFrameContext *fc, AVFrame **frame) *frame = ref->frame; fc->ref = ref; - 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; - - if (!ph->r->ph_non_ref_pic_flag) - ref->flags |= VVC_FRAME_FLAG_SHORT_REF; + ref->flags = VVC_FRAME_FLAG_SHORT_REF; + if (ph->r->ph_pic_output_flag && !(s->no_output_before_recovery_flag && + (IS_RASL(s) || !GDR_IS_RECOVERED(s)))) + ref->flags |= VVC_FRAME_FLAG_OUTPUT; ref->poc = poc; ref->sequence = s->seq_decode; diff --git a/tests/fate/vvc.mak b/tests/fate/vvc.mak index 5335460263..7fd0a47214 100644 --- a/tests/fate/vvc.mak +++ b/tests/fate/vvc.mak @@ -1,5 +1,6 @@ VVC_SAMPLES_8BIT = \ CodingToolsSets_A_2 \ + Hierarchical \ VVC_SAMPLES_10BIT = \ APSALF_A_2 \ diff --git a/tests/ref/fate/vvc-conformance-Hierarchical b/tests/ref/fate/vvc-conformance-Hierarchical new file mode 100644 index 0000000000..0797305b9a --- /dev/null +++ b/tests/ref/fate/vvc-conformance-Hierarchical @@ -0,0 +1,35 @@ +#tb 0: 1/25 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 480x320 +#sar 0: 0/1 +0, 0, 0, 1, 230400, 0x3293f7f1 +0, 1, 1, 1, 230400, 0xe2570fa4 +0, 2, 2, 1, 230400, 0xecd608fb +0, 3, 3, 1, 230400, 0xea46f9f4 +0, 4, 4, 1, 230400, 0xb715d24a +0, 5, 5, 1, 230400, 0x69faaf46 +0, 6, 6, 1, 230400, 0xf9a362db +0, 7, 7, 1, 230400, 0x2dcd19ca +0, 8, 8, 1, 230400, 0xf8fda185 +0, 9, 9, 1, 230400, 0x48a35bfd +0, 10, 10, 1, 230400, 0x27efe832 +0, 11, 11, 1, 230400, 0x74279617 +0, 12, 12, 1, 230400, 0x91935248 +0, 13, 13, 1, 230400, 0x29b621e6 +0, 14, 14, 1, 230400, 0x89b1ec0b +0, 15, 15, 1, 230400, 0x898fdba1 +0, 16, 16, 1, 230400, 0xc6d18e6f +0, 17, 17, 1, 230400, 0xedff651b +0, 18, 18, 1, 230400, 0x677e2260 +0, 19, 19, 1, 230400, 0x930918ef +0, 20, 20, 1, 230400, 0x70da2c30 +0, 21, 21, 1, 230400, 0x699a3b9d +0, 22, 22, 1, 230400, 0xff3b1b3a +0, 23, 23, 1, 230400, 0xca11d9a5 +0, 24, 24, 1, 230400, 0x904394e0 +0, 25, 25, 1, 230400, 0x392e5445 +0, 26, 26, 1, 230400, 0x6191f4d8 +0, 27, 27, 1, 230400, 0xa7d7be12 +0, 28, 28, 1, 230400, 0xbb29752c +0, 29, 29, 1, 230400, 0x14ff297e