From patchwork Mon Dec 5 06:09:17 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: 39597 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010038pzb; Sun, 4 Dec 2022 22:10:00 -0800 (PST) X-Google-Smtp-Source: AA0mqf5OPTlbeBtF5SlI84TeTicPqqsSyCtOygpIvQyRBkjl01R5tJOYc+oyKg77rmDJk/ZFsDoY X-Received: by 2002:a17:906:8309:b0:7c0:dab0:d722 with SMTP id j9-20020a170906830900b007c0dab0d722mr6196352ejx.353.1670220600306; Sun, 04 Dec 2022 22:10:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220600; cv=none; d=google.com; s=arc-20160816; b=HHguXZB0N0KrzbHQEnqH5nAw0F1+ko/GROloA/1lH0cH+CHF/qqyFBsfDfp3IStk15 Cr35Ba192AYX3Ws7BAKPsPK6HtKekGXCsSivshg5IcpAPgLe7NPPBAR655UfCnpuUqUy maH/rGOzRvKAsKFsVeAKK4K++Sj/1xh+DUodC1D0ugJXmzufCRhcqR8lHGU4fnGCYJXy /te+Wc05y6bB4dlKumvKEfpucMx+P9Qujd0wIsqXum98m88CMhtJ5csli90STVibOQLh rb5QFz/EGYC5DCCE7QhlEqfiCtPiW36sdm5sB35VFGNxP6ysZ8VUlf17Z4nHUdOm94mC sU+g== 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=sz14jMCyVnJaGBJnHan36aa+1csi+XYz4o4uh80NA/8=; b=f7XdnfGAYBwKVcLuVywVdBqy7DrfuhhiZzG1SwC0W8iNK6JDNRLYG39TvwKZzPIR+e XN8JTmL0MN9ar2T7CrUzO4NOiPPdwqOEdldxM90+BJb4ul7XkjUTbfQ293YJJUvPci7L B61jq2ogYJCf6P0JIJcAPhFtZrQUOB4dhcbNW/auhMrCry03NnOKsnbEHxngz3JyzJBF DN5rMRLMXp1BFcpxtP3qpdVBIYhC0VqtCXB4PG3uHboHSQ0UwFINFMluvhU5DeKYLAQm OLHUFabpPuGogWo0uQe+9bZFn05wcyKFH3gyi3gOVJnLLZ6pS5xxKFPgbxN8IzeEo7N0 OBPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=aMCHdtq4; 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 a44-20020a509eaf000000b0046b3055748csi10387834edf.75.2022.12.04.22.09.59; Sun, 04 Dec 2022 22:10:00 -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=@intel.com header.s=Intel header.b=aMCHdtq4; 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 810436801B0; Mon, 5 Dec 2022 08:09:56 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F3F09680B61 for ; Mon, 5 Dec 2022 08:09:48 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220594; x=1701756594; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=oap552JxcAIHeVVe+/yTCwcESyYe6YiiYcgguu+ern8=; b=aMCHdtq4xnVlAzpA9/CPmqCf9DflgYG6yafSywBUD+AQFuyzpkMbzFmn yFSRJaM3aDTDfhjU+HK7INGauDKFKNlJs/uneQNvBCGKHt8VxVwuVWh9Y /DSJszEip+sD5sRMITz2KRwn8TLxMFcId9LZhounumE5sVWvIZytWJgiQ rKRUJXlxUzvSzvml8Qo3Ekmf6KJLbus4pc03Bp1Ql1diodIc+KG5ypvyp kXXTCXd7y5ueSpiA+UrT0aWZKrZowjrNkBLRzfpvB5ix3qIFQI4/a99i4 B8iHmBkQimZe5L37qdzhoY50oDF+uugHLXfJrtWD9Wg5GhJ3trcnQ6Xcq w==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971336" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971336" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:46 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700055" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700055" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:44 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:17 +0800 Message-Id: <20221205060929.2511871-1-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 01/13] lavc/hevc_ps: remove profile limitation of pps_range_extensions() 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: Fei Wang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: hihOkSfpu6EN Follow spec 7.3.2.3.1. Signed-off-by: Fei Wang --- update: 1. fix uninitialized variable which may cause segment fault. libavcodec/hevc_ps.c | 2 +- tests/ref/fate/hevc-conformance-PS_A_VIDYO_3 | 50 ++++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 5fe62ec35b..537a3ff99b 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -1658,7 +1658,7 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, if (get_bits1(gb)) { // pps_extension_present_flag pps->pps_range_extensions_flag = get_bits1(gb); skip_bits(gb, 7); // pps_extension_7bits - if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps->pps_range_extensions_flag) { + if (pps->pps_range_extensions_flag) { if ((ret = pps_range_extensions(gb, avctx, pps, sps)) < 0) goto err; } diff --git a/tests/ref/fate/hevc-conformance-PS_A_VIDYO_3 b/tests/ref/fate/hevc-conformance-PS_A_VIDYO_3 index 59b82b72bb..d1d86b2dc9 100644 --- a/tests/ref/fate/hevc-conformance-PS_A_VIDYO_3 +++ b/tests/ref/fate/hevc-conformance-PS_A_VIDYO_3 @@ -3,28 +3,28 @@ #codec_id 0: rawvideo #dimensions 0: 416x240 #sar 0: 0/1 -0, 0, 0, 1, 149760, 0x88619f80 -0, 1, 1, 1, 149760, 0x550bdaf0 -0, 2, 2, 1, 149760, 0x4121f7a2 -0, 3, 3, 1, 149760, 0x210b1d07 -0, 4, 4, 1, 149760, 0x731b7758 -0, 5, 5, 1, 149760, 0x17adb789 -0, 6, 6, 1, 149760, 0x98b2f080 -0, 7, 7, 1, 149760, 0xc0be1f2a -0, 8, 8, 1, 149760, 0xc01e387a -0, 9, 9, 1, 149760, 0xd932822b -0, 10, 10, 1, 149760, 0x16c0a1df -0, 11, 11, 1, 149760, 0x5aa6c005 -0, 12, 12, 1, 149760, 0xd3aab602 -0, 13, 13, 1, 149760, 0x4e6ecab1 -0, 14, 14, 1, 149760, 0x8a86f1f2 -0, 15, 15, 1, 149760, 0x2ed21e1b -0, 16, 16, 1, 149760, 0x80892f24 -0, 17, 17, 1, 149760, 0xb8a952ef -0, 18, 18, 1, 149760, 0x557e57fb -0, 19, 19, 1, 149760, 0x2b825b2c -0, 20, 20, 1, 149760, 0x30b69b5e -0, 21, 21, 1, 149760, 0x802ebf08 -0, 22, 22, 1, 149760, 0x95aadc8e -0, 23, 23, 1, 149760, 0x4d4c02b7 -0, 24, 24, 1, 149760, 0x3fdd1762 +0, 0, 0, 1, 149760, 0x5c4f70f4 +0, 1, 1, 1, 149760, 0xf4628e59 +0, 2, 2, 1, 149760, 0xa28e5bdc +0, 3, 3, 1, 149760, 0xda0e53d7 +0, 4, 4, 1, 149760, 0x42dd334a +0, 5, 5, 1, 149760, 0x25ba9dfe +0, 6, 6, 1, 149760, 0x8854d8ca +0, 7, 7, 1, 149760, 0xc04505d4 +0, 8, 8, 1, 149760, 0xd3fce146 +0, 9, 9, 1, 149760, 0x8bfd88bd +0, 10, 10, 1, 149760, 0x33d965b2 +0, 11, 11, 1, 149760, 0x12746b7a +0, 12, 12, 1, 149760, 0xb7642694 +0, 13, 13, 1, 149760, 0x32b5035f +0, 14, 14, 1, 149760, 0x7bea0af1 +0, 15, 15, 1, 149760, 0x577d4fc8 +0, 16, 16, 1, 149760, 0x023a9c66 +0, 17, 17, 1, 149760, 0x9abe76c4 +0, 18, 18, 1, 149760, 0x2b14dba5 +0, 19, 19, 1, 149760, 0x7b8affcf +0, 20, 20, 1, 149760, 0x21e4c323 +0, 21, 21, 1, 149760, 0xf0b7d9cd +0, 22, 22, 1, 149760, 0x4db0c5bc +0, 23, 23, 1, 149760, 0xf455f752 +0, 24, 24, 1, 149760, 0x569fec99 From patchwork Mon Dec 5 06:09:18 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: 39598 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010106pzb; Sun, 4 Dec 2022 22:10:10 -0800 (PST) X-Google-Smtp-Source: AA0mqf42OfHZSK/f7L73BGkTHECB+LK11bVoLNPu5iY+X80huZbxQFXqc+UP2gO2XaXld1XvSiu9 X-Received: by 2002:aa7:d0cc:0:b0:469:d36e:3213 with SMTP id u12-20020aa7d0cc000000b00469d36e3213mr22284976edo.206.1670220609839; Sun, 04 Dec 2022 22:10:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220609; cv=none; d=google.com; s=arc-20160816; b=Xzig9IFFSAZJAqiD3KZR2FMxqyXyjxIpAhIC8FGUlc0w294lcR8lymuwDWL0oWUrcc rTLDywAuF30Y2sYT/+WTOVv9sokXV8W+dIjM6iE7WNa+r/Vn6ZFWvStu6JMHvCIL/kpB 7swGTnG54BKwZLjXMv6kqa+o09v8eW+v8PsOJhCoNSPTkhLNZPVwldj9LKmQanUgrO9h UNUVvMpEVKUZbg2gxskLVob0iTARabGtZSXPDffUBDuHAhbfP1+Js7SUdBalQkijGN9x ni0IskIlKd6sSXwA4EqoOzuNm+zhtphW7OHDakSDtPTTL0I+i50wX86colQGbf0iY/Rz j8cA== 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=aqcPnSr2x0O51oWVonamXdv1WCth2m4eCJrg5SGQQRo=; b=zzgA5O11sWvoyl3yt8vVRKWb4ZMw8XDKZQJ3pGr/GjYkYS2wm3mZnmZgB99w44cVrM tAOVJi9ejFs/kOyqcw6MBecnPQ+ZyZc7KAkfrwXBCJ9jMDATYA4XQ/2C3820JJ17/LyU X6fc96kj5jOdprOkkUpzui8kt9jU+OYyI5FiHnD5fTXpy+kgVdUgb/+fy98yvF8EENAW FvqA4dWu3kNu/zhlyl+BYydGmMOtoPDcXdy5/rw6i5G2MAZU4HY6k90aO5MZxh69VzBd nWbjdXg7XdCeNEWtsC5otAuvqRjOSu+8ZpTGtJZZibfMD0hzoLHfPDYNctjO4liNDqf9 T+Tg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=a6ZAyxdg; 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 rh16-20020a17090720f000b007822665aa36si8788529ejb.430.2022.12.04.22.10.08; Sun, 04 Dec 2022 22:10:09 -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=@intel.com header.s=Intel header.b=a6ZAyxdg; 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 7F84E68BC2B; Mon, 5 Dec 2022 08:09:58 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 87E5C680B61 for ; Mon, 5 Dec 2022 08:09:51 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220596; x=1701756596; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=7xiIye8k3yaXlGO6lFDu4yDE6aAGGqu2C9R5QuYC1MU=; b=a6ZAyxdgldBGKHeMV008WJjcY4qw3t3SP6Mui5Hc/l1rdsL3Id8vExpw j+EyFxneNH0oRSyVLzfci6kQBhJk2fVLsS98EkDv0YjQWBhHJoMyYs/Ff ChfKvQiAA+3SpGm5ed4PZbunjnP2Pj9dbmADyz/vupB94T9IFrrJdFSFM vNFt+Y2iFgrTsEYrtnSeBJgI+Lj6gDeMCplIg59i4AvNbaHJYqt/f0FHY tG/MQxIdxwuc8DrYfVIjP6BypESOFekn9MA2gn0pAFUxT2wd5MN/VyhSP 910y01NcoDKdR2Z0cl+vX0K30zS6jqKJxmev3RrZcsJ8SS7Clnj1jjdlO A==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971340" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971340" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:47 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700063" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700063" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:46 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:18 +0800 Message-Id: <20221205060929.2511871-2-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 02/13] lavc/avcodec: Add HEVC Screen Content Coding Extensions profile 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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: tND7+3GYnhcm From: Linjie Fu Described in HEVC spec A.3.7. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/avcodec.h | 1 + libavcodec/hevc_ps.c | 2 ++ libavcodec/profiles.c | 1 + 3 files changed, 4 insertions(+) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 3edd8e2636..79fad674df 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1639,6 +1639,7 @@ typedef struct AVCodecContext { #define FF_PROFILE_HEVC_MAIN_10 2 #define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 #define FF_PROFILE_HEVC_REXT 4 +#define FF_PROFILE_HEVC_SCC 9 #define FF_PROFILE_VVC_MAIN_10 1 #define FF_PROFILE_VVC_MAIN_10_444 33 diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index 537a3ff99b..ad92b6bcbc 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -259,6 +259,8 @@ static int decode_profile_tier_level(GetBitContext *gb, AVCodecContext *avctx, av_log(avctx, AV_LOG_DEBUG, "Main Still Picture profile bitstream\n"); else if (ptl->profile_idc == FF_PROFILE_HEVC_REXT) av_log(avctx, AV_LOG_DEBUG, "Range Extension profile bitstream\n"); + else if (ptl->profile_idc == FF_PROFILE_HEVC_SCC) + av_log(avctx, AV_LOG_DEBUG, "Screen Content Coding Extension profile bitstream\n"); else av_log(avctx, AV_LOG_WARNING, "Unknown HEVC profile: %d\n", ptl->profile_idc); diff --git a/libavcodec/profiles.c b/libavcodec/profiles.c index 7af7fbeb13..2230fc5415 100644 --- a/libavcodec/profiles.c +++ b/libavcodec/profiles.c @@ -85,6 +85,7 @@ const AVProfile ff_hevc_profiles[] = { { FF_PROFILE_HEVC_MAIN_10, "Main 10" }, { FF_PROFILE_HEVC_MAIN_STILL_PICTURE, "Main Still Picture" }, { FF_PROFILE_HEVC_REXT, "Rext" }, + { FF_PROFILE_HEVC_SCC, "Scc" }, { FF_PROFILE_UNKNOWN }, }; From patchwork Mon Dec 5 06:09:19 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: 39599 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010173pzb; Sun, 4 Dec 2022 22:10:17 -0800 (PST) X-Google-Smtp-Source: AA0mqf6gC+cjQAaN1E1HD4dHn8ZzkkBXcipN/LDnDCy8g1oAKrtc608npNz22c+V8pA6c7P3QWmS X-Received: by 2002:a17:906:a198:b0:7b4:bc42:3b44 with SMTP id s24-20020a170906a19800b007b4bc423b44mr61871249ejy.101.1670220617570; Sun, 04 Dec 2022 22:10:17 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220617; cv=none; d=google.com; s=arc-20160816; b=wQsNcJNbUAUR/BWjdVpirpczrFlJrcl+pjYuaonTCDUSmL/sSNR/s5fB648tNDz1Gr ecRIMKQdcDTCDxMsq3Q3uXf1JW6mqUGSYamYd2bVlXTHQHmOv741dyiAu9QvgE+MHUrG NS3oaafV7/H5RVat0kypiyBbRzv/SWat4wt1QHfbv8cgYgySsYEgkTG74NyUxZJi6yTC 6JRHXZMWbpcbELA/AJQWaSjI62f3mXvbv81cIRufP/mT1IDKaROdcZsqVf2vhn4e0BkI aqNZy7ZP38a3j/ltpGUqI6mHBkvVr0Qz5T0lBmziPYfGAOYHGoPvNLoxwYENCOC2jZzR 9zGA== 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=ReOfG7wMJvV/JrCkVpOUwINtjd5mZEU9DdTPAjLmWkw=; b=f40un8ePzRnCFOEIih0YSoEuaQwI/ZvCCJdwAK8aJV7mqoHI8RLtptU6P+gGvCLKQi dqVVEV2FPrmD51A8CL+nJdtRFco0UNl5dkbdufG7bV3byXpO6NkhZO34thFxOIrQqY6g vv7M0h+ZDPcea9/fAXESn6O1eY9oyGkUTTZgDNNOPh3LgdCJgBJvYYnyOnbP8xOHRQS+ fn8p/9AR2wDm+XTuVvIrAIRQQxFEhnyCqC0mXMmhm4yFRi8wqgWopYLIIWULu8wMXCUm 3HhJip/UsY98W+EC45DG+LETtvDQCKB3JhgSCCXunWGtVWXlxaXwW5Rrqi8Gve9l/GI1 Tmxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="mQ/lawM+"; 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 m14-20020a1709062b8e00b0078e319dcca7si5393204ejg.744.2022.12.04.22.10.17; Sun, 04 Dec 2022 22:10:17 -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=@intel.com header.s=Intel header.b="mQ/lawM+"; 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 9F43268BC50; Mon, 5 Dec 2022 08:10:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AE2F4680B61 for ; Mon, 5 Dec 2022 08:09:52 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220598; x=1701756598; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LgwGc7mDyCeOKyuPzmVBxKXlOpVtp8rRcXW12Karr74=; b=mQ/lawM+NoNIZ0k1essEZoMoxOqMrYwj87YZupTrbA2GwZI5nUk1y27t ith6b8dmMTgai+wSJsOfEVmJZ4T/IAcMQa8XMxHWTULXnb/c3E3cK3TWW cQXN75VUWKQ6gls+p2sJ7SMT5w9pZpnZRY02ZyyIneYm9n/BDIfXJIUVF iufBA3lg5jrHczlWLxq3ZfeQglzzlz6uLWmq9J/lKj/Q2eDVyzHS3Roan 1h2hHf9nSSSAqITRFhWIhzM8Q9/XVeQJ04RqbANEPzHh64yTtBSmxfLgi HPHE4m4F/weWwdQ3YWXcQHAWMDjfOoNm7Huur6CspPe2lqAQdWBSDPnrt g==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971352" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971352" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700069" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700069" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:47 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:19 +0800 Message-Id: <20221205060929.2511871-3-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 03/13] lavc/hevc_ps: Add SPS/PPS parse support for HEVC extension syntax 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: Haihao Xiang , Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: rmXjUUJGU4lQ From: Linjie Fu 1. Add extension syntax according to 7.3.2.2.3/7.3.2.3.3 in T-REC-H.265-201911. 2. Keep using parsed PPS when bitstream overread for compatibility. For example, the clip PS_A_VIDYO_3.bit in FATE test has incomplete extension syntax which will be overread and un-decodable if without this change. 3. Format brace in pps_range_extensions(). Signed-off-by: Linjie Fu Signed-off-by: Haihao Xiang Signed-off-by: Fei Wang --- libavcodec/hevc.h | 3 + libavcodec/hevc_ps.c | 288 +++++++++++++++++++++++++++++++++++++++++-- libavcodec/hevc_ps.h | 69 +++++++++++ 3 files changed, 349 insertions(+), 11 deletions(-) diff --git a/libavcodec/hevc.h b/libavcodec/hevc.h index 1804755327..6b454a75c1 100644 --- a/libavcodec/hevc.h +++ b/libavcodec/hevc.h @@ -154,6 +154,9 @@ enum { // get near that, though, so set a lower limit here with the maximum // possible value for 4K video (at most 135 16x16 Ctb rows). HEVC_MAX_ENTRY_POINT_OFFSETS = HEVC_MAX_TILE_COLUMNS * 135, + + // A.3.7: Screen content coding extensions + HEVC_MAX_PALETTE_PREDICTOR_SIZE = 128, }; diff --git a/libavcodec/hevc_ps.c b/libavcodec/hevc_ps.c index ad92b6bcbc..3181962918 100644 --- a/libavcodec/hevc_ps.c +++ b/libavcodec/hevc_ps.c @@ -853,7 +853,7 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, HEVCWindow *ow; int ret = 0; int log2_diff_max_min_transform_block_size; - int bit_depth_chroma, start, vui_present, sublayer_ordering_info; + int bit_depth_chroma, start, vui_present, sublayer_ordering_info, num_comps; int i; // Coded parameters @@ -1074,8 +1074,12 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, decode_vui(gb, avctx, apply_defdispwin, sps); if (get_bits1(gb)) { // sps_extension_flag - sps->sps_range_extension_flag = get_bits1(gb); - skip_bits(gb, 7); //sps_extension_7bits = get_bits(gb, 7); + sps->sps_range_extension_flag = get_bits1(gb); + sps->sps_multilayer_extension_flag = get_bits1(gb); + sps->sps_3d_extension_flag = get_bits1(gb); + sps->sps_scc_extension_flag = get_bits1(gb); + skip_bits(gb, 4); // sps_extension_4bits + if (sps->sps_range_extension_flag) { sps->transform_skip_rotation_enabled_flag = get_bits1(gb); sps->transform_skip_context_enabled_flag = get_bits1(gb); @@ -1101,6 +1105,57 @@ int ff_hevc_parse_sps(HEVCSPS *sps, GetBitContext *gb, unsigned int *sps_id, av_log(avctx, AV_LOG_WARNING, "cabac_bypass_alignment_enabled_flag not yet implemented\n"); } + + if (sps->sps_multilayer_extension_flag) { + skip_bits1(gb); // inter_view_mv_vert_constraint_flag + av_log(avctx, AV_LOG_WARNING, + "sps_multilayer_extension_flag not yet implemented\n"); + } + + if (sps->sps_3d_extension_flag) { + for (i = 0; i <= 1; i++) { + skip_bits1(gb); // iv_di_mc_enabled_flag + skip_bits1(gb); // iv_mv_scal_enabled_flag + if (i == 0) { + get_ue_golomb_long(gb); // log2_ivmc_sub_pb_size_minus3 + skip_bits1(gb); // iv_res_pred_enabled_flag + skip_bits1(gb); // depth_ref_enabled_flag + skip_bits1(gb); // vsp_mc_enabled_flag + skip_bits1(gb); // dbbp_enabled_flag + } else { + skip_bits1(gb); // tex_mc_enabled_flag + get_ue_golomb_long(gb); // log2_ivmc_sub_pb_size_minus3 + skip_bits1(gb); // intra_contour_enabled_flag + skip_bits1(gb); // intra_dc_only_wedge_enabled_flag + skip_bits1(gb); // cqt_cu_part_pred_enabled_flag + skip_bits1(gb); // inter_dc_only_enabled_flag + skip_bits1(gb); // skip_intra_enabled_flag + } + } + av_log(avctx, AV_LOG_WARNING, + "sps_3d_extension_flag not yet implemented\n"); + } + + if (sps->sps_scc_extension_flag) { + sps->sps_curr_pic_ref_enabled_flag = get_bits1(gb); + sps->palette_mode_enabled_flag = get_bits1(gb); + if (sps->palette_mode_enabled_flag) { + sps->palette_max_size = get_ue_golomb_long(gb); + sps->delta_palette_max_predictor_size = get_ue_golomb_long(gb); + sps->sps_palette_predictor_initializers_present_flag = get_bits1(gb); + + if (sps->sps_palette_predictor_initializers_present_flag) { + sps->sps_num_palette_predictor_initializers_minus1 = get_ue_golomb_long(gb); + num_comps = !sps->chroma_format_idc ? 1 : 3; + for (int comp = 0; comp < num_comps; comp++) + for (i = 0; i <= sps->sps_num_palette_predictor_initializers_minus1; i++) + sps->sps_palette_predictor_initializer[comp][i] = + get_bits(gb, !comp ? sps->bit_depth : sps->bit_depth_chroma); + } + } + sps->motion_vector_resolution_control_idc = get_bits(gb, 2); + sps->intra_boundary_filtering_disabled_flag = get_bits1(gb); + } } if (apply_defdispwin) { sps->output_window.left_offset += sps->vui.def_disp_win.left_offset; @@ -1265,10 +1320,162 @@ static void hevc_pps_free(void *opaque, uint8_t *data) av_freep(&pps); } -static int pps_range_extensions(GetBitContext *gb, AVCodecContext *avctx, - HEVCPPS *pps, HEVCSPS *sps) { - int i; +static void colour_mapping_octants(GetBitContext *gb, HEVCPPS *pps, int inp_depth, + int idx_y, int idx_cb, int idx_cr, int inp_length) +{ + unsigned int split_octant_flag, part_num_y, coded_res_flag, res_coeff_q, res_coeff_r; + int bit_depth_cm_input_y, bit_depth_cm_output_y, cm_res_bits; + + part_num_y = 1 << pps->cm_y_part_num_log2; + + split_octant_flag = inp_depth < pps->cm_octant_depth ? get_bits1(gb) : 0; + + if (split_octant_flag) + for (int k = 0; k < 2; k++) + for (int m = 0; m < 2; m++) + for (int n = 0; n < 2; n++) + colour_mapping_octants(gb, pps, inp_depth + 1, + idx_y + part_num_y * k * inp_length / 2, + idx_cb + m * inp_length / 2, + idx_cr + n * inp_length / 2, + inp_length / 2); + else + for (int i = 0; i < part_num_y; i++) { + for (int j = 0; j < 4; j++) { + coded_res_flag = get_bits1(gb); + if (coded_res_flag) + for (int c = 0; c < 3; c++) { + res_coeff_q = get_ue_golomb_long(gb); + bit_depth_cm_input_y = 8 + pps->luma_bit_depth_cm_input_minus8; + bit_depth_cm_output_y = 8 + pps->luma_bit_depth_cm_output_minus8; + cm_res_bits = FFMAX(0, 10 + bit_depth_cm_input_y - bit_depth_cm_output_y - + pps->cm_res_quant_bits - (pps->cm_delta_flc_bits_minus1 + 1)); + res_coeff_r = cm_res_bits ? get_bits(gb, cm_res_bits) : 0; + if (res_coeff_q || res_coeff_r) + skip_bits1(gb); + } + } + } +} +static void colour_mapping_table(GetBitContext *gb, HEVCPPS *pps) +{ + pps->num_cm_ref_layers_minus1 = get_ue_golomb_long(gb); + for (int i = 0; i <= pps->num_cm_ref_layers_minus1; i++) + pps->cm_ref_layer_id[i] = get_bits(gb, 6); + + pps->cm_octant_depth = get_bits(gb, 2); + pps->cm_y_part_num_log2 = get_bits(gb, 2); + + pps->luma_bit_depth_cm_input_minus8 = get_ue_golomb_long(gb); + pps->chroma_bit_depth_cm_input_minus8 = get_ue_golomb_long(gb); + pps->luma_bit_depth_cm_output_minus8 = get_ue_golomb_long(gb); + pps->chroma_bit_depth_cm_output_minus8 = get_ue_golomb_long(gb); + + pps->cm_res_quant_bits = get_bits(gb, 2); + pps->cm_delta_flc_bits_minus1 = get_bits(gb, 2); + + if (pps->cm_octant_depth == 1) { + pps->cm_adapt_threshold_u_delta = get_se_golomb_long(gb); + pps->cm_adapt_threshold_v_delta = get_se_golomb_long(gb); + } + + colour_mapping_octants(gb, pps, 0, 0, 0, 0, 1 << pps->cm_octant_depth); +} + +static int pps_multilayer_extension(GetBitContext *gb, AVCodecContext *avctx, + HEVCPPS *pps, HEVCSPS *sps) +{ + pps->poc_reset_info_present_flag = get_bits1(gb); + pps->pps_infer_scaling_list_flag = get_bits1(gb); + if (pps->pps_infer_scaling_list_flag) + pps->pps_scaling_list_ref_layer_id = get_bits(gb, 6); + + pps->num_ref_loc_offsets = get_ue_golomb_long(gb); + for (int i = 0; i < pps->num_ref_loc_offsets; i++) { + pps->ref_loc_offset_layer_id[i] = get_bits(gb, 6); + pps->scaled_ref_layer_offset_present_flag[i] = get_bits1(gb); + if (pps->scaled_ref_layer_offset_present_flag[i]) { + pps->scaled_ref_layer_left_offset[pps->ref_loc_offset_layer_id[i]] = get_se_golomb_long(gb); + pps->scaled_ref_layer_top_offset[pps->ref_loc_offset_layer_id[i]] = get_se_golomb_long(gb); + pps->scaled_ref_layer_right_offset[pps->ref_loc_offset_layer_id[i]] = get_se_golomb_long(gb); + pps->scaled_ref_layer_bottom_offset[pps->ref_loc_offset_layer_id[i]] = get_se_golomb_long(gb); + } + + pps->ref_region_offset_present_flag[i] = get_bits1(gb); + if (pps->ref_region_offset_present_flag[i]) { + pps->ref_region_left_offset[pps->ref_loc_offset_layer_id[i]] = get_se_golomb_long(gb); + pps->ref_region_top_offset[pps->ref_loc_offset_layer_id[i]] = get_se_golomb_long(gb); + pps->ref_region_right_offset[pps->ref_loc_offset_layer_id[i]] = get_se_golomb_long(gb); + pps->ref_region_bottom_offset[pps->ref_loc_offset_layer_id[i]] = get_se_golomb_long(gb); + } + + pps->resample_phase_set_present_flag[i] = get_bits1(gb); + if (pps->resample_phase_set_present_flag[i]) { + pps->phase_hor_luma[pps->ref_loc_offset_layer_id[i]] = get_ue_golomb_long(gb); + pps->phase_ver_luma[pps->ref_loc_offset_layer_id[i]] = get_ue_golomb_long(gb); + pps->phase_hor_chroma_plus8[pps->ref_loc_offset_layer_id[i]] = get_ue_golomb_long(gb); + pps->phase_ver_chroma_plus8[pps->ref_loc_offset_layer_id[i]] = get_ue_golomb_long(gb); + } + } + + pps->colour_mapping_enabled_flag = get_bits1(gb); + if (pps->colour_mapping_enabled_flag) + colour_mapping_table(gb, pps); + + return 0; +} + +static void delta_dlt(GetBitContext *gb, HEVCPPS *pps) +{ + unsigned int num_val_delta_dlt, max_diff = 0; + int min_diff_minus1 = -1; + unsigned int len; + + num_val_delta_dlt = get_bits(gb, pps->pps_bit_depth_for_depth_layers_minus8 + 8); + if (num_val_delta_dlt) { + if (num_val_delta_dlt > 1) + max_diff = get_bits(gb, pps->pps_bit_depth_for_depth_layers_minus8 + 8); + if (num_val_delta_dlt > 2 && max_diff) { + len = av_log2(max_diff) + 1; + min_diff_minus1 = get_bits(gb, len); + } + if (max_diff > (min_diff_minus1 + 1)) + for (int k = 1; k < num_val_delta_dlt; k++) { + len = av_log2(max_diff - (min_diff_minus1 + 1)) + 1; + skip_bits(gb, len); // delta_val_diff_minus_min + } + } +} + +static int pps_3d_extension(GetBitContext *gb, AVCodecContext *avctx, + HEVCPPS *pps, HEVCSPS *sps) +{ + unsigned int pps_depth_layers_minus1; + int i, j; + + if (get_bits1(gb)) { // dlts_present_flag + pps_depth_layers_minus1 = get_bits(gb, 6); + pps->pps_bit_depth_for_depth_layers_minus8 = get_bits(gb, 4); + for (i = 0; i <= pps_depth_layers_minus1; i++) { + if (get_bits1(gb)) { // dlt_flag[i] + if (!get_bits1(gb)) { // dlt_pred_flag[i] + if (get_bits1(gb)) { // dlt_val_flags_present_flag[i] + for (j = 0; j <= ((1 << (pps->pps_bit_depth_for_depth_layers_minus8 + 8)) - 1); j++) + skip_bits1(gb); // dlt_value_flag[i][j] + } else + delta_dlt(gb, pps); + } + } + } + } + + return 0; +} + +static int pps_range_extensions(GetBitContext *gb, AVCodecContext *avctx, + HEVCPPS *pps, HEVCSPS *sps) +{ if (pps->transform_skip_enabled_flag) { pps->log2_max_transform_skip_block_size = get_ue_golomb_long(gb) + 2; } @@ -1282,7 +1489,7 @@ static int pps_range_extensions(GetBitContext *gb, AVCodecContext *avctx, "chroma_qp_offset_list_len_minus1 shall be in the range [0, 5].\n"); return AVERROR_INVALIDDATA; } - for (i = 0; i <= pps->chroma_qp_offset_list_len_minus1; i++) { + for (int i = 0; i <= pps->chroma_qp_offset_list_len_minus1; i++) { pps->cb_qp_offset_list[i] = get_se_golomb_long(gb); if (pps->cb_qp_offset_list[i]) { av_log(avctx, AV_LOG_WARNING, @@ -1306,6 +1513,47 @@ static int pps_range_extensions(GetBitContext *gb, AVCodecContext *avctx, return(0); } +static int pps_scc_extension(GetBitContext *gb, AVCodecContext *avctx, + HEVCPPS *pps, HEVCSPS *sps) +{ + int num_comps, ret; + + pps->pps_curr_pic_ref_enabled_flag = get_bits1(gb); + if (pps->residual_adaptive_colour_transform_enabled_flag = get_bits1(gb)) { + pps->pps_slice_act_qp_offsets_present_flag = get_bits1(gb); + pps->pps_act_y_qp_offset = get_se_golomb_long(gb) - 5; + pps->pps_act_cb_qp_offset = get_se_golomb_long(gb) - 5; + pps->pps_act_cr_qp_offset = get_se_golomb_long(gb) - 3; + +#define CHECK_QP_OFFSET(name) (pps->pps_act_ ## name ## _qp_offset <= -12 || \ + pps->pps_act_ ## name ## _qp_offset >= 12) + ret = CHECK_QP_OFFSET(y) || CHECK_QP_OFFSET(cb) || CHECK_QP_OFFSET(cr); +#undef CHECK_QP_OFFSET + if (ret) { + av_log(avctx, AV_LOG_ERROR, + "PpsActQpOffsetY/Cb/Cr shall be in the range of [-12, 12].\n"); + return AVERROR_INVALIDDATA; + } + } + + if (pps->pps_palette_predictor_initializers_present_flag = get_bits1(gb)) { + if ((pps->pps_num_palette_predictor_initializers = get_ue_golomb_long(gb)) > 0) { + pps->monochrome_palette_flag = get_bits1(gb); + pps->luma_bit_depth_entry_minus8 = get_ue_golomb_long(gb); + if (!pps->monochrome_palette_flag) + pps->chroma_bit_depth_entry_minus8 = get_ue_golomb_long(gb); + num_comps = pps->monochrome_palette_flag ? 1 : 3; + for (int comp = 0; comp < num_comps; comp++) + for (int i = 0; i < pps->pps_num_palette_predictor_initializers; i++) + pps->pps_palette_predictor_initializer[comp][i] = + get_bits(gb, 8 + (!comp ? pps->luma_bit_depth_entry_minus8 : + pps->chroma_bit_depth_entry_minus8)); + } + } + + return 0; +} + static inline int setup_pps(AVCodecContext *avctx, GetBitContext *gb, HEVCPPS *pps, HEVCSPS *sps) { @@ -1658,12 +1906,31 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, pps->slice_header_extension_present_flag = get_bits1(gb); if (get_bits1(gb)) { // pps_extension_present_flag - pps->pps_range_extensions_flag = get_bits1(gb); - skip_bits(gb, 7); // pps_extension_7bits + pps->pps_range_extensions_flag = get_bits1(gb); + pps->pps_multilayer_extension_flag = get_bits1(gb); + pps->pps_3d_extension_flag = get_bits1(gb); + pps->pps_scc_extension_flag = get_bits1(gb); + skip_bits(gb, 4); // pps_extension_4bits + if (pps->pps_range_extensions_flag) { if ((ret = pps_range_extensions(gb, avctx, pps, sps)) < 0) goto err; } + + if (pps->pps_multilayer_extension_flag) { + if ((ret = pps_multilayer_extension(gb, avctx, pps, sps)) < 0) + goto err; + } + + if (pps->pps_3d_extension_flag) { + if ((ret = pps_3d_extension(gb, avctx, pps, sps)) < 0) + goto err; + } + + if (pps->pps_scc_extension_flag) { + if ((ret = pps_scc_extension(gb, avctx, pps, sps)) < 0) + goto err; + } } ret = setup_pps(avctx, gb, pps, sps); @@ -1671,9 +1938,8 @@ int ff_hevc_decode_nal_pps(GetBitContext *gb, AVCodecContext *avctx, goto err; if (get_bits_left(gb) < 0) { - av_log(avctx, AV_LOG_ERROR, + av_log(avctx, AV_LOG_WARNING, "Overread PPS by %d bits\n", -get_bits_left(gb)); - goto err; } remove_pps(ps, pps_id); diff --git a/libavcodec/hevc_ps.h b/libavcodec/hevc_ps.h index 18894cfed1..1f704108e3 100644 --- a/libavcodec/hevc_ps.h +++ b/libavcodec/hevc_ps.h @@ -210,6 +210,20 @@ typedef struct HEVCSPS { int persistent_rice_adaptation_enabled_flag; int cabac_bypass_alignment_enabled_flag; + int sps_multilayer_extension_flag; + int sps_3d_extension_flag; + + int sps_scc_extension_flag; + int sps_curr_pic_ref_enabled_flag; + int palette_mode_enabled_flag; + int palette_max_size; + int delta_palette_max_predictor_size; + int sps_palette_predictor_initializers_present_flag; + int sps_num_palette_predictor_initializers_minus1; + int sps_palette_predictor_initializer[3][HEVC_MAX_PALETTE_PREDICTOR_SIZE]; + int motion_vector_resolution_control_idc; + int intra_boundary_filtering_disabled_flag; + ///< coded frame dimension in various units int width; int height; @@ -284,6 +298,9 @@ typedef struct HEVCPPS { uint8_t slice_header_extension_present_flag; uint8_t log2_max_transform_skip_block_size; uint8_t pps_range_extensions_flag; + uint8_t pps_multilayer_extension_flag; + uint8_t pps_3d_extension_flag; + uint8_t pps_scc_extension_flag; uint8_t cross_component_prediction_enabled_flag; uint8_t chroma_qp_offset_list_enabled_flag; uint8_t diff_cu_chroma_qp_offset_depth; @@ -293,6 +310,58 @@ typedef struct HEVCPPS { uint8_t log2_sao_offset_scale_luma; uint8_t log2_sao_offset_scale_chroma; + // Multilayer extension parameters + uint8_t poc_reset_info_present_flag; + uint8_t pps_infer_scaling_list_flag; + uint8_t pps_scaling_list_ref_layer_id; + uint16_t num_ref_loc_offsets; + uint8_t ref_loc_offset_layer_id[64]; + uint8_t scaled_ref_layer_offset_present_flag[64]; + int8_t scaled_ref_layer_left_offset[64]; + int8_t scaled_ref_layer_top_offset[64]; + int8_t scaled_ref_layer_right_offset[64]; + int8_t scaled_ref_layer_bottom_offset[64]; + uint8_t ref_region_offset_present_flag[64]; + int8_t ref_region_left_offset[64]; + int8_t ref_region_top_offset[64]; + int8_t ref_region_right_offset[64]; + int8_t ref_region_bottom_offset[64]; + uint8_t resample_phase_set_present_flag[64]; + uint16_t phase_hor_luma[64]; + uint16_t phase_ver_luma[64]; + uint16_t phase_hor_chroma_plus8[64]; + uint16_t phase_ver_chroma_plus8[64]; + uint8_t colour_mapping_enabled_flag; + uint16_t num_cm_ref_layers_minus1; + uint8_t cm_ref_layer_id[63]; + uint8_t cm_octant_depth; + uint8_t cm_y_part_num_log2; + uint16_t luma_bit_depth_cm_input_minus8; + uint16_t chroma_bit_depth_cm_input_minus8; + uint16_t luma_bit_depth_cm_output_minus8; + uint16_t chroma_bit_depth_cm_output_minus8; + uint8_t cm_res_quant_bits; + uint8_t cm_delta_flc_bits_minus1; + int8_t cm_adapt_threshold_u_delta; + int8_t cm_adapt_threshold_v_delta; + + // 3D extension parameters + uint8_t pps_bit_depth_for_depth_layers_minus8; + + // SCC extension parameters + uint8_t pps_curr_pic_ref_enabled_flag; + uint8_t residual_adaptive_colour_transform_enabled_flag; + uint8_t pps_slice_act_qp_offsets_present_flag; + int8_t pps_act_y_qp_offset; // _plus5 + int8_t pps_act_cb_qp_offset; // _plus5 + int8_t pps_act_cr_qp_offset; // _plus3 + uint8_t pps_palette_predictor_initializers_present_flag; + uint8_t pps_num_palette_predictor_initializers; + uint8_t monochrome_palette_flag; + uint8_t luma_bit_depth_entry_minus8; + uint8_t chroma_bit_depth_entry_minus8; + uint8_t pps_palette_predictor_initializer[3][HEVC_MAX_PALETTE_PREDICTOR_SIZE]; + // Inferred parameters unsigned int *column_width; ///< ColumnWidth unsigned int *row_height; ///< RowHeight From patchwork Mon Dec 5 06:09:20 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: 39600 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010232pzb; Sun, 4 Dec 2022 22:10:26 -0800 (PST) X-Google-Smtp-Source: AA0mqf7VlXGbiPUtAc4u10ClxuQ5psvlqcHmWa2xEro5hN3mq+HbxARlPL6IGWMvIgCTYKYbNcBf X-Received: by 2002:aa7:cad7:0:b0:459:443a:faf4 with SMTP id l23-20020aa7cad7000000b00459443afaf4mr73083374edt.297.1670220625926; Sun, 04 Dec 2022 22:10:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220625; cv=none; d=google.com; s=arc-20160816; b=HsnvUnHc5B/+J0cP/Z7gBmK//DvFQ4zB9yJoFqI5PQ63jhNHiPhnb87GVAwa55dMNh xVllaXjR8zzVA0R9KDFV8xOdEkiz7GkYr1SfvDaxocM3aM8uDXkZjAuzzy6F+S3iS7rj xaBnbRY1g6myq1qMUB9/KebKBVn89XF2w8EnVjIPHHUmMb/ycZCU19Z+cO8QqyXbANXr Ki88pKnqJrrpAm3tc9DuW5M+zU99qhx64q7XuXywFoO4Ps6NKD87Sx6RImxM9QCPq1xQ EWIHb6g13AxaYOeqTLruC3KOQQgxoBLZBqY6bHX8Efnz15EPcHuBi1n/L45L7lZyr3+E U4ng== 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=6l8A7ve5KWyU8+SvxMiKz4V3g9HtINN/ZuINpLAIBVI=; b=SdYNH5Zwklekzr/JVa2IRqvg1f2gn+wwT1gnUChbjg+Ue2/28RfgDEdeDdcTJ7riR9 DHgmcn5F/KN05DcKy9DkGVvet6lv8Z5C7ke9w3oBO4lrGCMKU0/V8mNb4VhIeHNaL/rj D8OLb/Ec+Bv92Sl6v06COQssgwyNpX3ngm+m/lMCavvrh9DHKMMrjyd/R/xtyNF0gLFF gGwihNTab+5qnY0SnTF/8tYM7Uf0Ehh94nogqQjjeQ7j+kXXM2agj1g0RuQ3kMPmpjly HDdhte8/mIgN3cm0kao4LFdpy4uPUboyg+qQ5SlsLKEHYn7ydaENyyhwyK0zaQUkx9oD gjnA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=cQgilH6h; 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 hr37-20020a1709073fa500b007ba89a4fd85si10588445ejc.487.2022.12.04.22.10.25; Sun, 04 Dec 2022 22:10:25 -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=@intel.com header.s=Intel header.b=cQgilH6h; 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 AA19D68BC2D; Mon, 5 Dec 2022 08:10:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 01B0468B3E1 for ; Mon, 5 Dec 2022 08:09:54 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220600; x=1701756600; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1JoWN+YMZatoxBLjbA+BOa3Y8+4nDxD8bQqzdOPG82o=; b=cQgilH6h6JqN7r0sNX1qV6fq/QJgxmatN4k4NDyBOR6WK1HkNFYld22M sEgCD0QW00+S1J745684sN/t7U4bXCTd2nHouu1uxGeIfQTpX8Qrtwcyz tuxeRaHD5X2nj2AV61iHEQ+3uicUS0bnxFMofcNq8GmV7gVyn0coAxuzu O+ldZF0H09xu3AQXOB4EDoajiRgpVTVeir/zb1k+FzhT/83JEjXK+ci2c Rhnsa8GZqyA/xTZSvFT+JY3pugV1iHTiE8X5Sulc37rhY5JbyAz2nxISu /EGwhj8HLee4ikwslQdW55y/mRdn7qklpNXghgxvWPe28mC//EjbEtuqa w==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971359" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971359" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:50 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700073" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700073" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:49 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:20 +0800 Message-Id: <20221205060929.2511871-4-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 04/13] lavc/hevcdec: Add slice parse support for HEVC SCC extension 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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: EOkXTdO0HHs/ From: Linjie Fu Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/hevcdec.c | 6 ++++++ libavcodec/hevcdec.h | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 567e8d81d4..f9a97ac7f5 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -856,6 +856,12 @@ static int hls_slice_header(HEVCContext *s) sh->slice_cr_qp_offset = 0; } + if (s->ps.pps->pps_slice_act_qp_offsets_present_flag) { + sh->slice_act_y_qp_offset = get_se_golomb(gb); + sh->slice_act_cb_qp_offset = get_se_golomb(gb); + sh->slice_act_cr_qp_offset = get_se_golomb(gb); + } + if (s->ps.pps->chroma_qp_offset_list_enabled_flag) sh->cu_chroma_qp_offset_enabled_flag = get_bits1(gb); else diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 9d3f4adbb3..7841ba8565 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -295,6 +295,10 @@ typedef struct SliceHeader { int slice_cb_qp_offset; int slice_cr_qp_offset; + int slice_act_y_qp_offset; + int slice_act_cb_qp_offset; + int slice_act_cr_qp_offset; + uint8_t cu_chroma_qp_offset_enabled_flag; int beta_offset; ///< beta_offset_div2 * 2 From patchwork Mon Dec 5 06:09:21 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: 39601 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010305pzb; Sun, 4 Dec 2022 22:10:34 -0800 (PST) X-Google-Smtp-Source: AA0mqf7UsOrMCDnq6u+NfXncbjH3o69yAf+0Qwc+lo8Ikn98JZvXA0eDBOf6wID6PENOk053m/2m X-Received: by 2002:a17:906:6b86:b0:7c0:eeae:10c8 with SMTP id l6-20020a1709066b8600b007c0eeae10c8mr3888509ejr.68.1670220634754; Sun, 04 Dec 2022 22:10:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220634; cv=none; d=google.com; s=arc-20160816; b=xz/zPqAM6Exnj/p3TBYtlxIenI1xeCtTv1G0FYFhFmyJnb+PFicSzuqYSSpDx2R+QJ OY9LdWWiQwE8GxC/Vyj7wJJ6Mr1kd9xjru1Hc0JulXKjPze2MzhdfXiMuRcHHJCZo5M1 cFKkV4H/eDR7mcFRGP4h1en4OM3iMRRRRBfyHnotzy3gMZ9tXNbbBhpsj7BDRcvLZ/rB BcvnWxQELjZCntBpmWre57tNsut1/q6NyWnBTqEDnWcOT/21hV0ebYSYgjJOrWegB/a3 ayx2IrXSThJ1tFywfvX5DmeKZ6BvKZCDEQkDBTAAvYK5XHw+moa7uztNPMA9rZrH1xsh FVOA== 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=0jUeFCJaBCEWh23PCD+yPno7w0i7CgZp/aJzbAhvMIA=; b=ixkBbY6J6tnzgT+3U78A3Z8LEP5SJshJGXcgE1XiLLWtopVBdKZiM+7xPnzh9V9ChW JJbwXjWqvpGvUbYj8Xz1uTdlRx6JbH7/k//k9AWygxfzgVe8mehHRNN233I0vcaDQ9Pw xQ+lLYXE8y8LJfMoXWqat/cKvY+A4hFo1vPHANCHEovqkch0vWn6K8YVudrp5uAiiRV5 03wJsFOIqm/CqWdFEoQBxyTZYOB1J68zTz2Wu8XPpMJ8XBjlp4fqbJ7DUdugWKDVdGBy 3y8M1tFaeVFdB5NZg8kGNLsUZOQFxq/preZQNjlGOk+sN388V+yK7mO8uhAUYhL2Y4ZT baxw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=XfBen0oM; 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 t14-20020a056402524e00b0046cb371ebd9si2139357edd.213.2022.12.04.22.10.34; Sun, 04 Dec 2022 22:10:34 -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=@intel.com header.s=Intel header.b=XfBen0oM; 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 AE41868BC5F; Mon, 5 Dec 2022 08:10:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8A3E468BC42 for ; Mon, 5 Dec 2022 08:09:57 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220602; x=1701756602; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=L0fAowE8Rj3D3/ekpvujoRAjdJaOCWU8raZDLJN3GcM=; b=XfBen0oMybwVOGM6ps9EuTbST8/IvJB2cCKOICgbHO9WVpmlKEkeV+o/ ypSggRRMzk3ZI7y5xEGqwH0qY9pO3A5O78a8NzJXecQ9etFlwB3O4I5u/ Z6I5VJY6d4VKAcROOrTuhwhmTltq5Jq1zet19CGbapUM1DcnQBWkVHd3P mBMdI+jBBUIPp3fZRwTkIatPe52WFmykncLeUUhczcnYZyzh8ol3l2NBa n0CEHFhwPBT5OokditrT+IGjFnq3OXW53mkNO7AGG64NC2oeKlC6oK5Di UqmKP1hJAl9OWCgPNsZ2TF7DIk4EbVRNQ701yXcP4Vv4RZNRseKdpZDY/ A==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971365" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971365" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700077" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700077" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:50 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:21 +0800 Message-Id: <20221205060929.2511871-5-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 05/13] lavc/hevcdec: Fix the parsing for use_integer_mv_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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: zUvnjn+xYwgA From: Linjie Fu According to 7.3.6.1, use_integer_mv_flag should be parsed if motion_vector_resolution_control_idc equals to 2. If not present, it equals to motion_vector_resolution_control_idc. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/hevcdec.c | 8 ++++++++ libavcodec/hevcdec.h | 1 + 2 files changed, 9 insertions(+) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index f9a97ac7f5..52fa627133 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -839,6 +839,14 @@ static int hls_slice_header(HEVCContext *s) sh->max_num_merge_cand); return AVERROR_INVALIDDATA; } + + // Syntax in 7.3.6.1 + if (s->ps.sps->motion_vector_resolution_control_idc == 2) + sh->use_integer_mv_flag = get_bits1(gb); + else + // Inferred to be equal to motion_vector_resolution_control_idc if not present + sh->use_integer_mv_flag = s->ps.sps->motion_vector_resolution_control_idc; + } sh->slice_qp_delta = get_se_golomb(gb); diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index 7841ba8565..a7fc669bcb 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -305,6 +305,7 @@ typedef struct SliceHeader { int tc_offset; ///< tc_offset_div2 * 2 unsigned int max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand + uint8_t use_integer_mv_flag; unsigned *entry_point_offset; int * offset; From patchwork Mon Dec 5 06:09:22 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: 39603 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010414pzb; Sun, 4 Dec 2022 22:10:51 -0800 (PST) X-Google-Smtp-Source: AA0mqf4QMdifQAILLoXrYUd3YpP7fOZKJlOX/rpv+ARZE9DT9HQNlc14mXYKHQ1DOMe3wh6XuQNq X-Received: by 2002:a17:906:7f96:b0:7b2:b782:73 with SMTP id f22-20020a1709067f9600b007b2b7820073mr52457352ejr.641.1670220651269; Sun, 04 Dec 2022 22:10:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220651; cv=none; d=google.com; s=arc-20160816; b=PoXl/uKkLZbwLWj7EBD3TlQCr5vq1bBYBncuX6BZfkZ6lqdrtLOHXCVqQTkYq/hMTS mMnkBjAamIq2CUVqxfD1omV4mWODzdkavLyNuhqKDxQ+7C1BgIAuihTy2s/Nh22KDeZz 4T/9xUF782hoUQ4HvYikfMRJLadbeTtyl9T9YI0s44CMUYqXw2WazalhyivQkj10do/H U6IffA6fyCsyNm1ZhdCt+6J513uMtn+Ftxkfya3tdeWfMnPh5OdFJhozFbRn3q68ybhh xKUVi5ybYjHy+LPJn6p8NVzGK4zG8p1H827FUz6EU2i4UtXjzDj2vnM4jzAUaPVDvOFl MwKQ== 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=EvA/KiwpYfQrT5s8+tk8tz/WVhAOq56XwT3lQwjXMKM=; b=HtSu+hnyvyEcxwlvgqNCSbdaO4Frh3vv96Alkbacb9Lo5EOjiS3WVFSO1knlDLpxXu LAdlKUztnPCaDWd3Rx2ctzN2f7cMe6bYu8SbMcsd2np03kyv5WMYAt1tc0JiJBp6xKbx n0SMZYERcFOq8rx3wE5Slj1pC0L52rE2CzU+4RQMEX2ZdkQK8Z2zjlz78gjY9BBAtFPZ 1qeohhkoGhqHMNG1ex39fJMlEp9tOnD9ABHaZu9CdHdrYHjQ8yzStSIHPwAWjB4Uyurd +tASdJlvba+vlQx76XARLDyPtIjijiieNPyh+Cbqj8f5PYF6dLxkow0/NO3PpEcTkm+b 4Rng== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=IANJMzMj; 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 dn12-20020a17090794cc00b0078d4b605b71si834537ejc.338.2022.12.04.22.10.50; Sun, 04 Dec 2022 22:10:51 -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=@intel.com header.s=Intel header.b=IANJMzMj; 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 9806F68BC7B; Mon, 5 Dec 2022 08:10:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D65C268BC69 for ; Mon, 5 Dec 2022 08:09:59 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220605; x=1701756605; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=RzgeT27PLmco4fUtOCQPH5gyzkPiewt4BvWtHoO78Fw=; b=IANJMzMj6wRVf9/iNZ6vTDP3QrhpHumHX931VkLmQKjPJ0KIGEdnFsxy Qpxw9qCW6HT3F/rcPCh5DnObheo4709L22XKpkh8WPRl7SlYYbsHIhiB3 j0X7Cu4UcxUXduwKUh2prZuTcqqdfd7rEDnNZbPWBs0Ox2SaGHymZGKoj KULHlMch2XWklw/Q6qBH+y6t/Yf33CRo1eZrLMwt1lElzVBkt9YmUZWFE 1CUmcHY1VMYxzZsQhCPVSFaRVEcAW0R6u2l6sfOfarZNdFMZU1KpWj3uD bOc8tgL85OhsHO/6bfdfhUOhOhgF0tZIho1Jt42lCGrQILDCYRn1zgcuw w==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971370" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971370" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:53 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700086" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700086" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:52 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:22 +0800 Message-Id: <20221205060929.2511871-6-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 06/13] lavc/hevcdec: Set max_num_merge_cand to uint8_t 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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4dTLOpxPvipZ From: Linjie Fu uint8_t is big enough and keep consistent with the definition in cbs_h265.h. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/hevcdec.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index a7fc669bcb..aab816791e 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -304,7 +304,7 @@ typedef struct SliceHeader { int beta_offset; ///< beta_offset_div2 * 2 int tc_offset; ///< tc_offset_div2 * 2 - unsigned int max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand + uint8_t max_num_merge_cand; ///< 5 - 5_minus_max_num_merge_cand uint8_t use_integer_mv_flag; unsigned *entry_point_offset; From patchwork Mon Dec 5 06:09:23 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: 39605 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010534pzb; Sun, 4 Dec 2022 22:11:08 -0800 (PST) X-Google-Smtp-Source: AA0mqf5XHRUTBue+sxIMlYlCQjCUNf1k6/RKpnoEDO2BhCmzZXLawGqgiRIcr4ntFBEYE/FhXVSE X-Received: by 2002:a17:906:9709:b0:7c0:cb51:887c with SMTP id k9-20020a170906970900b007c0cb51887cmr10025624ejx.620.1670220668280; Sun, 04 Dec 2022 22:11:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220668; cv=none; d=google.com; s=arc-20160816; b=JXuPX6xINj6oQzWDUK4SdPaGr+JSHrY1UFHdYZeb+/2ot/vgTaIm6qgGC853MMKpJ1 iqjlPhr7JIrJblY1uzL824UdqMBdfLGZB3a6rITEsol4sYLLV1o4H066IEhTwcdjCUVk y6kMsNYc5iHpJ01CJx+s25Re0+Mgw6m7n5J7se3J5OVFQmDnZX70FOy39UGgQB72HGG6 e30kJGXeeExFmDzx4anUmbQP/BGfIVckxJPkVTP9OcIMwtsyeEhC0/NZstBgF7+toQTg YTXzG1Iq5Kgwg3VHGepxk/KSSiPf4WqR1wwuEUzhLnOlx+iCCgJBOuyDpiAVcnouhxsv KQ1g== 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=ykz2ND30EKoxTHIzzfnZx7q2CtBOA21zBz4wiOjLF1s=; b=asw+ekbh9EudYtBAekMErtKqtH1wfonFyDSowiSvoFMMO5D/drnVJwT7Rse22uLYBC JHZZJSpWnT5c4eeS17Bg68nkadowH2yVDGwqTBgFco+saKcI6eocCYxEHIPXJjfU5E9f 4Eb20c0S3//aJHbSQ4brllnjF9ImgXq3rYaoeuNT4oH07fkUR0WkSvm+875se5vvayWU +VEEFe/oqQzgpZhRJBBL2dj2ZBsHivHLGaK5ua+6gZOyfQqj9c6bvqcm8bQAaz40GOhW GTwgrFswOqE6QQu4Dy1vlmgK6o8f201YXQ8m61LoddtOUGbAgojBhw5USl41X6PKCtqk Nalg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=e4Qn5hvX; 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 nc2-20020a1709071c0200b007aeb99bbb99si11890310ejc.48.2022.12.04.22.11.08; Sun, 04 Dec 2022 22:11:08 -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=@intel.com header.s=Intel header.b=e4Qn5hvX; 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 80FD368BC6B; Mon, 5 Dec 2022 08:10:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 037FD68BC82 for ; Mon, 5 Dec 2022 08:10:00 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220606; x=1701756606; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=x8ATO9dBZOURiBlDbQJVRcH+T+KLbK0xC6R15sV4wZM=; b=e4Qn5hvXqBNGV+z/SlmFz/mgBrJaBlcP2rjvPC9VBJCZkdM7z1BLwbCo mfRHXAAjeQbdwsuhthHxGtF/Z8yTPIOTb+A01lEod3xkOwLWBx3Rf56Z6 arnk0dIT/R8A8fKHQmMJSl7QUOCG9ieg3GfLnJ1AY1k/N/Fu0GcLypHKt E05tB5IDf/aLnF1/Qwc2UdGyu+gJ5HpBVEzUcIEqR2Yt+m3rSvntLMV5K h/IKQKc2wAxnxrFpBJZ5P4pav5oZghNF5PM4OBv0+8oVLNNYGOHkEjC/3 rxMraTxZoWGRNFNyZVHJ1TO2hlOc4AjHId05c+b+C29ayA8IkY0zxooKy A==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971381" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971381" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700091" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700091" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:53 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:23 +0800 Message-Id: <20221205060929.2511871-7-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 07/13] lavc/hevc: Update reference list for SCC 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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: np+mDg2E1lyW From: Linjie Fu Screen Content Coding allows non-intra slice in an IRAP frame which can reference the frame itself, and would mark the current decoded picture as "used for long-term reference", no matter TwoVersionsOfCurrDecPicFlag(8.1.3), hence some previous restricts are not suitable any more. Constructe RefPicListTemp and RefPicList according to 8-8/9/10. Disable slice decoding for SCC profile to avoid unexpected error in hevc native decoder and patch welcome. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/hevc_refs.c | 21 ++++++++++++++++++++- libavcodec/hevcdec.c | 10 +++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/libavcodec/hevc_refs.c b/libavcodec/hevc_refs.c index 811e8feff8..96153a2459 100644 --- a/libavcodec/hevc_refs.c +++ b/libavcodec/hevc_refs.c @@ -322,7 +322,7 @@ int ff_hevc_slice_rpl(HEVCContext *s) return ret; if (!(s->rps[ST_CURR_BEF].nb_refs + s->rps[ST_CURR_AFT].nb_refs + - s->rps[LT_CURR].nb_refs)) { + s->rps[LT_CURR].nb_refs) && !s->ps.pps->pps_curr_pic_ref_enabled_flag) { av_log(s->avctx, AV_LOG_ERROR, "Zero refs in the frame RPS.\n"); return AVERROR_INVALIDDATA; } @@ -349,6 +349,13 @@ int ff_hevc_slice_rpl(HEVCContext *s) rpl_tmp.nb_refs++; } } + // Construct RefPicList0, RefPicList1 (8-8, 8-10) + if (s->ps.pps->pps_curr_pic_ref_enabled_flag) { + rpl_tmp.list[rpl_tmp.nb_refs] = s->ref->poc; + rpl_tmp.ref[rpl_tmp.nb_refs] = s->ref; + rpl_tmp.isLongTerm[rpl_tmp.nb_refs] = 1; + rpl_tmp.nb_refs++; + } } /* reorder the references if necessary */ @@ -371,6 +378,14 @@ int ff_hevc_slice_rpl(HEVCContext *s) rpl->nb_refs = FFMIN(rpl->nb_refs, sh->nb_refs[list_idx]); } + // 8-9 + if (s->ps.pps->pps_curr_pic_ref_enabled_flag && + !sh->rpl_modification_flag[list_idx] && + rpl_tmp.nb_refs > sh->nb_refs[L0]) { + rpl->list[sh->nb_refs[L0] - 1] = s->ref->poc; + rpl->ref[sh->nb_refs[L0] - 1] = s->ref; + } + if (sh->collocated_list == list_idx && sh->collocated_ref_idx < rpl->nb_refs) s->ref->collocated_ref = rpl->ref[sh->collocated_ref_idx]; @@ -541,5 +556,9 @@ int ff_hevc_frame_nb_refs(const HEVCContext *s) for (i = 0; i < long_rps->nb_refs; i++) ret += !!long_rps->used[i]; } + + if (s->ps.pps->pps_curr_pic_ref_enabled_flag) + ret++; + return ret; } diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index 52fa627133..121ceb4e75 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -668,7 +668,8 @@ static int hls_slice_header(HEVCContext *s) sh->slice_type); return AVERROR_INVALIDDATA; } - if (IS_IRAP(s) && sh->slice_type != HEVC_SLICE_I) { + if (IS_IRAP(s) && sh->slice_type != HEVC_SLICE_I && + !s->ps.pps->pps_curr_pic_ref_enabled_flag) { av_log(s->avctx, AV_LOG_ERROR, "Inter slices in an IRAP frame.\n"); return AVERROR_INVALIDDATA; } @@ -3123,6 +3124,13 @@ static int decode_nal_unit(HEVCContext *s, const H2645NAL *nal) if (ret < 0) goto fail; } else { + if (s->avctx->profile == FF_PROFILE_HEVC_SCC) { + av_log(s->avctx, AV_LOG_ERROR, + "SCC profile is not yet implemented in hevc native decoder.\n"); + ret = AVERROR_PATCHWELCOME; + goto fail; + } + if (s->threads_number > 1 && s->sh.num_entry_point_offsets > 0) ctb_addr_ts = hls_slice_data_wpp(s, nal); else From patchwork Mon Dec 5 06:09:24 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: 39602 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010361pzb; Sun, 4 Dec 2022 22:10:42 -0800 (PST) X-Google-Smtp-Source: AA0mqf6j8RG22mKEjx6hzg7CuUFppywBORwULrgUGfaog+LxaF2ok4Unnaab8cIUYyN1A4e9HeAu X-Received: by 2002:a17:906:3a09:b0:78d:6655:d12e with SMTP id z9-20020a1709063a0900b0078d6655d12emr54032561eje.260.1670220642721; Sun, 04 Dec 2022 22:10:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220642; cv=none; d=google.com; s=arc-20160816; b=danoFcQJbCe6bC7L1JR/HRu24R5vW8xECWxC8MzTjh6EgflDzTHX1ud7wv0L6T7mEW 7BSP5lOb+T77MjCVbdJNPImXg7epRlHtAUF0ovSo2MIqAX+JyWnkkUYQcyFvWz8lLFUd M6c6TqckgonqtiWWTagCENL5QuEQJnTY87qyPT4J7qlCRHTf/Q3uDoUzaXbc6OXwUDnt sZhTRCT1odaojA9DUaGvmvGTm53GxpVRWG7RELjimNDDp6597iJlLn9SjryyreEKmRbP a5tYhK3YSzZ1Ibpt/zJXqqHW0VzJkQugtgsR9Y3GJsskBwE+cQw7droDfE5LzzUPGR/L rwEw== 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=xLGz4NMHwOQ4682HDXfgghQVZ3XKrL8gxmJ1jhP3Y44=; b=tT0SSu70tTzCS7s95SGuVaGdAH7yTNFXHKGj8Co6E4g73j3L9oA2WmxcuxI5h+6Tph MRIXLZTAVfxuP1KbMFhYR6rBAEZM8IoVB7KH0HRF+TjVkld5n//e16d/aHe8Go5iWuUN TyRkS/e1is560TvdqyR1Kb5M183DQIpafe3NDD+Kn2qONc9qMWoaf3FvrjSSUx6fnfvK PhilZqiqZQe6/kXB8dD47zHwH+VFURsosUGjzFaX77YCTErd8l9J6i/QVZ0j3hG60Kph cAX3cLGY9RkrfVXHyu9jK+5U2AiS8jWjABgOBPUn888gnR5NEDv1UP+WECrdKXCHYrFA o09w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=JITxP68P; 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 f11-20020a056402354b00b00462e7873c10si11296656edd.337.2022.12.04.22.10.42; Sun, 04 Dec 2022 22:10:42 -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=@intel.com header.s=Intel header.b=JITxP68P; 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 AB8DD68BC6E; Mon, 5 Dec 2022 08:10:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9A7E268B413 for ; Mon, 5 Dec 2022 08:10:03 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220603; x=1701756603; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tpIDWWgFTgVzU0k5XC7gNPOxg3GY0wNEkCbn23880zY=; b=JITxP68PFW37wg6CaRmvKB/zKlPIRHRJWT37/bqlIc7XpRpawqGAzP7e FXjcKiT/JXntIubWZM/xsvrCQC1xQL1ENOKQyj5jD6ZvJ+W96qQvhbq6o f0fIbmHU6qAjJzD/zSGGAFPbobldFoy9e+hhApfY6FjiqiYhJ71s2U+9B ZapYoWvuddGoRpY0ArKPAPeIJwQTBI+pIpislcWBdvrtY7iVVimsqPuhU qYIY1O90vqETo6qtWYM3pPUEr2VmhlNphCvmU1/Jaqba63HNljLzYFrsx VfcW+KsuoGTg5ZqI0eUE+3HOtvt79ySoe3uNo0iz1mkjs5nDhWMe8GoMu g==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971386" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971386" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700095" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700095" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:55 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:24 +0800 Message-Id: <20221205060929.2511871-8-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 08/13] lavc/vaapi_hevc: Pass SCC parameters Through VA-API 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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: cNtAptJCxEl0 From: Linjie Fu Including sps/pps/slice parameters. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/vaapi_hevc.c | 52 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index 20fb36adfa..750738d36e 100644 --- a/libavcodec/vaapi_hevc.c +++ b/libavcodec/vaapi_hevc.c @@ -124,7 +124,7 @@ static int vaapi_hevc_start_frame(AVCodecContext *avctx, const HEVCPPS *pps = h->ps.pps; const ScalingList *scaling_list = NULL; - int pic_param_size, err, i; + int pic_param_size, num_comps, pre_palette_size, err, i; VAPictureParameterBufferHEVC *pic_param = (VAPictureParameterBufferHEVC *)&pic->pic_param; @@ -245,8 +245,46 @@ static int vaapi_hevc_start_frame(AVCodecContext *avctx, for (i = 0; i < 6; i++) pic->pic_param.rext.cr_qp_offset_list[i] = pps->cr_qp_offset_list[i]; } + + pre_palette_size = pps->pps_palette_predictor_initializers_present_flag ? + pps->pps_num_palette_predictor_initializers : + (sps->sps_palette_predictor_initializers_present_flag ? + sps->sps_num_palette_predictor_initializers_minus1 + 1 : + 0); + + if (avctx->profile == FF_PROFILE_HEVC_SCC) { + pic->pic_param.scc = (VAPictureParameterBufferHEVCScc) { + .screen_content_pic_fields.bits = { + .pps_curr_pic_ref_enabled_flag = pps->pps_curr_pic_ref_enabled_flag, + .palette_mode_enabled_flag = sps->palette_mode_enabled_flag, + .motion_vector_resolution_control_idc = sps->motion_vector_resolution_control_idc, + .intra_boundary_filtering_disabled_flag = sps->intra_boundary_filtering_disabled_flag, + .residual_adaptive_colour_transform_enabled_flag + = pps->residual_adaptive_colour_transform_enabled_flag, + .pps_slice_act_qp_offsets_present_flag = pps->pps_slice_act_qp_offsets_present_flag, + }, + .palette_max_size = sps->palette_max_size, + .delta_palette_max_predictor_size = sps->delta_palette_max_predictor_size, + .predictor_palette_size = pre_palette_size, + .pps_act_y_qp_offset_plus5 = pps->residual_adaptive_colour_transform_enabled_flag ? + pps->pps_act_y_qp_offset + 5 : 0, + .pps_act_cb_qp_offset_plus5 = pps->residual_adaptive_colour_transform_enabled_flag ? + pps->pps_act_cb_qp_offset + 5 : 0, + .pps_act_cr_qp_offset_plus3 = pps->residual_adaptive_colour_transform_enabled_flag ? + pps->pps_act_cr_qp_offset + 3 : 0, + }; + + num_comps = pps->monochrome_palette_flag ? 1 : 3; + for (int comp = 0; comp < num_comps; comp++) + for (i = 0; i < pre_palette_size; i++) + pic->pic_param.scc.predictor_palette_entries[comp][i] = + pps->pps_palette_predictor_initializers_present_flag ? + pps->pps_palette_predictor_initializer[comp][i]: + sps->sps_palette_predictor_initializer[comp][i]; + } + #endif - pic_param_size = avctx->profile == FF_PROFILE_HEVC_REXT ? + pic_param_size = avctx->profile >= FF_PROFILE_HEVC_REXT ? sizeof(pic->pic_param) : sizeof(VAPictureParameterBufferHEVC); err = ff_vaapi_decode_make_param_buffer(avctx, &pic->pic, @@ -299,7 +337,7 @@ static int vaapi_hevc_end_frame(AVCodecContext *avctx) VASliceParameterBufferHEVC *last_slice_param = (VASliceParameterBufferHEVC *)&pic->last_slice_param; int ret; - int slice_param_size = avctx->profile == FF_PROFILE_HEVC_REXT ? + int slice_param_size = avctx->profile >= FF_PROFILE_HEVC_REXT ? sizeof(pic->last_slice_param) : sizeof(VASliceParameterBufferHEVC); if (pic->last_size) { @@ -413,7 +451,7 @@ static int vaapi_hevc_decode_slice(AVCodecContext *avctx, VAAPIDecodePictureHEVC *pic = h->ref->hwaccel_picture_private; VASliceParameterBufferHEVC *last_slice_param = (VASliceParameterBufferHEVC *)&pic->last_slice_param; - int slice_param_size = avctx->profile == FF_PROFILE_HEVC_REXT ? + int slice_param_size = avctx->profile >= FF_PROFILE_HEVC_REXT ? sizeof(pic->last_slice_param) : sizeof(VASliceParameterBufferHEVC); int nb_list = (sh->slice_type == HEVC_SLICE_B) ? @@ -478,11 +516,15 @@ static int vaapi_hevc_decode_slice(AVCodecContext *avctx, fill_pred_weight_table(avctx, h, sh, last_slice_param); #if VA_CHECK_VERSION(1, 2, 0) - if (avctx->profile == FF_PROFILE_HEVC_REXT) { + if (avctx->profile >= FF_PROFILE_HEVC_REXT) { pic->last_slice_param.rext = (VASliceParameterBufferHEVCRext) { .slice_ext_flags.bits = { .cu_chroma_qp_offset_enabled_flag = sh->cu_chroma_qp_offset_enabled_flag, + .use_integer_mv_flag = sh->use_integer_mv_flag, }, + .slice_act_y_qp_offset = sh->slice_act_y_qp_offset, + .slice_act_cb_qp_offset = sh->slice_act_cb_qp_offset, + .slice_act_cr_qp_offset = sh->slice_act_cr_qp_offset, }; for (i = 0; i < 15 && i < sh->nb_refs[L0]; i++) { pic->last_slice_param.rext.luma_offset_l0[i] = sh->luma_offset_l0[i]; From patchwork Mon Dec 5 06:09:25 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: 39609 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010762pzb; Sun, 4 Dec 2022 22:11:41 -0800 (PST) X-Google-Smtp-Source: AA0mqf5gFL0UXv0f6uQ62/RugOkYTal5fEZCZz3U7sKIpUormbN9zB4R9UqJHN5qmUKP8n5ktX5o X-Received: by 2002:a05:6402:530b:b0:461:f919:caa4 with SMTP id eo11-20020a056402530b00b00461f919caa4mr73387471edb.255.1670220701169; Sun, 04 Dec 2022 22:11:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220701; cv=none; d=google.com; s=arc-20160816; b=M3X/rnt11Ofm8tTg+VFKYmyOIh2yv2ZkKtwJ1KK6tcyi+rP/ut31Bv19hJp5EK2Rzs RaKdyhcOabh0jZOyI1VTBY2Cdia7dQ4eMS37dZXMM5hy/iXqMY9kjp2JPcb+Kd+4Yo1n cgT3/URVT4ZxyzFs0B58t+UC+zqdGcvJGSu33lDCnD9a5kQnffVOQ/oZHYXqQ2gT2WU8 +dJrrYulP88UpzUjtVy2TrQfIyqYcLNqbzghr0BWVwwYKv1AKDDU9vdnsR+zXl06sKnT yguLD9NP84MwKT7O4s24UCwMVojvLgRVMzq+OSiypxJqjZMRaK3q+coRBwdvGLuyZAMj AbEg== 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=t2Biqpgr+ZrhNlwNTJ3Vx3ZYlTYx6NxMQaPoJHLPouM=; b=IGFvkfWvL6TNTw8GTsnIgE8a1ur0bfEdR1qk3cZeQcELS/6/81hKjYnXERtL7NQsgU XqaR+RwbIR8YHM0qoflEWWL0BAcR/v1WAQgE+C60icy0LNz8SEUShl/J9FDbJ5ciYvEM aISsfd8i4ydhTHkzGhTkRAn2kOrul26iGCCJVOtgDTMTGThAZcE5tASENwunCpymry19 /K8wCSo/NkzThF51PH7N0Th9Uv6omP7lv2H2D9Lem0Z6OUcZj31bOFpeOi8RfPIxIKlg hIBboSudYNnmX1tQ83YOZJq8PyDRV1QPH0cFl3je+63HDwURmfxZCfVMVvDpHV8IsAiw hsuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=Bt6QPKdU; 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 js4-20020a17090797c400b0073d8830e4c7si12089709ejc.954.2022.12.04.22.11.40; Sun, 04 Dec 2022 22:11:41 -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=@intel.com header.s=Intel header.b=Bt6QPKdU; 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 5C1E568BC82; Mon, 5 Dec 2022 08:10:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9EF4E68BC6B for ; Mon, 5 Dec 2022 08:10:04 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220609; x=1701756609; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5YtNoxcg/LlwrY39YL4G4jb4Z7PMtw9f2BnfVdO2gz0=; b=Bt6QPKdU0/fCozGlpiOEqqge22ZkZPHb9NBBus0E/6G8/4wGViZFpK5z N0FTD4ckBCR+gbwtZev1LKHHIi6eTFNoyt7o+zOwCB9Zk8Akx6+MTtWb3 xvqHCfzHdlQKKeLtdiYbsjMrM9blyQV8QwSWgFTkuehZqW2dqumHJR3Da wxdFXRDEC0W738PpyG9r4R21dQg3RB07mYraVUYvWKeXrCS3NLqdIr57G YkIy6/AySrLErMjWlXRLzR8iYDVrkv82ZA7f0mTbBi82HEV22BBPa/Ye4 0v1rTXX/jsAXVCIo1n2NgdzH2iXdcrM/uFgC5Yc3nQUDSCOI74+QQe3wS A==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971392" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971392" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:09:58 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700103" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700103" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:57 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:25 +0800 Message-Id: <20221205060929.2511871-9-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 09/13] lavc/vaapi_hevc: Add vaapi profile parse support for SCC 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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 9H1ZtcP+2MQb From: Linjie Fu Note that Screen-Extended Main 4:4:4 and 4:4:4 10 supports chroma_format_idc from 0, 1 or 3, hence both 420 and 444 are supported. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/vaapi_decode.c | 4 +++- libavcodec/vaapi_hevc.c | 14 ++++++++++++-- libavcodec/vaapi_hevc.h | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libavcodec/vaapi_decode.c b/libavcodec/vaapi_decode.c index 134f10eca5..29ac439b36 100644 --- a/libavcodec/vaapi_decode.c +++ b/libavcodec/vaapi_decode.c @@ -410,7 +410,9 @@ static const struct { #endif #if VA_CHECK_VERSION(1, 2, 0) && CONFIG_HEVC_VAAPI_HWACCEL MAP(HEVC, HEVC_REXT, None, - ff_vaapi_parse_hevc_rext_profile ), + ff_vaapi_parse_hevc_profile ), + MAP(HEVC, HEVC_SCC, None, + ff_vaapi_parse_hevc_profile ), #endif MAP(MJPEG, MJPEG_HUFFMAN_BASELINE_DCT, JPEGBaseline), diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index 750738d36e..6ce1e17fa8 100644 --- a/libavcodec/vaapi_hevc.c +++ b/libavcodec/vaapi_hevc.c @@ -586,9 +586,9 @@ static int ptl_convert(const PTLCommon *general_ptl, H265RawProfileTierLevel *h2 } /* - * Find exact va_profile for HEVC Range Extension + * Find exact va_profile for HEVC Range Extension and Screen Content Coding Extension */ -VAProfile ff_vaapi_parse_hevc_rext_profile(AVCodecContext *avctx) +VAProfile ff_vaapi_parse_hevc_profile(AVCodecContext *avctx) { const HEVCContext *h = avctx->priv_data; const HEVCSPS *sps = h->ps.sps; @@ -627,6 +627,16 @@ VAProfile ff_vaapi_parse_hevc_rext_profile(AVCodecContext *avctx) else if (!strcmp(profile->name, "Main 4:4:4 12") || !strcmp(profile->name, "Main 4:4:4 12 Intra")) return VAProfileHEVCMain444_12; + else if (!strcmp(profile->name, "Screen-Extended Main")) + return VAProfileHEVCSccMain; + else if (!strcmp(profile->name, "Screen-Extended Main 10")) + return VAProfileHEVCSccMain10; + else if (!strcmp(profile->name, "Screen-Extended Main 4:4:4")) + return VAProfileHEVCSccMain444; +#if VA_CHECK_VERSION(1, 8, 0) + else if (!strcmp(profile->name, "Screen-Extended Main 4:4:4 10")) + return VAProfileHEVCSccMain444_10; +#endif #else av_log(avctx, AV_LOG_WARNING, "HEVC profile %s is " "not supported with this VA version.\n", profile->name); diff --git a/libavcodec/vaapi_hevc.h b/libavcodec/vaapi_hevc.h index b3b0e6fc1e..7662dca510 100644 --- a/libavcodec/vaapi_hevc.h +++ b/libavcodec/vaapi_hevc.h @@ -22,6 +22,6 @@ #include #include "avcodec.h" -VAProfile ff_vaapi_parse_hevc_rext_profile(AVCodecContext *avctx); +VAProfile ff_vaapi_parse_hevc_profile(AVCodecContext *avctx); #endif /* AVCODEC_VAAPI_HEVC_H */ From patchwork Mon Dec 5 06:09:26 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: 39604 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010466pzb; Sun, 4 Dec 2022 22:11:00 -0800 (PST) X-Google-Smtp-Source: AA0mqf6h2TCFFzVq+uYBD4sI4FOgNRtN70swGeI0yL2Gm88GTX+d+6jLcgsnsUnafjXPpa6pZFtZ X-Received: by 2002:a17:906:d10f:b0:7c0:f727:5dd2 with SMTP id b15-20020a170906d10f00b007c0f7275dd2mr2199114ejz.319.1670220659878; Sun, 04 Dec 2022 22:10:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220659; cv=none; d=google.com; s=arc-20160816; b=CkAaM/l035aeR6fzyy0BJ7PRnUaa/TvVw6DQ77N9TzcIgoa5QvGpZK36wnLFyeak0g kbJ+rq1c9IhXC7GK5jgHinOGFNBwnBcresEFbFSsa76YmORoaSYFIOr7xJZwjxYgxUSZ n6oHg5xxSE+2+ppjlvq4gIbfCtSNoFgVeMCF9/zIQNRTqzS4yKkofasN6mbD789Q6Mof 0emHigiSnpW8nv/oYmllSPnBlxiNxN5WYKXphX1qgvNt11VIxST6rcR6PsoIHAbaiwsJ DUP6qG74xr3tuEbcFMyRlp8SF6JlZgfWE75vkamJAmmvCX4T3sIwYjjDJo6fHhU0FbVb mLzg== 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=wBEZiqEzkEiVNTfbGcahTxTMXysj/gslBYcYzXRHFl0=; b=wKdf1O6p11yMhCENbspEPoAetRoj2OX+w3qfRUpddUBQdYNt0YPh2wEMEpVwLGm/qG PF6myz1N7mElVpeuNUQ9riQq1UkF5A7kZHBVhBA+Kvie7sXok5qO2575gEFniJmN/tFV mh1/BIVvr4Z9jIsD2eeUKX7qOfoEY3DCCl8x7N/lSImI2vx2/8w7JtjBUTJfagl+K7P6 m0IKl7cE2aar/dB4gYlrz+mIilpo9k7LWBLJsGXemlRDeYUlj+bTtJvxsxflEmZh19hp nYtpH63PDqceJlzQoKnhlo9eRapmQo4PTg86h5Q6RvH0+ISuLs58ftYUXAAWb9xVnVQh 5Idg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="MxQs/VtE"; 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 wy1-20020a170906fe0100b007ba713e241dsi10391600ejb.894.2022.12.04.22.10.59; Sun, 04 Dec 2022 22:10:59 -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=@intel.com header.s=Intel header.b="MxQs/VtE"; 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 86B9F68BBA0; Mon, 5 Dec 2022 08:10:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E23F468BC7B for ; Mon, 5 Dec 2022 08:10:05 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220606; x=1701756606; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=p5/cStIiif4By1hMBXhVKX5ovXQz/wqMfXl432s10Tk=; b=MxQs/VtEvDcdsp1vI81OlkdqQ6ytMLXFo7TzAOcBQNaBMMxQxdM/AFVL aAlMaZW2tV8HiWpolnXuXVOtMK7d52cpT19sbymVcIe2ac8o7I4YlDW2Z nCtGnFHH3JtOnlMhzd23C5qjdT9Y6/76FLupygZOfyPwzHqeErYk7kIDE GeuYzsAT/vTODC2jROak6sj5z0vRWoaX+Z1hhqF+bixJLaDJ8TALcnLfG IHuXWtPxW55ybxU1hybJNhYTvN5IEsAXmvnr7+EOKMozoHT6D163NS+B2 VW7evcfgftJ/Wnh+Gq0L1coE1pAC+3jxOGbyPr0pKdcMAWpDNgxwbiM4N Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971401" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971401" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:10:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700109" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700109" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:09:59 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:26 +0800 Message-Id: <20221205060929.2511871-10-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 10/13] lavc/vaapi_hevc: Set correct rps type for scc 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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: sbDEVejSgFtO From: Linjie Fu According to 8.1.3 and 8.3.2. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/vaapi_hevc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index 6ce1e17fa8..005d782819 100644 --- a/libavcodec/vaapi_hevc.c +++ b/libavcodec/vaapi_hevc.c @@ -71,6 +71,7 @@ static void fill_vaapi_pic(VAPictureHEVC *va_pic, const HEVCFrame *pic, int rps_ static int find_frame_rps_type(const HEVCContext *h, const HEVCFrame *pic) { VASurfaceID pic_surf = ff_vaapi_get_surface_id(pic->frame); + const HEVCFrame *current_picture = h->ref; int i; for (i = 0; i < h->rps[ST_CURR_BEF].nb_refs; i++) { @@ -88,6 +89,9 @@ static int find_frame_rps_type(const HEVCContext *h, const HEVCFrame *pic) return VA_PICTURE_HEVC_RPS_LT_CURR; } + if (h->ps.pps->pps_curr_pic_ref_enabled_flag && current_picture->poc == pic->poc) + return VA_PICTURE_HEVC_LONG_TERM_REFERENCE; + return 0; } From patchwork Mon Dec 5 06:09:27 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: 39606 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010581pzb; Sun, 4 Dec 2022 22:11:16 -0800 (PST) X-Google-Smtp-Source: AA0mqf5GIpoyzv1B50K98RSZmpp+gAzfYTYoK5REm6nRe4aNfHRZIsYBcP686pfWfbaCIMpp+6Ko X-Received: by 2002:a05:6402:ea8:b0:462:67bf:c64e with SMTP id h40-20020a0564020ea800b0046267bfc64emr1678724eda.20.1670220676694; Sun, 04 Dec 2022 22:11:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220676; cv=none; d=google.com; s=arc-20160816; b=QlZEqnQQB3cNEz3e+qvjfrx7/11ttwZqKqQHD66b5P7LoifrWaruRBDeMcdeCvsW2l dRrmgCX/wS3EsQvbn/1UdtCFakW2EoDHaZ1F1yfhDkKJKvbhmoQvGzhMjbGGJSOVAAL/ nMzFWQH5G2CFRx5MQQu6fbUzFr0jNobbvSfKX08YbaGi3iOwhHDciHY5ntRbMoesdnSe JuEDufQWpZne6CRBCo83Ns4QH8Gb6LYnASNZBROAP1KK7qEeJFbi9DtXkzyfUneR/FfH nAOqhKQG1KefN9iEsM1eq2Z++3WbAV3MC3AIvklSt9PtxtBbK8SZ8AJ9YUkCFXZi8o07 hJqQ== 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=CACMbwAk92labDBNC3MJAcZLDsdvqmCyx4hH5748EIY=; b=XZN+gmyBDlCiavUtvMtq5w0p8c+uVpbjQFZmqgf61a4ohyhg7Q7ZjhHn4ePVo+i3hi OObwTantFV51OSmIU0LBfyK/q7lMOffJ3d5PvUV344NB9aAIwcimYrQY/z1hm4EhMgXv gJuVWt01wbZ8gmVjdW09HMsQ0nr+vfhWAan0i+rrfzO7zh8Mqd/VPIZH8PegkfYYPAA0 SCTsp0b9mrY1yHUvEl37JEfael8fvS7RGP4qhdtRHgfGZU6N3ozu/+5Wb/Tfph1yXeod PlJRHEoCWzsN0Zhl9CwXYInfMEF2pBSU5cibHHP2gfyfqoJhtpfT+HTiVCJU0XlqnF4F VrDg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=LOXK5VmR; 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 w18-20020a056402269200b00463d1e2639fsi5679523edd.363.2022.12.04.22.11.16; Sun, 04 Dec 2022 22:11:16 -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=@intel.com header.s=Intel header.b=LOXK5VmR; 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 57D5068BC8C; Mon, 5 Dec 2022 08:10:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED9A568BC69 for ; Mon, 5 Dec 2022 08:10:06 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220607; x=1701756607; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OAjrQI7H5aWX5rsa3qZxDU6ypz61VZtQrWcH4A2cZMw=; b=LOXK5VmR/rpIdZO5tl5Ar668rCmNuZjz4S418EXnRXsyAzwMeFAtYHCK Vk59aWStdbFL14J5fFoQl+xQihUCrg3vCD7347OukcyS8FQNONzS7mTJx TQmoobUibg1ub6zIBU7Fso0joTkLcKTQUmbrYm1brMXzTifxMac5Kgedy JVAuE7/+ExmlOfXzGpQtNdCvCel5+aTPDvTWgwRPAtzQEOVS6nJZKcDhA jGLsReN5YROiX3MD2jz0VeG0521nBpj+puZ/0LS+QEqJ3qxQs7ERmKUVp MOrkA5/xqye3zLx+2Gpb7fxP4yl0GDJGvRL1rF9aYgMdx+NzoiVK4XX6Y A==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971408" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971408" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:10:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700117" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700117" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:10:00 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:27 +0800 Message-Id: <20221205060929.2511871-11-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 11/13] lavc/vaapi_hevc: Loose the restricts for SCC decoding 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: Linjie Fu , Fei Wang , Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: flCSp/a+VFls From: Linjie Fu Allow current picture as the reference picture. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- libavcodec/vaapi_hevc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index 005d782819..ca14052d56 100644 --- a/libavcodec/vaapi_hevc.c +++ b/libavcodec/vaapi_hevc.c @@ -104,7 +104,8 @@ static void fill_vaapi_reference_frames(const HEVCContext *h, VAPictureParameter const HEVCFrame *frame = NULL; while (!frame && j < FF_ARRAY_ELEMS(h->DPB)) { - if (&h->DPB[j] != current_picture && (h->DPB[j].flags & (HEVC_FRAME_FLAG_LONG_REF | HEVC_FRAME_FLAG_SHORT_REF))) + if ((&h->DPB[j] != current_picture || h->ps.pps->pps_curr_pic_ref_enabled_flag) && + (h->DPB[j].flags & (HEVC_FRAME_FLAG_LONG_REF | HEVC_FRAME_FLAG_SHORT_REF))) frame = &h->DPB[j]; j++; } @@ -222,7 +223,8 @@ static int vaapi_hevc_start_frame(AVCodecContext *avctx, } #if VA_CHECK_VERSION(1, 2, 0) - if (avctx->profile == FF_PROFILE_HEVC_REXT) { + if (avctx->profile == FF_PROFILE_HEVC_REXT || + avctx->profile == FF_PROFILE_HEVC_SCC) { pic->pic_param.rext = (VAPictureParameterBufferHEVCRext) { .range_extension_pic_fields.bits = { .transform_skip_rotation_enabled_flag = sps->transform_skip_rotation_enabled_flag, From patchwork Mon Dec 5 06:09:28 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: 39607 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010653pzb; Sun, 4 Dec 2022 22:11:25 -0800 (PST) X-Google-Smtp-Source: AA0mqf4Z1Q7rIWONzjpsuZsxL9bCg17GgfW/kMpfqME6C3gfQuo9oJ14jLxtDDyQJd2D6x/1xFPp X-Received: by 2002:a05:6402:4d0:b0:462:317a:e02f with SMTP id n16-20020a05640204d000b00462317ae02fmr60225993edw.125.1670220684996; Sun, 04 Dec 2022 22:11:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220684; cv=none; d=google.com; s=arc-20160816; b=peslouAWl5F4BnsWq3oRqrjS/HXLTlYRLlmM4ODS3Trz35k3tiIwod0ZMdSqOWqtFV AdyAh1fW7+6PvOHxrYPSusoifISmIaQZlwpwV/BxbY89UQlbMXYkzV/5uZtoRehLg3ww FHnau8Qh5xMquOLsOwWp8BgQ0y5/ptdCGiqWuOWEFoLFSByNw144iNkuia32UepPf81h rPJScUPV1yryEGNRm3m9Qz0R7wtC6RpW7PU95yk9fz/TQsuPB77KCA1S6avFdCRQh6cp XruRf4g6cNy+OK0de9446ImxtpPDSck3kYAsQx9M+5X2Gi6/N0xm16NwKitOrnZ+bbFT M/GQ== 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=d0KfVYsD3idYq1KYCa0gPCCUS46apI/blf5XtaOiLhs=; b=jvHQcwXu/8GNaOexS5G+Xii/Ls2EAMkSEUyg7lnyPJ7h30LFIsRWgfOBEKtUKw0Y6H rQmCMgaj+5xUkk7rwhXaFO5+wxKVsw8ZIIuJo8dktjuhhtxfwuO488Pb8EXEQDkfABKm wITZ0DJ+6docGp37Mjc88Bl3fuzhYMvgSheiwRMghoTiN1yeLDdYLe2jAkmntY9vuSON OIW89JiiwsMNlQZFumwDytOKQBQQ69uwSLcmJvKbOocTO8Mn5B9OqlUrXVUw001dJjLP ZoDAf4B2PG1pbMfxMMNUCIIwiTUhdxZZmubWsZ4eGOy9Kg8OYF6xdocrqR8PWUupYE4p ZOuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=XfCYwJLQ; 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 la26-20020a170907781a00b007c0c8084a0bsi4882540ejc.970.2022.12.04.22.11.24; Sun, 04 Dec 2022 22:11:24 -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=@intel.com header.s=Intel header.b=XfCYwJLQ; 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 3F5B668BAFB; Mon, 5 Dec 2022 08:10:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1C9CF68BC8C for ; Mon, 5 Dec 2022 08:10:06 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220607; x=1701756607; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=OHUixGZsACCW5pMzYM1ZohkUKZtuOF6n2w2a3NdJRVs=; b=XfCYwJLQbsL4vN211crzAwweNPEe08b2JKQ0o8SFxRz3jBgQX0S+ojfK 5XrD2F09hSVIHz/ZuLCXK4CMpktgGt2CwkusPTiYqDWJKLLdGHlEHudPG 2Ubd80r/ABZJjq9nQDLwXDFHUP/Oyt9Ko4uRK6ly7GakcABn2oT48zksv 7H0S8r7xZx3OVFVx5SzX1AYuoAX4XcNMR7eikz8hR+t55ZWKOl3OyIhLF 4pRdSyPsXWo52qBRCG/RFE1+UVc66u2HGAgurJCvi//YeaVdgmJ7hSmn4 jZ+9ZKVR8nhyitDIqGPvZfZTMajURBDrYeviAuBpA6nKNPX955vy2BO4K Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971412" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971412" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:10:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700132" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700132" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:10:01 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:28 +0800 Message-Id: <20221205060929.2511871-12-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 12/13] avcodec/hevcdec: Replace number with enum 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: Fei Wang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 64mf06rSyJ4h Keep same style with IS_IDR()/IS_BLA(). Signed-off-by: Fei Wang --- libavcodec/hevcdec.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/hevcdec.h b/libavcodec/hevcdec.h index aab816791e..94609e4699 100644 --- a/libavcodec/hevcdec.h +++ b/libavcodec/hevcdec.h @@ -75,7 +75,7 @@ #define IS_IDR(s) ((s)->nal_unit_type == HEVC_NAL_IDR_W_RADL || (s)->nal_unit_type == HEVC_NAL_IDR_N_LP) #define IS_BLA(s) ((s)->nal_unit_type == HEVC_NAL_BLA_W_RADL || (s)->nal_unit_type == HEVC_NAL_BLA_W_LP || \ (s)->nal_unit_type == HEVC_NAL_BLA_N_LP) -#define IS_IRAP(s) ((s)->nal_unit_type >= 16 && (s)->nal_unit_type <= 23) +#define IS_IRAP(s) ((s)->nal_unit_type >= HEVC_NAL_BLA_W_LP && (s)->nal_unit_type <= HEVC_NAL_RSV_IRAP_VCL23) enum RPSType { ST_CURR_BEF = 0, From patchwork Mon Dec 5 06:09:29 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: 39608 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:999a:b0:a4:2148:650a with SMTP id ve26csp3010717pzb; Sun, 4 Dec 2022 22:11:33 -0800 (PST) X-Google-Smtp-Source: AA0mqf7K08Xbcu6nzBtFQcixxjY1qUPx4jPbjUaBatm8u9jmBET0Nl4JWL2eRrDraAJoADC70M5q X-Received: by 2002:a17:906:aacb:b0:7c0:89b3:b9da with SMTP id kt11-20020a170906aacb00b007c089b3b9damr22826341ejb.275.1670220693021; Sun, 04 Dec 2022 22:11:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670220693; cv=none; d=google.com; s=arc-20160816; b=tRMx5/pvc3PZyAFng5bM/mil5TTwoMkwEztH1BX353N15gdACFocdCxmst+/JI1PQa efJjmGZlN701kPJc6+r6RhDd9QViTQaps1LLWFCD99WUGwIe+A/PRuNJxmMNNQSOoOuK g2h2DLygpqjNEqsjcavJ4hss9/ldW5J92T07eRMDazLG2p2Br6HxC90G5u+Cu/bD6+Mp 0uq+JuKLJ12NHEMrTe5/dlTfUQpHiJrXyWkA4FXbIg0xins9rIIlL4JAehygRZcDLUlJ 2GE6SwBzsugis4AYmzswnbnsok0dRIUyA6dxSQ2XtsgPEA7dmYYg8zpzo8jVf7TmBe5M 9hSw== 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=LLCoUL1Y5ywOJOr41nReVTyM9DcUTlsgtscX7nrW6G0=; b=tyCL3psT/K6gk0giFAUJAIiyQ+75o9rbUQ0hWawLFxtei/o0oCy+I1PJods1IZb6wQ BZLaEY02fEjAPxQ2RB52DkFgC1M0A2vyG0SlcXm4n7ZgKI3HJkrcSJqqS2Bz28in2X7s E0ehFvF+zYgKnZyAKgyGQZwb1Yivbe4DoJHZ6OKyTy6cPZR//1s+cZwUovv/s3xbqRMf jYHFLvww6+kjNfqqDeFwgdzrhWwZZ4PHxIl6Yi7eJXHjXCe7Pi8OceW8GHYl9/zz0c9q I7lxrbRInja6DXjPebcIJQ5KtmO07ynldHWrknJgQddSyEYYnkOgKqYAb7MDGz8WpP/+ kX5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=QC6SgbJA; 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 f12-20020a056402354c00b0046c97ea0a5asi2663550edd.289.2022.12.04.22.11.32; Sun, 04 Dec 2022 22:11:33 -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=@intel.com header.s=Intel header.b=QC6SgbJA; 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 483D768BCBC; Mon, 5 Dec 2022 08:10:13 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2102168BC8C for ; Mon, 5 Dec 2022 08:10:07 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670220608; x=1701756608; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=EOIJ5tAAJuBBGhjJVSvTwosLxPXhjmBMmpAjC6/v2hU=; b=QC6SgbJAcnP8CXMG9r8pENGNTTkreEEqnXLPZkUHSaUzmCVmzuQqxeUt 5TiKFfXVlYI93q+1soxzT9I0ppeSIRwYl5XlkSf+XZ1eV8F88KuB4QYWf tVB4+JfCtebxjIqYQd2UVu0Moam6jf2y9xrQLlP9sE4mEQELV1GNggDGD F9rWI64SsJvj6MuTbsgGNBqBV3kpw2WK6kDhqq3xlS6YT8FyISHscSVBy sDlj6xbpWBN82+tV+d0dBoBiU1GRyCKiSrUjv/3EcH+Sji0yk1QGlDpVZ OkphrcWv6OiRoKHz29hZ5dw5E8ueu3mhAcE/RNMvA+fkzcorL8Zw6KQOP A==; X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="295971415" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="295971415" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Dec 2022 22:10:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10551"; a="645700142" X-IronPort-AV: E=Sophos;i="5.96,218,1665471600"; d="scan'208";a="645700142" Received: from t.sh.intel.com ([10.239.159.159]) by orsmga002.jf.intel.com with ESMTP; 04 Dec 2022 22:10:02 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Dec 2022 14:09:29 +0800 Message-Id: <20221205060929.2511871-13-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221205060929.2511871-1-fei.w.wang@intel.com> References: <20221205060929.2511871-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 13/13] lavc/vaapi_hevc: Remove duplicate code 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: Fei Wang Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5ZHjzLw3qpCI Signed-off-by: Fei Wang --- libavcodec/vaapi_hevc.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index ca14052d56..b3ff2f7344 100644 --- a/libavcodec/vaapi_hevc.c +++ b/libavcodec/vaapi_hevc.c @@ -538,12 +538,6 @@ static int vaapi_hevc_decode_slice(AVCodecContext *avctx, pic->last_slice_param.rext.ChromaOffsetL0[i][1] = sh->chroma_offset_l0[i][1]; } - for (i = 0; i < 15 && i < sh->nb_refs[L0]; i++) { - pic->last_slice_param.rext.luma_offset_l0[i] = sh->luma_offset_l0[i]; - pic->last_slice_param.rext.ChromaOffsetL0[i][0] = sh->chroma_offset_l0[i][0]; - pic->last_slice_param.rext.ChromaOffsetL0[i][1] = sh->chroma_offset_l0[i][1]; - } - if (sh->slice_type == HEVC_SLICE_B) { for (i = 0; i < 15 && i < sh->nb_refs[L1]; i++) { pic->last_slice_param.rext.luma_offset_l1[i] = sh->luma_offset_l1[i];