From patchwork Sat Apr 16 08:31:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiaolei Yu X-Patchwork-Id: 35333 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:671c:b0:7c:62c8:b2d1 with SMTP id q28csp645594pzh; Sat, 16 Apr 2022 01:31:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwG8LZRFD7I+6agdIJRt5doxkZU5oDfJtC4oj8uhrieVDBn78JPL74HLJ8SwrMcAzceVc2L X-Received: by 2002:a05:6402:914:b0:41d:8d96:57e1 with SMTP id g20-20020a056402091400b0041d8d9657e1mr2839097edz.3.1650097894750; Sat, 16 Apr 2022 01:31:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650097894; cv=none; d=google.com; s=arc-20160816; b=UvwdTW3VnYCZfiBNLKCClmA0RKpirfbedBFXYSNN/wEPd+POELg5ckLESk4dsUt3oa fwpy58XZ156FRxq3aPIj/Ogkx8CdmZghtvOCGcE53WXj5OgzX/Sc5kNacFmTJkFPKSqb hRxI6EArltQvuQVkLxQjeuv153FB3eebbF0bmbjOEuhqGKIega04sjuFIPsDOCtjH9d/ J+5zm6MxVRS0D0iPTui4MG1WtxA+kvMiL2xhysx64Ks0877Pa72CTp1RNJVe6SufRJl/ ivyQqZzjzaqPJn81oavOU1+0q5V92kBzgnXN5kiVJnBkpW5GfxEwC/3H5U6QSS6F6F4Q YEjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :in-reply-to:autocrypt:content-language:references:to:from :user-agent:mime-version:date:message-id:dkim-signature:delivered-to; bh=Ht3DE8FpswXcHO57/kuSx2PDUAKPav/lq4TtfqBwj7w=; b=rz+YuQ2FntdnQXUMZFyCCrr75Fdpk3EPHsHAr/7g8Y4KiFJ93+X/gS/MVSPriS6XGa FdNiyKRxAdiqp2HhrfUnuwKIxgxerVBOkUFvznT4uzCjLjcZD/RIRjLzez3AAAcfLV/b Cp1Tvy5HsuWMG/xRsKzfvrPXoOr/yLvi7I8tC7qCV0kMgdHvVp+tOrm8FHm3lBhJaYqQ +EQgl2RSXkMxoF0RaM1/Jqqx5jJYN/6GYgAYjCcLbZ2XkTbh1vLe1RtoQfJFxzXFUD+d MoW69lc19Zjf4CTWO9IAX0A0b4ez2XTcbrtCNfRrJHuJXULVB+oTSCuAbTvWlJZVp0xq 2y/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=ajcSz9EM; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id bk6-20020a170906b0c600b006df76385ca2si2597108ejb.322.2022.04.16.01.31.34; Sat, 16 Apr 2022 01:31:34 -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=@gmail.com header.s=20210112 header.b=ajcSz9EM; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4573E68B507; Sat, 16 Apr 2022 11:31:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 13E1968A4CB for ; Sat, 16 Apr 2022 11:31:26 +0300 (EEST) Received: by mail-pg1-f171.google.com with SMTP id k29so10164686pgm.12 for ; Sat, 16 Apr 2022 01:31:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:from:subject:to:references :content-language:autocrypt:in-reply-to; bh=U0lmA/KcO9ntSnpwymSJOpyh5bUdAzuAUA9fas/olC4=; b=ajcSz9EMixaXLdInk/ALP2YOduzA5B73Azy3+kEhLlKz5UIleONAx0C6mcg4WORs4N Xg6xsBJACaleeCQ/ep/KX21WGTmOVpyfoSS+yvdjwxJRTwoosKWA/rtdaQUH+8l+pohI 2FdZ1wafHoTa8mkZPr26Vjjf366V2BTbA2e2dZrUfL+yqd59/iMTzSh2M6IYsu5dzQmu Pbqr6+dO8A96CjXKgTBrMUgKSSyFTjLVvE2KYCj6MOGOJgr2/heainXDZrIeGrnIMeIJ Gxb6fxxGXQU933cKzWwwuW5j7cr8EjAYmZxjd+k8mKnaYN13lRhUxgeoF+l0VaS/qeSc 9x4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:from :subject:to:references:content-language:autocrypt:in-reply-to; bh=U0lmA/KcO9ntSnpwymSJOpyh5bUdAzuAUA9fas/olC4=; b=pmogd/rD+qjwOS7KLtFuBhB7XjLLMxE2wb0/NuHeW3rl3I+3UXtvXK3fJLdaP+VoFG kb3KKz59cX8T9T9yD9n97PE8K2hdaeeLc8dEfQEFI8DEZ0iLWM1JjMEjnd3kqn2/mI41 U3wJuNko359r3CWuRehkUz3zrlMb4PFwkBHFSMPiSV2oIMXAbqPFnPsyaPusedS9VikY ahWmTRXMk2GOEhDpuUaaJfAzZLKh9wu3YgjbDQeYuUgPr57tafhIAkPNp/3Wx5OKKUm8 Ya5ETOcML+wxaYdCWmKfQWfHTpnAnobpARqHg4LVSDVunX+ZB4fBwhD7V7GKrcLsoD8A RkUg== X-Gm-Message-State: AOAM531iulya25DucKELuUyJ4pOeI484rtZk47ioQNXonFP2q77KGApK 0z3vNx/3p7OB+HwVXkr4kFv9u8+62oMs4w== X-Received: by 2002:a63:de4d:0:b0:39d:912c:b51a with SMTP id y13-20020a63de4d000000b0039d912cb51amr2125087pgi.435.1650097883781; Sat, 16 Apr 2022 01:31:23 -0700 (PDT) Received: from [10.1.2.131] (ec2-34-214-110-43.us-west-2.compute.amazonaws.com. [34.214.110.43]) by smtp.gmail.com with ESMTPSA id v16-20020a62a510000000b0050759c9a891sm5083336pfm.6.2022.04.16.01.31.22 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 16 Apr 2022 01:31:23 -0700 (PDT) Message-ID: <9c14fe0c-ba79-9136-227a-26bfdcdf562e@gmail.com> Date: Sat, 16 Apr 2022 16:31:21 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 From: Xiaolei Yu To: ffmpeg-devel@ffmpeg.org References: <5ca902bc-99cc-2866-ec9a-068ac356924d@gmail.com> <164914981025.19727.3038981711097240936@lain.red.khirnov.net> <2237ca87-c339-b00c-1562-5c49faee0987@gmail.com> Content-Language: en-US Autocrypt: addr=dreifachstein@gmail.com; keydata= xjMEYRw8qhYJKwYBBAHaRw8BAQdAh+vf1kJB/kff/4Me8i9RUvNRzGhaR03N8K57WGkQ0UzN JFhpYW9sZWkgWXUgPGRyZWlmYWNoc3RlaW5AZ21haWwuY29tPsKRBBMWCAA5FiEE/7Pjp40G uVEUD2hqIq73773O/wMFAmEcPKoFCQWjmoACGwMFCwkIBwIGFQgJCgsCBRYCAwEAAAoJECKu 9++9zv8D4JABAIsJiPS0oJfJ+DX/8Mpu8vzh0qh2qPzmnTz3kGcebmiXAQCGP0hNLRgJDkot CK+4cPGb5LQkH064KC9OZbIlQpZmCc44BGEcPKoSCisGAQQBl1UBBQEBB0Drgb08O76xaxvz RJuvOc4PEwBagqZ+KVqVGe9c9Ij5DgMBCAfCfgQYFggAJhYhBP+z46eNBrlRFA9oaiKu9++9 zv8DBQJhHDyqBQkFo5qAAhsMAAoJECKu9++9zv8DeUIBAMjEnBZmmeGxAzqlJWypMPXUSWzF O5GSqVC+KPxI0iMEAP0WzgfYt5i/BeHy8B1fYVqv9tHJB4HXeD6OL76U+cmiAA== In-Reply-To: <2237ca87-c339-b00c-1562-5c49faee0987@gmail.com> Subject: [FFmpeg-devel] [PATCH v2 1/2] avcodec/hevcdec: skip generating missing refs in foll lists 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IidpTSndhAHx Missing refs shall be generated only when they are actually used. Without this change a sequence of a BLA picture and an associated RASL picture would still be decoded without complaints if the RASL picture is mislabeled as RADL. --- libavcodec/hevc_refs.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index fe18ca2b1d..84a21991c7 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -378,9 +378,6 @@ static HEVCFrame *find_ref_idx(HEVCContext *s, int poc, uint8_t use_msb) } } - if (s->nal_unit_type != HEVC_NAL_CRA_NUT && !IS_BLA(s)) - av_log(s->avctx, AV_LOG_ERROR, - "Could not find ref with POC %d\n", poc); return NULL; } @@ -426,7 +423,7 @@ static HEVCFrame *generate_missing_ref(HEVCContext *s, int poc) /* add a reference with the given poc to the list and mark it as used in DPB */ static int add_candidate_ref(HEVCContext *s, RefPicList *list, - int poc, int ref_flag, uint8_t use_msb) + int poc, int ref_flag, uint8_t use_msb, enum RPSType rps_type) { HEVCFrame *ref = find_ref_idx(s, poc, use_msb); @@ -434,6 +431,15 @@ static int add_candidate_ref(HEVCContext *s, RefPicList *list, return AVERROR_INVALIDDATA; if (!ref) { + int allow_missing = !(rps_type == ST_CURR_BEF || rps_type == ST_CURR_AFT || + rps_type == LT_CURR); + + /* skip generating missing refs in foll lists as they are not used by current frame */ + if (allow_missing) + return 0; + + av_log(s->avctx, AV_LOG_ERROR, "Could not find ref with POC %d\n", poc); + ref = generate_missing_ref(s, poc); if (!ref) return AVERROR(ENOMEM); @@ -484,7 +490,7 @@ int ff_hevc_frame_rps(HEVCContext *s) else list = ST_CURR_AFT; - ret = add_candidate_ref(s, &rps[list], poc, HEVC_FRAME_FLAG_SHORT_REF, 1); + ret = add_candidate_ref(s, &rps[list], poc, HEVC_FRAME_FLAG_SHORT_REF, 1, list); if (ret < 0) goto fail; } @@ -494,7 +500,8 @@ int ff_hevc_frame_rps(HEVCContext *s) int poc = long_rps->poc[i]; int list = long_rps->used[i] ? LT_CURR : LT_FOLL; - ret = add_candidate_ref(s, &rps[list], poc, HEVC_FRAME_FLAG_LONG_REF, long_rps->poc_msb_present[i]); + ret = add_candidate_ref(s, &rps[list], poc, HEVC_FRAME_FLAG_LONG_REF, long_rps->poc_msb_present[i], + list); if (ret < 0) goto fail; }