From patchwork Tue Jun 14 01:22:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 36212 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp801125pzb; Mon, 13 Jun 2022 18:30:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjmnEwyk8TrdHDQYv1EFB1a8K2kLLnRFbejW26F34JVFsGU7vqn0En9wOltOsczUEFNmJv X-Received: by 2002:a05:6402:c08:b0:42d:d005:13c1 with SMTP id co8-20020a0564020c0800b0042dd00513c1mr2934154edb.187.1655170208422; Mon, 13 Jun 2022 18:30:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655170208; cv=none; d=google.com; s=arc-20160816; b=DGF0iDVizXg5Mq24QwodoNWl0Wzrv9Aqi3MUrVpN/kN8CMlI5UFjHUvOzGn44BGC00 CEHvip5w7Gl0J1yp993QYpawT+/fN8zAT25lchvDrn9fLjQRXde1L3OAJ72r9Jn6jrl6 s2Og7gGKSy8mtphFhBMKz0yFQGQ77y2JXHbyJF5bGzsNVRE+jSYxoJNTNGIjI1I9RXIR 7/EEReq1G8Rg3/qE4H2bft7GSKyjDgsUSgbc/a2wjAhG/yeVwYrGMpH4/hS82U2TorIz Q9jkpf6Kf6eYKAHIFWUl0sXRDT0DsBjb0G8IVA5ITZrTi4VOlZWbKV8kNbTMy661w/2B 6vBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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:message-id:date:to:from :dkim-signature:delivered-to; bh=Yy+E2lqTNX1xJZTnxGqeCIKXYchh8GwE4hMp6j4KHzo=; b=e9z1dvVQbSdXkY3gyM+2WuA+QBE9JDsfdXAbUgF+j80MzexITqcbUY+WbmZU74Nyv4 us7kOy1hToYqp61xQFqeaEZc0b7x1drHkGeywJQKmVRj+T0oykg+9khzQ5bTRmSqKFa0 FFs1ZyqeTQhfn/IZpfyzKcFAC89SxXeulLIhj/36a7OOr29++Q5bhEg4Lec1tMkstUD3 sucGz67QMRariLJOl5OoepAGc2C390RKdcGsJUGEqjoUS6H08dCvTzJ9zk2UX3c0pSFX y/W2QwSWD5uW/GY39RHnlhep7YAfPZu1+iZSKKyTteRt+FJoJeZEDIdBiKLjaXANVmnG 4URQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=LNaUPKaV; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gn23-20020a1709070d1700b006f379d6f423si11137910ejc.582.2022.06.13.18.30.06; Mon, 13 Jun 2022 18:30:08 -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=@intel.com header.s=Intel header.b=LNaUPKaV; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 33C1F68B62B; Tue, 14 Jun 2022 04:30:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8BFB668B41C for ; Tue, 14 Jun 2022 04:29:56 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655170201; x=1686706201; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=06lzTtdsFH5PcJcBKVEex75VUU62tdIpDCcqCKrfJp8=; b=LNaUPKaVr5nZximc1ikMilfs1bB88uv8fhqQoypDhfJvvzYsClWef6Ej rVVHPFM6Lj/XRLuu4QXUsYJ7hFhWWA7D5wsBN5kjN4CgCQN5dRxzeSNNu pofAV+zol52xE/DznJCBt+brvxgqYKldlV06zvmYXa3QMXyubHFP0UN5v 8Itt+vMM8RRTFBt7xCCw9/CgVps4M542RbbxzxDESn+e7g2ycW869bls7 HEyy8ImdqGsyZZGA56BGLfWr3q75FUeP3Wxn+dgzuSMYCT2v1zndCqaz5 bFNSOjpXC72//cWxQxZVq0a3T5d4BMUSj3gBQaVqj1PDcryWCiooIQ5KT A==; X-IronPort-AV: E=McAfee;i="6400,9594,10377"; a="342432952" X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="342432952" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2022 18:29:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="686378049" Received: from t.sh.intel.com ([10.239.159.147]) by fmsmga002.fm.intel.com with ESMTP; 13 Jun 2022 18:29:50 -0700 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Jun 2022 09:22:59 +0800 Message-Id: <20220614012302.2808428-1-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 1/4] lavc/hevc_refs: fix dpb logical for IRAP 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: Xu Guangxin , Fei Wang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 26CmI7QoUPW9 From: Xu Guangxin According to C.5.2.2, item 2. When we got an IRAP, and the NoOutputOfPriorPicsFlag = 0, we need bump all outputable frames. Tested-by: Fei Wang Signed-off-by: Xu Guangxin --- Update: 1. fixed segment fault for some special clip in 2nd patch. libavcodec/hevc_refs.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index fe18ca2b1d..3f8fe1ef18 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -174,21 +174,24 @@ int ff_hevc_set_new_ref(HEVCContext *s, AVFrame **frame, int poc) int ff_hevc_output_frame(HEVCContext *s, AVFrame *out, int flush) { + if (IS_IRAP(s) && s->no_rasl_output_flag == 1) { + const static int mask = HEVC_FRAME_FLAG_BUMPING | HEVC_FRAME_FLAG_OUTPUT; + for (int i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { + HEVCFrame *frame = &s->DPB[i]; + if ((frame->flags & mask) == HEVC_FRAME_FLAG_OUTPUT && + frame->sequence != s->seq_decode) { + if (s->sh.no_output_of_prior_pics_flag == 1) + ff_hevc_unref_frame(s, frame, HEVC_FRAME_FLAG_OUTPUT); + else + frame->flags |= HEVC_FRAME_FLAG_BUMPING; + } + } + } do { int nb_output = 0; int min_poc = INT_MAX; int i, min_idx, ret; - if (s->sh.no_output_of_prior_pics_flag == 1 && s->no_rasl_output_flag == 1) { - for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { - HEVCFrame *frame = &s->DPB[i]; - if (!(frame->flags & HEVC_FRAME_FLAG_BUMPING) && frame->poc != s->poc && - frame->sequence == s->seq_output) { - ff_hevc_unref_frame(s, frame, HEVC_FRAME_FLAG_OUTPUT); - } - } - } - for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { HEVCFrame *frame = &s->DPB[i]; if ((frame->flags & HEVC_FRAME_FLAG_OUTPUT) && From patchwork Tue Jun 14 01:23:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 36213 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp801188pzb; Mon, 13 Jun 2022 18:30:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyQ0Ff1rOJhdt67bjTX2tts8hk2e7lL/JAtbO6X6MzVhlh1taw3nvtUA46Z9HYVIZXbFc/b X-Received: by 2002:a17:906:af71:b0:70b:cc0b:1f14 with SMTP id os17-20020a170906af7100b0070bcc0b1f14mr2123489ejb.669.1655170217577; Mon, 13 Jun 2022 18:30:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655170217; cv=none; d=google.com; s=arc-20160816; b=0E2wbFgJwGgKEESsZqmMzjDYPey9jJaumexLWMVGfkLeI8r/ocu6hzsKFoZFpfdhX6 nU3u0KXviZIh+aeGkx9NIRnDnC+YX+j7esP01G0v8SZjDaxC7oysHmciPmg4QenjjJDC 3GXbUR3NV+jFrCCc/xBWiMw0B167rXNut5/C/oza3GBhs7Oymc+ZmddwFyLec+niDdNt Lpy3bDZS0HN0rd+qhdFTJeVuLJk4KlASM/8/g3FPZss3Ff1nK8UHd3V0lfcDIW/K+Ng+ maWXimUPa0N8CIX6YGB7uHuIgJF2q4FrqVR9x2xaicoF1YZpmtZqncN95rYARIwz8fzz ZtCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=fZe61Ppy4U9dlZKSKiUcezVnLPgzYrfB+EYiO69Gyxg=; b=xMOiOf9b0P5W4WZxX5UjmoucAa3qX2TR4O+JwlhtkVHDLZywFJdaudPmdJw9Gl4615 JRt7iQeHbGWuJqC6+sLZkbcYPjIODLyIhOa/LV8E94qEg+9+t5kqfC26grBWhPuSJUgq mhWjjvs2NJ7pCzSOE9mg3N/wf3Lu/3QKZcG6Lwx3P6vNlwvvqrc7VXnp0Gs+lrP+nDB0 mwEBK6cbIBAGGgXDJq+6kIspSuu5RSAvKTfO1+gi+/JGFKxzOQIDyCpGOXc3SkUG3WvV 7iFtYee0/i8hb8iFECWlqJmhRKeYGxaArQ3OVY2aMby6QxBhApviJLxP6SgVCAY7D9k5 dGag== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=DPAMexyF; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 9-20020a170906024900b006f3b5fbc9easi9109823ejl.904.2022.06.13.18.30.17; Mon, 13 Jun 2022 18:30:17 -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=@intel.com header.s=Intel header.b=DPAMexyF; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 46D6B68B636; Tue, 14 Jun 2022 04:30:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A08CB68B333 for ; Tue, 14 Jun 2022 04:30:02 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655170207; x=1686706207; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kp0kfqAH36tcbraDoEOtpSPO3NAypSToQVgeQc0VzjY=; b=DPAMexyF2qxeNAg5IpI9oW1ERdBPciAmQDSThGW/lexkvwuqeaaRX6eS tRmSJjPVpdhd51/zr9ayCb5tWAhAbaRdjQ55qE7c+6/lHCgD/yr9HH640 mqOBENPivTvqMreKxW8L+YH1AiG1BYRmli3OpgsfCcP6oRqjrGlNh6uyo prd4j4sRGCOjfTQQOP5QJrGlIoatq/p97Hlmov3mnXAY1ZVckrOd+S+ko sVvWa5nwBjpRJ/+lHivJa9j5yixkuGU42LOKEBceKZwbFz8UBmRGzOcVC ClbYUR7nXWNG0C5VzCQKOdXWNJSqgML0VXtyqJSEge6SThTFBbt+EoWWt g==; X-IronPort-AV: E=McAfee;i="6400,9594,10377"; a="342432964" X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="342432964" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2022 18:29:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="686378070" Received: from t.sh.intel.com ([10.239.159.147]) by fmsmga002.fm.intel.com with ESMTP; 13 Jun 2022 18:29:51 -0700 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Jun 2022 09:23:00 +0800 Message-Id: <20220614012302.2808428-2-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220614012302.2808428-1-fei.w.wang@intel.com> References: <20220614012302.2808428-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/4] lavc/hevcdec: do not let missing ref frames invovled in dpb process 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: Xu Guangxin , Fei Wang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: o29/N/HKBUD0 From: Xu Guangxin We will generate a new frame for a missed reference. The frame can only be used for reference. We assign an invalid decode sequence to it, so it will not be involved in any dpb process. Tested-by: Fei Wang Signed-off-by: Xu Guangxin --- libavcodec/hevc_refs.c | 14 +++++++++++++- libavcodec/hevcdec.c | 4 ++-- libavcodec/hevcdec.h | 3 +++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index 3f8fe1ef18..89053fd1a2 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -172,6 +172,16 @@ int ff_hevc_set_new_ref(HEVCContext *s, AVFrame **frame, int poc) return 0; } +static void unref_missing_refs(HEVCContext *s) +{ + for (int i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { + HEVCFrame *frame = &s->DPB[i]; + if (frame->sequence == HEVC_DECODE_SEQUENCE_INVALID) { + ff_hevc_unref_frame(s, frame, ~0); + } + } +} + int ff_hevc_output_frame(HEVCContext *s, AVFrame *out, int flush) { if (IS_IRAP(s) && s->no_rasl_output_flag == 1) { @@ -418,7 +428,7 @@ static HEVCFrame *generate_missing_ref(HEVCContext *s, int poc) } frame->poc = poc; - frame->sequence = s->seq_decode; + frame->sequence = HEVC_DECODE_SEQUENCE_INVALID; frame->flags = 0; if (s->threads_type == FF_THREAD_FRAME) @@ -462,6 +472,8 @@ int ff_hevc_frame_rps(HEVCContext *s) return 0; } + unref_missing_refs(s); + /* clear the reference flags on all frames except the current one */ for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { HEVCFrame *frame = &s->DPB[i]; diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index f782ea6394..99785aa5d1 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -569,7 +569,7 @@ static int hls_slice_header(HEVCContext *s) } if ((IS_IDR(s) || IS_BLA(s)) && sh->first_slice_in_pic_flag) { - s->seq_decode = (s->seq_decode + 1) & 0xff; + s->seq_decode = (s->seq_decode + 1) & HEVC_DECODE_SEQUENCE_MASK; s->max_ra = INT_MAX; if (IS_IDR(s)) ff_hevc_clear_refs(s); @@ -614,7 +614,7 @@ static int hls_slice_header(HEVCContext *s) return pix_fmt; s->avctx->pix_fmt = pix_fmt; - s->seq_decode = (s->seq_decode + 1) & 0xff; + s->seq_decode = (s->seq_decode + 1) & HEVC_DECODE_SEQUENCE_MASK; s->max_ra = INT_MAX; } diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index de861b88b3..9c8bcefb48 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -390,6 +390,9 @@ typedef struct DBParams { #define HEVC_FRAME_FLAG_LONG_REF (1 << 2) #define HEVC_FRAME_FLAG_BUMPING (1 << 3) +#define HEVC_DECODE_SEQUENCE_MASK 0xff +#define HEVC_DECODE_SEQUENCE_INVALID (HEVC_DECODE_SEQUENCE_MASK + 1) + typedef struct HEVCFrame { AVFrame *frame; AVFrame *frame_grain; From patchwork Tue Jun 14 01:23:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 36214 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp801259pzb; Mon, 13 Jun 2022 18:30:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzkDCOhbHVaTr5uXFF/0g/Q/comp2K0gAy5LY2XGWJb163nASfkjScl/lt1dHe+4q0Rrywl X-Received: by 2002:a05:6402:3489:b0:431:3565:4cb0 with SMTP id v9-20020a056402348900b0043135654cb0mr2918261edc.135.1655170227387; Mon, 13 Jun 2022 18:30:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655170227; cv=none; d=google.com; s=arc-20160816; b=Ez1qg/Ku0fMw7SuB9S1lVYFsKllF54ukhu71Cn/iwruvQWcmcmEcs6xpYRJmN6pbSP 3cpzIJEGG8yfGUZHaKxQ+p00IonAtpKIvPo8Yb3kN8XtxXO5SDPaTRDid44fcCFvgrYf D0Se3XnZgPGDta1X16KqeuzuPPS0Sv6aqqCkabu/3NOwMNDxHhRroUxINJmRjv1cL8Jo ecTFeVCPjp6TXWAjzEqpL5KD12+eThFFRr4sUpU8k4IzPWwadpbevflpZF/5lxZIMjQU BuOUggLIBfXPxj9po69IL1w4cR1EdRT9rURnqQYAqgIBGrRWLhOsBnTC34fEc1y/M52+ SOyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=JOEEBRQWTzuXRZRbVkBKPDRY2/NzqjI4klFsWlM3M90=; b=xbvGJthexXKSxiEI7ALyjnzN8/Dzo/vzpzsBtOL9DQ8ahQaPNJU/CYqYBMSNcEL+4r fehzgjEFXXzpXU2r9r35QaxubooRdFInIQq9VJ+Odpnm00yQMqQHb1wa4lGTBOmvftxu xufS0U++GR9lUnjZCip1xfD+WTGNYfjZ/yJFY/7XUT+vOjg2bepr6lIW+pMdO90KUpk+ ywPiTiCZOrxzic7fvsCMLWWkjoGgecWjcG82htOFHt2YPIdp2diYiPYUpFLkvqXze81i KOCglTeuhob+Lj31HrVls2/h927hHt4amHBx4mmaMBgPUvryLiJYdD3NTx3y31rvxhaT eXjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=LU24prE5; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hq30-20020a1709073f1e00b00718bf486a1csi5563689ejc.782.2022.06.13.18.30.27; Mon, 13 Jun 2022 18:30:27 -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=@intel.com header.s=Intel header.b=LU24prE5; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5E10068B63B; Tue, 14 Jun 2022 04:30:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1BB1C68B635 for ; Tue, 14 Jun 2022 04:30:03 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655170209; x=1686706209; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xrDuAkUQinydNcA32sTqNMa87dRrKEtcFfDYYv8LHkg=; b=LU24prE5Uu3rG6dynREYnXVZva/1kFgrMZTnvtEMYWxR2TVdbTMij/GQ IYZMp/Uk7OLlfx6qiWU77vr6X8sW0+/txhBdj9Jy9dT1xZrEGWPEv5GF5 GbBSVrRe4GA7r7aDFA+F87Qzk7QGBtT2N6AyuxJP06SOy5gpnEYP7yh/K CfqaqnYG/qlhOhBIOUxEfprEsTYT9mzW+n6e5FFgT4TSiH9i5WY1ZGjlQ u1IhiExnCs5rm9fLx8VmGLScvzurz+3UYRBmLrfMDzp5KtNaFTspSRruz yx18rqeK7QCgFyJeWX7KkFNGVyX1Zid1rtkg0VKjmW6sI9SdL/GSsGp1Y g==; X-IronPort-AV: E=McAfee;i="6400,9594,10377"; a="342432972" X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="342432972" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2022 18:29:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="686378080" Received: from t.sh.intel.com ([10.239.159.147]) by fmsmga002.fm.intel.com with ESMTP; 13 Jun 2022 18:29:52 -0700 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Jun 2022 09:23:01 +0800 Message-Id: <20220614012302.2808428-3-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220614012302.2808428-1-fei.w.wang@intel.com> References: <20220614012302.2808428-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 3/4] lavc/hevc_refs: exclude current frame from long term refs 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: Xu Guangxin , Fei Wang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: szainKFOfhoU From: Xu Guangxin suppose a. You have 3 frames, 0, 1, 4096. b. The ltMask is 0xfff and use_msb is 0. c. The 0, 1 are lt refs for 4096. d. you are decoding frame 4096, and get the 0 frame. Since 4096 & ltMask is 0 too, even you want get 0, find_ref_idx may give you 4096. add_candidate_ref will report an error for this Tested-by: Fei Wang Signed-off-by: Xu Guangxin --- libavcodec/hevc_refs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index 89053fd1a2..b3d5f96043 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -386,7 +386,7 @@ static HEVCFrame *find_ref_idx(HEVCContext *s, int poc, uint8_t use_msb) for (i = 0; i < FF_ARRAY_ELEMS(s->DPB); i++) { HEVCFrame *ref = &s->DPB[i]; if (ref->frame->buf[0] && ref->sequence == s->seq_decode) { - if ((ref->poc & mask) == poc) + if ((ref->poc & mask) == poc && (use_msb || ref->poc != s->poc)) return ref; } } From patchwork Tue Jun 14 01:23:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 36215 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp801332pzb; Mon, 13 Jun 2022 18:30:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxsWTgXvew+iIbuZi8bu298JgxISpjRiu8+ZIJDozqx2i0x6JVYQnZbtuEldEVJAk8a4bhy X-Received: by 2002:a17:906:4e89:b0:711:c64d:ca4a with SMTP id v9-20020a1709064e8900b00711c64dca4amr2132742eju.203.1655170237810; Mon, 13 Jun 2022 18:30:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655170237; cv=none; d=google.com; s=arc-20160816; b=jr9+fxxeB6vUvzizzzMQ0mbHGjbtwoEVk/RBBl6pmNlB7+5sB96fiBKIXF/I6aK0He woFcEQgthpNivIoHFoSP8K0BDoeLg0jHkL0ebRZlxEyQOzPAWfeM3F+fiHanAVD8eMg9 c9jiawrrHFjvmK1B5STq6A1ovG6xyOSXZ4om7fAUTtRFqnHfFeLXs+qQh14GK/43SS5r ThkWJNLeBRN14DOVPgCj6lk+XXOTdclXnYouXHZ+aQrfTb/5W5rhT7i3U0BF6jVRiyYh MmYelwdwjFz8x6EwjqtDj2xjh47xRtWR6s4Vcx7VLX2fLzaISKBaEeXaX3cQJTIPpjBs a43Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=bp4Ct9aqTs/zdLEot0OIroNrETDduwmwo1Ml8UDOUGE=; b=vMZ68tXOuNvBZKz9z9JitQaiydvoWhcVlgS2BTHxiyRrhfL3+o+2IXjWcmZLQbL2ek 2D/VeAzVQn/7GR5lYY3r9GnU5pVA/b0RveCtAwAlYU94hJEcqkTEJDiLmOqsiamnlPIO ULeWIkRI48RXLvsMWG1rbFHzXrmB1dPpyaSiMT5Tdy5P3Ghj1PVyRwvu1qfRCwoA8BT6 79mbcto1PRpFFlTHBA/dbUbjGkoUeU1r1KfFMrx9ryg52eIRr60JOG42+1PRQyYOBtgJ /tKoWa4XQ54CnMSQDpBt5JhFjkQfzTwN952ERNEGrqyBn7A2lDAiV4y/zssmEIuh5g9+ CtAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="MjJoh/R8"; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e10-20020a056402190a00b0042de3d661d1si12070767edz.426.2022.06.13.18.30.37; Mon, 13 Jun 2022 18:30:37 -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=@intel.com header.s=Intel header.b="MjJoh/R8"; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 60C8B68B64A; Tue, 14 Jun 2022 04:30:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8BE5468B333 for ; Tue, 14 Jun 2022 04:30:08 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1655170213; x=1686706213; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zrfoRLnOLbzuKy/UCGBhe1ch8MZKZ3opJz0TucHgacQ=; b=MjJoh/R8mrWTbD8oFDwgKQ2sPuoajI6geSUOWNPjQeUm+Crzonh6sx72 kO1D+SQCvvvadtxkjC+B9qPYSZZwuD7mFwkWC7hLSCRUbhsPBCyD1Bho7 ObIuAmzerfYo6ImTTGL7E4u3xXX85iiUcD77c+S4no4XrgIOT5GxinNiT LH4e7GW6k+S2RxZHlhm2sf3os5iLQFBwfnrIxpwSsyJgToTgJ2ZKLDI49 3p6TKVdWAB7YRiuwdg1UKkG2yYZZZ8jY1ubnjrF/nQad8AyILFUkvfu8H MLTmueftQeQsKcgerCt4j//cfbvSz0s3kKm65urXc7FvelZx4ygf8sTLW A==; X-IronPort-AV: E=McAfee;i="6400,9594,10377"; a="342432976" X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="342432976" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jun 2022 18:29:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.91,298,1647327600"; d="scan'208";a="686378091" Received: from t.sh.intel.com ([10.239.159.147]) by fmsmga002.fm.intel.com with ESMTP; 13 Jun 2022 18:29:54 -0700 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Jun 2022 09:23:02 +0800 Message-Id: <20220614012302.2808428-4-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220614012302.2808428-1-fei.w.wang@intel.com> References: <20220614012302.2808428-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 4/4] lavc/hevcdec: respect the value of no_output_of_prior_pics_flag 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: Xu Guangxin , Fei Wang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IM8W49DFP6he From: Xu Guangxin Even resolution or number of picture stores changes, we still need follow no_output_of_prior_pics_flag in next IDR. Tested-by: Fei Wang Signed-off-by: Xu Guangxin --- libavcodec/hevcdec.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 99785aa5d1..b0317339a2 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -594,15 +594,8 @@ static int hls_slice_header(HEVCContext *s) if (s->ps.sps != (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data) { const HEVCSPS *sps = (HEVCSPS*)s->ps.sps_list[s->ps.pps->sps_id]->data; - const HEVCSPS *last_sps = s->ps.sps; enum AVPixelFormat pix_fmt; - if (last_sps && IS_IRAP(s) && s->nal_unit_type != HEVC_NAL_CRA_NUT) { - if (sps->width != last_sps->width || sps->height != last_sps->height || - sps->temporal_layer[sps->max_sub_layers - 1].max_dec_pic_buffering != - last_sps->temporal_layer[last_sps->max_sub_layers - 1].max_dec_pic_buffering) - sh->no_output_of_prior_pics_flag = 0; - } ff_hevc_clear_refs(s); ret = set_sps(s, sps, sps->pix_fmt);