From patchwork Thu Jan 5 16:14:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 39877 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:bc95:b0:ad:ade2:bfd2 with SMTP id fx21csp206627pzb; Thu, 5 Jan 2023 00:15:07 -0800 (PST) X-Google-Smtp-Source: AMrXdXudCes4COOd9xPOylFdZsGF0xpVuPdEsrRg1qKLrWooxdgI9W5fZLwJ6BD2VCApMfKg//sb X-Received: by 2002:a17:906:2489:b0:7c0:fa2d:9af3 with SMTP id e9-20020a170906248900b007c0fa2d9af3mr46035923ejb.45.1672906507010; Thu, 05 Jan 2023 00:15:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672906506; cv=none; d=google.com; s=arc-20160816; b=WFo15QlnzTBXlpxGJoWe1IFIVUg1ZGrKoTk1ZL4XZwB8/CqEg5kE1EAvlXUOMvsX7O Z2PYPJWdSSPeflId4iittQ+W38ytNGKz39XS/vWOcfSM9QyX8fkhngc15kfxKt2D4jmR Ac6fbfvl946X6YBrFls7Cx0ztlRooJqa3S4t//zyLZEsUDsahKPo49wLm5wKZaBzXB19 4bsyGtDU7RbJWMVkN+EaUtBThxFDs5iNkxGCL69l3zoITIDqwq9djKv5PyMyEK0WVKCl xtzTCqkHOykg/y6gr87ftm/v6efAbzFeKvXpRvVldZ+G/VUwLpkoLgcAzYi4JZKwInm7 HGBQ== 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:date :to:from:message-id:dkim-signature:delivered-to; bh=bsDl0TG8QXkzL1t9uxAu7SY/h1KzaAReI2CvNfWcdpw=; b=BXXIaQQqyA6QewPNiLs31/gq1uDA2anV3XXkjkAGUybV9p8plReKtFLeDt7XanhbSt DMn2roGyjR5zoc4AD7x8CAu8fGElO5lTLOLo7CKfxZfJIQj1XmSz9htn6MAIFLrICGcu zYVpR21XmgliMmVMvDW9tGYbeCBB72hStjC7oh4nynIDUawln5/fYQ0GHqR9aXNwok6J gRdq6KEkmkLiKac5tUcd5+wCCixZ6j7nDRA3tpOEhZ+zr679E6O4wmJSctivYR37fqz8 mULKdan1nNxSIzjSgU35ZfuYH291sKbPDYahmwHfU3hbCOdNEJmlj88GuLOR1kXjk5rQ clWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=dXS1uZ3J; 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 xh12-20020a170906da8c00b00787b9cd2fe3si31261941ejb.844.2023.01.05.00.15.06; Thu, 05 Jan 2023 00:15:06 -0800 (PST) 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=dXS1uZ3J; 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 4348668BCBB; Thu, 5 Jan 2023 10:14:47 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out162-62-58-211.mail.qq.com (out162-62-58-211.mail.qq.com [162.62.58.211]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1A25568B752 for ; Thu, 5 Jan 2023 10:14:38 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1672906474; bh=C1o5Cfbjt7FoS+8RgZOXwgJfuPSA7p3Sx2MXkyQ8OIM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=dXS1uZ3Jvwm/sAhL2n6V9iP3cTd/0iYgSFiUZoQVHMlurISh2kYJA8kpZxSQ5uI08 iYVWXakmw5x6pH0k7ItKfBZ6J4RYsjE2sX8RnPngk4DQEfs3704L1XgASquL68MiAX 3Jw3jA7aGi0huQhs4G6oA9uc866roSIK9I+F726A= Received: from localhost.localdomain ([59.37.125.102]) by newxmesmtplogicsvrsza2-0.qq.com (NewEsmtp) with SMTP id 39F0DCCA; Thu, 05 Jan 2023 16:14:31 +0800 X-QQ-mid: xmsmtpt1672906473trs2ua9bp Message-ID: X-QQ-XMAILINFO: NJ/+omVLhVgaNoo3uyuXlWoe27MU+WVVuj0o2O7UNG/m/ksUHE9hR4iL3I55SA Yn0+dmew/twzF1zWNFOT5XKS0dI+PmWC9VBp/NPXeQC/2jf4+0eeIaY1eUAcUeuE8ltNIlaseH+d BAx2Ckh+RvFvKRTEEs1/8tx05nWn5voJmGzHg491HEoxP7DtqTFSAdmfAUEpUaYOaYlwixKvtK+5 UOXjohbsSIlyECyDjeCLBLfV+9aDhNtsU9QFcqdrWpYzYRje/7Y9DsiKjO+hhD9Xm3sPz8OHzHTu qKcZSi0HO2Zc6CYN6Ucm/M1N080tjV3giFcEeXIk4yB2NUuw/2xc9iCIP4tHNsdPHmRSAsBr8cXX +hyjnFmHExaKh5pfO+D5jmlt4udBHTfAz5sI19qbkgjjiCzdJrcHdHdfDJtiRQG83MfjKS8+aefU HRt35qi5vIXBK5RVxMoJrfDN5cxKsaH6A3TCQ0M4kbljuiKS3XQBF/H3cOstMXcLkY2IWjtwN0na riWEPKGFHaMJ/OeLB5WeZKw4BMWbhx0V3nQ2YHCewtSZpnY2H0EK07rojIVtEDrVoID0Nt5ExNYs dg8WWgPAC/g5RMnQvMC1sZqFNscfDkj8hV98p3710jCRqtTeTX2tgxVIPeFiNWuhemO1RT+jZuYh Y+7Wc2Q8zFQBA0oYRwqQHbkcIcb2W4lZGr8RKOKthv+ED8YkGpvInJpngzY4C+jzE4w/sTgQ7vM+ TBHQKRpd3CLzRFwwHxtbpQ8oFId0nDrI7fFrIQmpPSV2zZhm/ovp9EhNO7LG9gOuIuRKRf5Bqn0L wcsvSzkEZ4WA2Ib0KmDZNMDHSfSz5vMr9OgHmKaf21PERzNc6M9P3kPAEIIl4ujQVVcBfDpxnCCs 5PcbcWMf6GCjEL59I7fo1HOMDO6BVSF53ca/J78xqjMhDp8042W5AP6ya/IGEOA/vEXbhNeNIO8y 3pTbXKkyen2GqRgNVnWSvT4sZwLNBw From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 6 Jan 2023 00:14:15 +0800 X-OQ-MSGID: <20230105161416.194463-4-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230105161416.194463-1-quinkblack@foxmail.com> References: <20230105161416.194463-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [RFC PATCH 3/4] avcodec/hevcdec: add nuh_layer_id option 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: Lhx70lSuDSdD From: Zhao Zhili It can be used to decode selected independent non-base layer. One use case is alpha layer decoding. Signed-off-by: Zhao Zhili --- libavcodec/hevcdec.c | 20 +++++++++++++++++++- libavcodec/version.h | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 567e8d81d4..9641922834 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -3216,7 +3216,8 @@ static int decode_nal_units(HEVCContext *s, const uint8_t *buf, int length) if (s->avctx->skip_frame >= AVDISCARD_ALL || (s->avctx->skip_frame >= AVDISCARD_NONREF - && ff_hevc_nal_is_nonref(nal->type)) || nal->nuh_layer_id > 0) + && ff_hevc_nal_is_nonref(nal->type)) || + nal->nuh_layer_id != s->nuh_layer_id) continue; ret = decode_nal_unit(s, nal); @@ -3637,6 +3638,21 @@ static av_cold int hevc_decode_init(AVCodecContext *avctx) HEVCContext *s = avctx->priv_data; int ret; + if (s->nuh_layer_id > 0) { + if (avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { + av_log(avctx, AV_LOG_ERROR, + "Decode selected nuh_layer_id is undef development. " + "Use -strict -2 to use it anyway.\n"); + return AVERROR(EINVAL); + } + + if (avctx->hwaccel) { + av_log(avctx, AV_LOG_ERROR, + "Decode selected nuh_layer_id doesn't work with hwaccel.\n"); + return AVERROR(EINVAL); + } + } + if (avctx->active_thread_type & FF_THREAD_SLICE) { s->threads_number = avctx->thread_count; ret = ff_slice_thread_init_progress(avctx); @@ -3691,6 +3707,8 @@ static const AVOption options[] = { AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, PAR }, { "strict-displaywin", "stricly apply default display window size", OFFSET(apply_defdispwin), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, PAR }, + { "nuh_layer_id", "Select which nuh_layer_id to decode (only works with INBL)", OFFSET(nuh_layer_id), + AV_OPT_TYPE_INT, {.i64 = 0}, 0, 62, PAR }, { NULL }, }; diff --git a/libavcodec/version.h b/libavcodec/version.h index 6b8a1dbb79..15f7c3fe3d 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -30,7 +30,7 @@ #include "version_major.h" #define LIBAVCODEC_VERSION_MINOR 56 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \