From patchwork Fri Feb 3 02:09:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40223 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp835617pzk; Thu, 2 Feb 2023 18:10:39 -0800 (PST) X-Google-Smtp-Source: AK7set/Kwjmvv3ftaN20OitR02AOQVEntygaZzbD4QQXL8S7r1ow4Kq/PCDx+KK+FxvGO7GHXr8R X-Received: by 2002:a17:907:9b09:b0:88d:ba89:184e with SMTP id kn9-20020a1709079b0900b0088dba89184emr3885458ejc.31.1675390239119; Thu, 02 Feb 2023 18:10:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390239; cv=none; d=google.com; s=arc-20160816; b=KFifA6BU47aNtZil9s1fV1xfpbsFBgBiwRqzsYdORKsQhshfTUxvn4MzVFEQtQRIrZ S9vcBaenG/wl4+GrH0hrAXiAXJuTsO3wGo0OVxz2hoSf86jJBJIFIrNSsvmbD2mpGWVv p10LAKy24VvcG8u9lPhfi2TDlORXuSBUvlrFbq5Lx+INokUw3v3V9kBHgK/AV0K3NG/9 tWGfm439zdfIOSvCt31LKwFcopAokceYqO1Uz8CiNAUKBU11JArOBPxIuXPSJGEC5/Ip Q1Mt39c3HvubOiVyszGuvlMFd3B6XSY4OOqxtozgRm0Ovg2F3A7pGsH5sfZjoD/ubNdr zgvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=3uj9hUGVmX6BLb9/Bq8ClKe002O9Es9nu5lwAvIry9U=; b=D5CI0UkBWpOekeJLZ3d7F0CaFRnj6APC7vP7Bes+4dG+Obr12lhNczNKTKsU3FXMac MzgXls6lmfT578Xo48+h7jw0m0uGm6p7KRd01Jf3Kua/dKL6scUmom9Lu4qlMMtWMrNn jGTaeMNU398f+2ofktoHdCRf+EHV5/eHqmnF/tPwLLXDR6lUc24bHLRLxnqcKwfTmlpV RsodCgN1F9UeKq62yNmM596M77SV5nUI4+u67dwL8P30dna1hxnkZPOC3EznMFzhTIAK cXDXPdWb7Rvj49ajGkPEaRwONEO1a5sK6tgandDCg1IfO8PboTOTGPvpDE+kUHJWqrnH /PtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=QCNZip2V; 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 mf24-20020a1709071a5800b0088c9b777611si1359064ejc.169.2023.02.02.18.10.38; Thu, 02 Feb 2023 18:10:39 -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=QCNZip2V; 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 A813168BE00; Fri, 3 Feb 2023 04:10:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E2DB76802E3 for ; Fri, 3 Feb 2023 04:10:27 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390233; x=1706926233; h=from:to:subject:date:message-id:mime-version: content-transfer-encoding; bh=I2CCbHF5u/akDua9d91MqY3r7/ypn3HI9UadQI3adCg=; b=QCNZip2VjgLcXt2dewPGmY2vR8UnhpHu6kOxqkmCwESU7CsHwvE63reP 1pOyvZItBViSYqlP0G1DuTj3UI7K3HO949uPQEjDeEO1wacfgJp2dWq03 VunzcjFSpxKCPdwsOEcTdofBBgm+Uo9b3Z96jxs8ZV/NfH9rkUtbmErfb 8+9jSiBXcuhclJF4Na5kLiIEe0YD3q51bfWKrqT7NkuOY7AiY+7VVjrq/ DFzn76Vv4t+qtLsZsZtgvbue1d/s3Qxt5Bbc3OMQEikRAv1jqs7KtGJGz nzZg5rqlRE56Uzw/h5wseLvOmb+rFdXbhlwLMst2SGdR2Lpb/OfNJQ8Bs g==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651706" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651706" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505848" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505848" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:24 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:15 +0800 Message-Id: <20230203020924.443162-1-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 01/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: x+e9OiPqIIm/ From: Linjie Fu Described in HEVC spec A.3.7. Signed-off-by: Linjie Fu Signed-off-by: Fei Wang --- update: fix accidential fail in FATE. 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 90b437ccbe..9e36d2402a 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -1672,6 +1672,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 5fe62ec35b..4aa5b76d5f 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 Fri Feb 3 02:09:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40225 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp835704pzk; Thu, 2 Feb 2023 18:10:49 -0800 (PST) X-Google-Smtp-Source: AK7set+hAKaNYnIzpFnIxUsH4JMU3h9aldV3dulFCjuyBLXMPVrVKjLT7SqSPUGuYHCvLd/70BJn X-Received: by 2002:aa7:c551:0:b0:48b:c8de:9d1a with SMTP id s17-20020aa7c551000000b0048bc8de9d1amr8786116edr.37.1675390249550; Thu, 02 Feb 2023 18:10:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390249; cv=none; d=google.com; s=arc-20160816; b=rZ7yWzYC7v3y0laDuSgGrIwKaFkm+ZeB77Q9/tLXel+L9FhGPXDmfQ6i2cGwV26qmy yU8VlS7KBQDt8UwujaHhveL3fMkyInhc4s9JyCRxDHposEJp5Vi/qL3syogWUvB3rnHP VlKJ4xsjZMMlziXF2r0mj2BWCjL/v/yDlEm5hWnkvAR1RCb/xzdcdN6zz+pVneybhNtG +VYDrX/P0aYdhDE13zRPLjHBoj7bPMFyhn8wDeKl3dEm2tjA6jA1QV2piybDgikzQcWN Un+v8a3bsfSBOWTkwtI0mrBR0ALYTklINOTNW6Wy+LCA42UaJeP1HAaDHxSB7QAy3NmP PeWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=DtB0ERsM0jG3EtE73eOYNhBNjivxN8PcR7Hegk6lklU=; b=GQ85GnfKlPVOpqJpdr95EqDx0txsDt0jnmYPCnpwfpY9hPGJGoVV5UCp3Cy5aldaYt 6U7m6vaXa8089cVOJMKNXkPZaeRmZYuOExfve8yMYMcVF662izsk5e78Yg1RBYnt8iFc 59+zHjU0QBNxiCL3w71mdEh7sH9ufjym+MxWP9kbMTnkciMOPMHx6cWrV1P1uf+bKTiQ qjIfMYhwjOSL26PUaeffub8CLKX8WgjH3Y7AOZR1BxPI9h8RM5H61dvbt0HEGhRxEZcv yWTxd9ra86n2SqAbZcB0cp6nRr+xeb4HPzSjb+KdlU/BBUVjmuzph1UuvPDE4PgtLhlm EtZw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=kGBu6SJW; 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 d5-20020aa7ce05000000b004a2355a37c9si1102857edv.364.2023.02.02.18.10.49; Thu, 02 Feb 2023 18:10:49 -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=kGBu6SJW; 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 B2BFC68BDCB; Fri, 3 Feb 2023 04:10:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6699E68BDD3 for ; Fri, 3 Feb 2023 04:10:29 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390234; x=1706926234; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=a3XIqrmp9IzMhYCzHdagnhnX4jwc8qKcVJgWBAT31Ic=; b=kGBu6SJWlkdth/LHapHxJMjZBO3yxJz//0mAN6eEJ9acK4x5Op+2gsAz UuOj6p+kVeQXs7ztWLFB4itgNlf1H4IqQpslXlohE3ZXqzfKjcuLOz0Bt wVdA+Wf4WZ0Kn1x/2kRa698Vf4xys9Lw2ypLeGy0PS/+uZr8Xjs5vi9lV U4nFvRumKEI12q910r+WtKkBoEA963PRzAAQ72ECcGFotYZN3uDz/uCSR b5PueIWJwMdonGHLWQPFRx8lmNb0Lgj852DUeKRLSux2xS0zJjs737DUL 62q0l4fAF7bdfHn0hWjHaun4eG3iOTM2Wuxk7T8xU73XGD4Dg/NNSlfPM A==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651717" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651717" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505856" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505856" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:25 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:16 +0800 Message-Id: <20230203020924.443162-2-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 02/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: UFiyCShig/et 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 | 289 +++++++++++++++++++++++++++++++++++++++++-- libavcodec/hevc_ps.h | 69 +++++++++++ 3 files changed, 349 insertions(+), 12 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 4aa5b76d5f..348e4d8de2 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,161 @@ 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; + + 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 (int 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 (int 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 +1488,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 +1512,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 +1905,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 - if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps->pps_range_extensions_flag) { + 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 (sps->ptl.general_ptl.profile_idc >= FF_PROFILE_HEVC_REXT && 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 +1937,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 Fri Feb 3 02:09:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40226 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp835785pzk; Thu, 2 Feb 2023 18:10:58 -0800 (PST) X-Google-Smtp-Source: AK7set8RwtzAyVgspdDHxPbXIlXAleMANk3gGNGYRJlKuBTpr2cRO+i2/30laJARWU6zvMfhf+Q0 X-Received: by 2002:a50:cc8a:0:b0:49e:45a8:1ac9 with SMTP id q10-20020a50cc8a000000b0049e45a81ac9mr8926938edi.24.1675390258719; Thu, 02 Feb 2023 18:10:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390258; cv=none; d=google.com; s=arc-20160816; b=gVJm6s9E36Vf/SEAM+GBgzpECDhkfgo7SqPcbAjYmKiwNkgAfrIgX9q7Qe6mbeWRgH sp7DJNuvA0X3LaRRi8YhgNn8sBJ2MFODtpxEV4I1BPXv83+rGntXKsytRs71fOS4QITz xQ7tIF1ufdDLHg4jrtCp10k4t9UK4+ceK7jsw6Gv+AAD2ePtRuuneaThK/XT9Ql4P2fj O+8CO45VHo/Ld9HewU1CSP48ZvjZFSFdMltxt0VK7r31Gsq+GLoqCX19VVa3oWsUHVmb UextspoWS4VG+VrwPGK5qnUQKkH9TNJ+18A44I+rDc1lmtd5Damwp4JtRfoXCZ2WZJW/ GU1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=SThoIiifrtm6mC9w7bB1h5+Q4E61Y7bxAgj0Cn8ofKP23+mX76+WagWyaje/izrSGV fhKIiVROQhYAVdBL+cIh4gGPbDkTK3Np5yrNFjp9BIA69FF0rQwyIm2Ni3+4R9HXJbfI R3dp1mntTYAXofNV0bMBnZtykEH/jVihBTK6w08FznfEgXY2Cbn3KjCJty0rECEqk6+9 a24eUkJc8zqqqa35M9cqQ08B3kWsHX4wm7A2g8RvcSOpx8F6j3Jw37dIp6OgXDEAlni0 gbGjEe+YUXJyZDw4x6kXEOnXWeKMgnHpB3X4tgTgfllwzt7NY7Q6uqqtlHQTZFPADW9V ztAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=OWsNforz; 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 w13-20020a05640234cd00b004a22b5c1de7si1516804edc.231.2023.02.02.18.10.58; Thu, 02 Feb 2023 18:10:58 -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=OWsNforz; 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 BE9EE68BE2F; Fri, 3 Feb 2023 04:10:38 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7A9866802E3 for ; Fri, 3 Feb 2023 04:10:30 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390235; x=1706926235; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=1JoWN+YMZatoxBLjbA+BOa3Y8+4nDxD8bQqzdOPG82o=; b=OWsNforz9V4b+kPjynP5Rn2Jf0OdxV91G7x9oT/XVt0kl5kVvLMPKk+W HTM/EW2zmk9OF3t1Xe/O090Q0jaq9bcuV2R87p2ga3oygfsni9qEjRNjO nicL2rlabodezvNQAsRYEhmyRs4N70zP+kDfl98IHIBmyEjKOHaZ57GaE ihTl4vp53JOGLuc0kW2qh+NwCsSuIx+lmtvSX8FdwcyFR9vX5JfUvpKFB RRKmSRcO1i7/kook0rrnA9X8/QXe+gFq2RIwrzCJls411qnKajQxmv4nm xfApg/bax/QMkmX6jwDTlOShxLVYLo5JxwLyoLvxHruYiH5m4e3sxzs0t Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651721" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651721" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505859" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505859" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:26 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:17 +0800 Message-Id: <20230203020924.443162-3-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 03/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /wekwb5pd7Fx 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 Fri Feb 3 02:09:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40227 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp835857pzk; Thu, 2 Feb 2023 18:11:07 -0800 (PST) X-Google-Smtp-Source: AK7set+aN7aZIeieijOHze0LoPSF4ASCSrCzoaLVsyI9+O1iVCZZFfG8dz6JaEGzV65ZS59x3/K1 X-Received: by 2002:aa7:d54c:0:b0:4a3:43c1:8441 with SMTP id u12-20020aa7d54c000000b004a343c18441mr3160541edr.21.1675390267424; Thu, 02 Feb 2023 18:11:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390267; cv=none; d=google.com; s=arc-20160816; b=ZfjM4ASEtPy3smgn1aiHILikmyi0SSw57DkPWHGD9xY27o+xPXkod2yUrxJnIKkn0Q HlqkJpOgfimRZUwE4TaYB0PQi76/auxTU1RwEKsBM6kHK4OjmjdsMKwSPYwoWsH2jRfz llWExQaDhjASLhxhsQW6R27VvvJtd2Nk1SK5f6clVi5r8jL2alHZmt9zQ0SIPjGQJlUS dY79HuhTtYIYPqmb01Wmf4DQy6lsDZuytq3ZKi0gV80J1T5vIBaKTEYxtyd7K6dtK5my e8IRBxKiE44vodDWHWQlh45l0mJBuoLKxflTVOhk36xKdft9edyTg5mo6SKBepjbn4ZV hvmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=wTrCHpjklCjY6F1yPniaGAXceEfhiWtap1eaeTWKG7qwJaJP6yhoDnXIaRvu6Y309R 45xRgoxeq62AmHIY8O7Xx5WaAVTuDFx/7+40aR5XElnmdrBQSL30SElpIc2OWW7FwAEk q/gc0kZbRjCDpSHQ99WeUZJ6beG28Inkn2gba/Lp5KyixYVp15PkdWXm+sznpZq5tFpa ChYl0lcWhnVB7ITmacFSUan3h+ai3pjxBUtCcrwhiVSG0LaREz2FnWO76Ya8HKsBnPv2 yQeqfup31kbE0gwXN0eyev+ueE49crPxKiM3QufOG5WOwrWSH1Rd0G+9bCwYMcj8LMB8 U5KQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=DND3o5cH; 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 v10-20020a056402184a00b0046c8d52c79asi1003810edy.357.2023.02.02.18.11.07; Thu, 02 Feb 2023 18:11:07 -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=DND3o5cH; 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 C9C5D68BE56; Fri, 3 Feb 2023 04:10:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C79FD68BE30 for ; Fri, 3 Feb 2023 04:10:33 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390239; x=1706926239; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=L0fAowE8Rj3D3/ekpvujoRAjdJaOCWU8raZDLJN3GcM=; b=DND3o5cHWFyGNUiELSfQkwqY/8Wd+HtkqW5Qay9Ste84sjXMMZoVOgBF BN8/dYRnK6etMiwnPC1aOKO478p4Q70onmI4b6W63Yj78QlVnWnrN1J/U +bR8eTHnlqjfNXWsQFIBRaVhv8iSqrzjlA/lQ+clsb8P3EsZ3Awx0Vf+y X7iwKffEXcaYO4YFl+XBFKTacgQ6jk3KXjjpQh4Og7l+XinHCR+f2JaeJ B+DDYqn74Vj33A9vLetEtHG3qsLAk1/ntHFFnFs55zY7QWc17G5EQdm5I HCv3Irf8g6qXNWywH40VLld+gwdIG9TlUUwnCGEb7dRx/1HX1S7rHfFHA g==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651725" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651725" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:27 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505863" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505863" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:26 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:18 +0800 Message-Id: <20230203020924.443162-4-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 04/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: htuYRSJugkbY 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 Fri Feb 3 02:09:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40228 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp835952pzk; Thu, 2 Feb 2023 18:11:16 -0800 (PST) X-Google-Smtp-Source: AK7set95+MYNn2jY2D3R5EVWoKh92LsZm94dRLvLBo6F5dhWjIPuw+BHDT5ojssvBZO+OIgNFGsO X-Received: by 2002:a17:906:8586:b0:889:1eb1:7517 with SMTP id v6-20020a170906858600b008891eb17517mr8417828ejx.30.1675390276383; Thu, 02 Feb 2023 18:11:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390276; cv=none; d=google.com; s=arc-20160816; b=aOiMHj7G0tRgnt/2kLPWZcS3VgT0hdFrRI/Ngt6SIfaY7x7kx+mUgmgxnbIHsWJwd0 8DL0vFFv+2OlPLai4iHIkAbrtQZsDuP20/yp4TDeb8udSnwkJ6HYXEnOwQl3GFAxhqJp Hj6RocQ45Qf3LiXMA2TZMw/5uQEkqYsE+KGmptHuT15/QlcfeKZkuLPkjyT2SZskk9MM p/vXLHBCa1Y0YYsCCfetbtukd/WFgsqy6wMVWgFEcrDKBVz8GxZXzOAbnyO1ICzDVt5/ exxQ4Wkh0915Qxzo34+r/K8KcIA4gOYQYrVdiqyNtAEcdADHtCKuGeMuMw4OMjkBHGQ5 yH6A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=SfccM7trQpJq65EYT02jO6eAZu1lmXDeNMChIPdqXGO4cPbesiEsyPudhwuGS9AK0q jfBun0tY/M8c10RVHO6K3c7h6wzm5p55f1SzOuwJ+k5GeufpBRtXpl/h0wTm7ly75On2 /uhOGagBrtttgcd/LMHp+Z6VQehti//5N+on/W77laL47Tb5JJT0YepUMcDdjsmA4zQN yp+r5CtvelD0nwWik3cRt6Zn++TDh3PzkJqLzr2BELU+0U8heZG/fNyKkzS/c0jzRrSw Pzx7VMTmd30baaqJBOqJkMWHGXstGEYehPZi3UHMnKitmffB7bJo8IwUMZXig/AdLWty 8Egw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=g88alkOP; 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 13-20020a17090602cd00b0087a56fcad9esi1657295ejk.278.2023.02.02.18.11.15; Thu, 02 Feb 2023 18: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=g88alkOP; 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 C5E4968BE68; Fri, 3 Feb 2023 04:10:41 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4B8D068BE17 for ; Fri, 3 Feb 2023 04:10:35 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390240; x=1706926240; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=RzgeT27PLmco4fUtOCQPH5gyzkPiewt4BvWtHoO78Fw=; b=g88alkOPvSpIE2+9pGhoXYzrt075fzLfSn9w59qjQyq12lQNn8p0bQbo +v0Ksb24BcE8Oggcfu5u6wN9YxjXYt5+JXKdKPvt6kfvC9T7R1AM0RP9k qCwSNA/0CvLz+1CBzZCI4ZhJRDgsvCm/fvE5sDh9FtU9azodjLSZ45sZv PF0xj6pvMDPJ88Mobfu6vJY2xhWrvRhvtT3p3zbsQelauKvoJeE3rJMbx hQ2MtBdFt4EeLFwR7bWWxJ8XTsblctNgb8bCPvP9wIHuLj5Dk5Ci70VjT gv9ZJEoBqhCGDIERYVApbxGOFNsAB74iulg/Umuvwif0NXjLqKWJlpW/h w==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651732" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651732" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505869" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505869" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:27 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:19 +0800 Message-Id: <20230203020924.443162-5-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 05/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: iSeRZR8TyRb+ 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 Fri Feb 3 02:09:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40230 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp836074pzk; Thu, 2 Feb 2023 18:11:33 -0800 (PST) X-Google-Smtp-Source: AK7set83vSqsNdRaFGgyVOCK5BF4mFqPR/kabj4GbgO2W/j4seijFjOV1+3AfySjA6/MUfIvBXIO X-Received: by 2002:a05:6402:254b:b0:4a0:aac4:1030 with SMTP id l11-20020a056402254b00b004a0aac41030mr10666855edb.28.1675390293254; Thu, 02 Feb 2023 18:11:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390293; cv=none; d=google.com; s=arc-20160816; b=tYCIftgH4U46Tb8Zq56HwA4pglac5SZmac9BYi4jOm6ZTtjuqYDLNWIHGpSEpSoVOd T+BQN3e1PRfk9ltLPOM/Lbt5qSjTktu1zpfb/NUwbaSO24PceY3RlFwf3uysdv6JAL2l V5LM/iHFtQom0ZtIpzmhhtcURjoDhNlUQ80C3vevv7J6LODdDphS5KrNB3HF7TPLDqEm /54s1KwErCqWybF99uyj05YisjKcYSbnKzZOU95wgEgyANul0L6SYutAxtTi8V2jg5Tt QUUvc4vHfZccOygI69rusc/hl+ga6E5NKediSw1Li5hiqYlZl/3Ffr8srskIzXjiTT1Q DhOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=lEs4EXgxY1Z7gefbpoWz9fyvL6RRFbPTBfalZGw5L9/aIcIXQFDyK9m/4ARclzdPSu eQ8oMc1z1ZNlCb9RTiHefTstnXkW9SphWr+xl9oS23zy6zHF+7F1Vp4MKNan67oGQ41P Xj8waKbMu8ZVRNMA/zo5GL7ylTB1Pbe7FSiCWkNH4uWVR8dFy9StDq6f6TE1GFyywpbe T336irVVMlEsl5rWtPEosmftVCA1ctnM5DvoYka/rNDSBPpfJYYkDKGA5SFPa6OCeeVB sKP4pfgEH4xbY/HRArkGiqA2W6QJxDGuMlkWwqxe0Sic9WwSsfbx8afCifjJMfsO+oKf XriQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=e0khrZBP; 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 x11-20020a05640226cb00b004a24bd02c19si1523084edd.110.2023.02.02.18.11.32; Thu, 02 Feb 2023 18: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=e0khrZBP; 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 1836968BE37; Fri, 3 Feb 2023 04:10:44 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 68B7868BE3D for ; Fri, 3 Feb 2023 04:10:36 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390241; x=1706926241; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=x8ATO9dBZOURiBlDbQJVRcH+T+KLbK0xC6R15sV4wZM=; b=e0khrZBPZwMfPmjckqX6ONQqe3qZhZaxvPyZKjNwK2KF8eDh8UJBi+3j NAKMe2gORzBmA+xLtetWcIYSxV5yhRugxIWYE6QwmfMgrsNF6YS+rzJjs KxFWADxj/mv7FFtyXFCZEGLucH+Pi7pZXQLrVtUeF9rnYwGJIhikBgL1E eVZA448GH8iCD1VF3SBAO372Q+o/Svg7gTgg1p5KfX7/QR9SB3JFhO/CO bwrygBtLoYuADPd1aKjng118sV/g8tN7Pz1PqU7g6WTZDPHTZRiZ354ZO DB93LaLddf4Bk3RV7qxfNsrHCDOrbkltMvyhneNcV59MWl/e188MZRUNH Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651738" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651738" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505872" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505872" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:28 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:20 +0800 Message-Id: <20230203020924.443162-6-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 06/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: bwlJXWWrZ9oq 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 Fri Feb 3 02:09:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40232 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp836265pzk; Thu, 2 Feb 2023 18:11:59 -0800 (PST) X-Google-Smtp-Source: AK7set/fY5B5miBcI2cVEaUxrc7wpY4JaXlOntvaduGGwJdc7zACKDjPrzl8uQjydsuy52DpctVC X-Received: by 2002:a05:6402:3589:b0:4a4:d49b:34a6 with SMTP id y9-20020a056402358900b004a4d49b34a6mr8726378edc.9.1675390318915; Thu, 02 Feb 2023 18:11:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390318; cv=none; d=google.com; s=arc-20160816; b=r7B+v+sfCjtfk4eM3iWeSyM+xRmgD4BSbcmnjyqfeX6OlgWk80z9FdXc4Ncjtao8lB al60UKP5SLVyLsUQQRbvs8QLtYoifBD6/3lZsE5heEri9XzZGri7GtIAGjxe86Z86PVq 4xWk71enHK14TBfRwAIJN8iaTWbKz32sGnFx7Of8AWi/Y6R82YY5xc9Zuu5QgDmVD2aC 7xIf/TuNoFbC1+XogzyxZZDDL1fQfs2YkBvy3UJKJwhPs9mBKox2Vjw8dMljGKklCQ/9 CZI8rwRqO6Xka5xZAufacDsa7scoieYb6tBMVnP56G0TLd32WtwDdrxRxZn/4qGsVk4q RVTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=+YUNbb7pUdWIiBRC3xLthT8RJDueFI5usBVyuuvfYFw=; b=eD0fI1Z7oWyvdl7JFYZOZfB/oYWEh5YZKw3wUByyvh3DmyUyoSvWOlEJPAPBGpq3XJ PlAovUnY1B/Eec/i3GMXMe47+YoM5F7yHA6eZfket50QVnkwYzJY3FNercZ/q88kCygT ZhLg4aHeqP9L3AmonEdr5RR/0UOFDaVY2NxkpInoHdFFVBQd5+FU25YBOoMy2mx+8U1y kpr46bmV+KOlirG+MknBlHayRIyRBb4qJUXwr7uNOpYDLjf8d4LdlsQc2TKWgE80wETu AP/GQECFHNpetYAmcuWMwv6oibQIbkBp4a58QUtMdhstbZdl1l16vvwjNSuqPVU7jOVm r9mQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b="S+/hB3FI"; 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 b18-20020aa7c912000000b004a219af6b10si1104454edt.297.2023.02.02.18.11.58; Thu, 02 Feb 2023 18:11:58 -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="S+/hB3FI"; 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 18A3468BE8D; Fri, 3 Feb 2023 04:10:47 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B0A8768BE7C for ; Fri, 3 Feb 2023 04:10:39 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390244; x=1706926244; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=28s3QkQJ6zxYFjXYcMNIcqpMZEyvoz5Fp59k9PeTKLY=; b=S+/hB3FIdoG5Po0XJ+WDhGDcB09msAzFk2CY8f0mXYCyOSEp2RvaIRAZ qTU4oqlyORE9744BihYiBln/moF0caRg9+vNgrpx1Jh5As8QVBsTmtI/v 1uFm2vOEyRKruD6pE8zEIpuoYF+P33ldo4YYs6akjmpNVAAWtwr9W/E/D Hhqqq2at9mBSnqcn6saXQo/s2SvVzXpV4grCRvkE+vvZo/yvfN3AX1rCM 8Mr7K+TGUrWyU500sfhZBg9yV2w9zf4PIMtbuln3ZJf7XL5erK7s3E0ck 6zYU5Ab7PT7yN0gm4oLvKi4SLjW8gpReFgLdN8Nbn91ssjWQRWg+tB8lR g==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651745" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651745" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505876" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505876" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:29 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:21 +0800 Message-Id: <20230203020924.443162-7-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 07/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: pPx8cs4/nXgs 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..73a8f5b4ce 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 (int j = 0; j < pre_palette_size; j++) + pic->pic_param.scc.predictor_palette_entries[comp][j] = + pps->pps_palette_predictor_initializers_present_flag ? + pps->pps_palette_predictor_initializer[comp][j]: + sps->sps_palette_predictor_initializer[comp][j]; + } + #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 Fri Feb 3 02:09:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40229 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp836022pzk; Thu, 2 Feb 2023 18:11:25 -0800 (PST) X-Google-Smtp-Source: AK7set+OM17iBFTjIBGCtVaGLOwy85YlZlfGs2mtjasS+M/gPEbz3j5XuqpZsz6GVDEO9bJWskK4 X-Received: by 2002:a17:906:c213:b0:878:8074:713b with SMTP id d19-20020a170906c21300b008788074713bmr9223348ejz.53.1675390285442; Thu, 02 Feb 2023 18:11:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390285; cv=none; d=google.com; s=arc-20160816; b=hX5hozU5qo/FqBoFMyTCe4fFzMcQ76ZlkeYuprJqk0VIKahfoDcBNbzUWm3T7svw42 NRwn1OezcTR+kLkpGUgQwLxoAr8fbKyISsy0rcmVnCgGZu2uHGCtm56njY24Aub2wRIu ougAhgT7bO2X6UEBYfYhCQQNU4qzbalKJCrQyHH5hd9qEA9xRqtREpY1cuK1J77dXUFg 7NkTQ+yJ1U/fHMhqLz5fUJQTiBp7td2yhEVvBsq/2xXuaJhjfe/um9A8R7GDhuFOPwwr okMaViZt46Zy4sSwJnMRsK/QZRF5cVRw1421djkkPOdWxBBrWMM4JkwI6ezv2WgVcuP9 pRpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=9y2sYznUwFcFbCgVreP4Jg/hY6yASofEwFIf3i7Tdq4=; b=GbN/SOZ1NfTVoXnzrdPUbuAGGuBgN4w5PhhjUyrrBsec4LjZtjDFX9gi8yTbjXEFks KKQNUURr5KqZSJTWLOX7q9k+PiJgxW1Nl4q5mxbIGz/fJ4wvnBMeocKc3mJmYpKEBd9d qHKfV3ERW9wufCJmvIl31jKz8hf9xf7NmCMveahHByU3fuBBS+bipUkj8DK1TxivXvpq gc5lZWjJnn3+rapFzC8hJVbiWBruf0Nu+lpyckrDr8NiSLQjduhP+dWkyp84wn6P/KO1 R+Isb9r+o87FcExqnNh9/amSHL9WM6YO6WTcSbZqcssiKgQNyLUqJFZvnunN1qGzNY3U 8UPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=CxefZ3um; 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 cq6-20020a056402220600b004a25a20af56si1077604edb.340.2023.02.02.18.11.24; Thu, 02 Feb 2023 18:11: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=CxefZ3um; 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 0CD5868BE6B; Fri, 3 Feb 2023 04:10:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4291568BE5A for ; Fri, 3 Feb 2023 04:10:41 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390241; x=1706926241; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=hmm96N2EuVMW4p26W3oPsqzIxixkqHwJHDxg3DAgbqM=; b=CxefZ3umITRx5Ihj8hQdtOtQkRHeyvot6YguvgL9jlk7Blm1GW0uxZWl C6xc5Z26v5PEvGnwIXr+U5J/ltHOgasdZfPRssoz2i5n5foZ+0RsWk49g uMuuOQoRhpvFpgDQyde05ln708vpVBxM8FX9M923Uxq36pFKQwmIPmiS0 9LoDLVnbqF7MUjyAFlZIi+pqMyX+SuO18R4zyvX8lrL9HfKpwXbhkrH4e BQSK+nPwL2IkrgE9VC7fsBFIFo7hCw44srsngPZOZDzxp8OkShT88vyYL rRiQ7/8xSvdTTDc/bxRGA9NMUcJmozwA764X+12BPLHujT9na7ArPOKsL A==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651752" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651752" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505880" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505880" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:30 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:22 +0800 Message-Id: <20230203020924.443162-8-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 08/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: SpT8d1cmflHL 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..ab8c12e364 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_rext_scc_profile ), + MAP(HEVC, HEVC_SCC, None, + ff_vaapi_parse_hevc_rext_scc_profile ), #endif MAP(MJPEG, MJPEG_HUFFMAN_BASELINE_DCT, JPEGBaseline), diff --git a/libavcodec/vaapi_hevc.c b/libavcodec/vaapi_hevc.c index 73a8f5b4ce..c10617a81a 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_rext_scc_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..449635d0d7 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_rext_scc_profile(AVCodecContext *avctx); #endif /* AVCODEC_VAAPI_HEVC_H */ From patchwork Fri Feb 3 02:09:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40231 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp836147pzk; Thu, 2 Feb 2023 18:11:42 -0800 (PST) X-Google-Smtp-Source: AK7set+yZxOa7PL/EdUFhC+mpgUCkdCDrFNZasTWAmE/gt8INwNIFsDtuPpw5sAyWfflhrZ1Uels X-Received: by 2002:aa7:c48a:0:b0:4a2:4abc:29be with SMTP id m10-20020aa7c48a000000b004a24abc29bemr8306890edq.35.1675390301934; Thu, 02 Feb 2023 18:11:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390301; cv=none; d=google.com; s=arc-20160816; b=dFnhE7qleKmS3ld8nVcw7lrbrI90WdpC4qBKcsx40TTe15nGoq0U56JyG25CCZaJ5g Ceg5Ny0HrkdqPJZfLvon/6gpCBKlWRLmovrQFwlajp4KqKo1gwdYDFz2RtU9inurupC9 xS+usCIxcxCFmeC++i6hurb2arXi/cLfKaPDSWCA/oKu/24XOSjtGuEwnN/CluPiKLtn skegXQ8xuPNjGxvGLluMi2y7sLG02ToK+sLn9LKbSteiEDEr3KBbdIIcFMl/CUMmFs6r lGopJjPXCSi3giWthuwnXw+EG/gZqGnKv3pSdIznsRj8XHDohhHWqU2LTJrGON6vTX3S 1w/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: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=RgzCobuQ/eEqn0uBrp5PSNHtjDVQpxXSRgp6LYqikz4=; b=hpiISZ0+cm9d7yXbGlAzknGfiMVIirwMyMYLOYkYRVmbRPAYxkKQozLz2SijS6jLoK NLtpLJyFs0nGFRK8JhrLwfPqsvlhgAnANysCwaHiMq8ZGJ8gg+matoRd7Ty1Bc5UOu8V 51ouTEjeNHxuzR4IjE86TnYXbHBx6EAWreHE1eJ7KQ1JLypzqSwsmGVYVtI6/O6EMN7Z ow39BqsVFa8oo7gr80jifge4D/spsdzBKiA77rQ4AOEAWSNbq60vkr/iAspC3U1wKSrc 9WnCFnDc1DYIJJkIc5BpwwozCZC5793lDcqOqWfGeZsmFhxB7+dgfRZS5c48mUSystgW 09Qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=ZmAtZoHq; 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 ef5-20020a05640228c500b004a21c0af01bsi1162809edb.344.2023.02.02.18.11.41; Thu, 02 Feb 2023 18: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=ZmAtZoHq; 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 2164168BE2C; Fri, 3 Feb 2023 04:10:45 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 49B1D68BE5B for ; Fri, 3 Feb 2023 04:10:42 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390242; x=1706926242; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=OrqmVquT4gNYxXY0asCupeufez3Gq1bxCbNpQjqR0zg=; b=ZmAtZoHqFVYOY2YFx6oU23FhBKSd6XDpTUYmsraMyBQlNfFp9jypBQZ3 L4Jaa5tjqxYlr+AHdRebDznDPB+nc7R8RvzdgjEakzNfa2nVZhSENZTzQ gNH7Xz5EBkEmRecgEK9yQmUxwERSucSeYVW2OJhoilrUrPNgE2TAJuM+N uEyHvZTvDBONyILdVOYzhr1fkZkl5vPHEo88PMAjMO27ajaH2sfU5or1E dylZiUpAXdXh3exWXSmMOOfE23BupciovPK8TfLYlLqBtxfa3u5ibcL7p f9BwazxCJh7GcyA1C8UkMBxafYkZ5ehr7ZHmCzzFiCTVUdcfkXi4EWog2 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651757" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651757" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:31 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505884" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505884" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:31 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:23 +0800 Message-Id: <20230203020924.443162-9-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 09/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: MZShSsWVowg9 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 c10617a81a..29c75e88f0 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 Fri Feb 3 02:09:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, Fei W" X-Patchwork-Id: 40224 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:5494:b0:bf:7b3a:fd32 with SMTP id i20csp836213pzk; Thu, 2 Feb 2023 18:11:50 -0800 (PST) X-Google-Smtp-Source: AK7set8vVUYfCdeQ0M8wkVidEFQ2kmjrMsZEiHTKdOw0UVOae0NQGMJ1J9yBMI142A4Uj+cm34xD X-Received: by 2002:a17:906:1711:b0:87b:cdab:988e with SMTP id c17-20020a170906171100b0087bcdab988emr7014077eje.21.1675390310593; Thu, 02 Feb 2023 18:11:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675390310; cv=none; d=google.com; s=arc-20160816; b=HypaV6NGeNafveMXrbaL+Ikce1h0Q23oXGzQJ/bujqJ3hNwq99MsyxBrFxZ5VaHnEC H8pz4+Bcsvh400M460/b9SIlPef5HKTfxILTC3J//stCKKzaI2AwRjX13qBHNThGllDn ScT8eg47+Oc60VsB4YV7J3uYRxsCjubO0nG+Oh/bJhQKWvCGYQu8bbGF86FtWx0/aunO 1G7dg7Koc/mvYIPbMp6xUMiIlUTIldJ7D+2H2iQDBb6Ur0swJp8mtq1PqYqdnRV52ZEj E1NsZKYr82zK24u9LbVMH3wGcR6noNWyjfAaOmHXHEyRB/M2qBdBZ3CNoVWdCZg0xYKC CyaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding: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=MKiGz9TVO3lfxYTh7MDiRbmSW1UVn8oJ4NeyEgyfsHc=; b=dX6TcZiIQgpym1bDldY9aX+61tBs9ZTgu4hdIqQPquwXXzh/KAPSft1O2LK1npxXEn gO7PUi3lRr8VQHgOpZt9wi+4sZfigCgMnLf6H+ksN2ZnebCRcEEfcD+cdcmRIS7jRkJ/ FXw9CBFsoTKRF0RLWM7DW8Bq7m/d1BMsfyGgi+/98yURGcQMhSdCO4d2vjp3+OXax3lv cYdSFbIY0AxOn5knQPCPEPusxiWdNUmM4WlD8sl214IJRZPnEnYjfxOJ3oXKZL5xiJ/H BHqL3+bzOTxJ7LFU+SnXn7offEU/IHriDr8tB/d9wYniz4cq+wBr6875wec5uzU/aerS tB8g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@intel.com header.s=Intel header.b=ManuoVF6; 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 ft21-20020a170907801500b0087bdb655fd9si1322990ejc.114.2023.02.02.18.11.50; Thu, 02 Feb 2023 18:11:50 -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=ManuoVF6; 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 1775B68BE76; Fri, 3 Feb 2023 04:10:46 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4CAEB68BE6B for ; Fri, 3 Feb 2023 04:10:42 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675390242; x=1706926242; h=from:to:subject:date:message-id:in-reply-to:references: mime-version:content-transfer-encoding; bh=wzEJ2FclN5vofO5vdDPQ8kEtO3HApE3Mfv6vZLDqg3k=; b=ManuoVF6MroD68G6rQjPkxtNEXUSZHaXyF8WJsbnm8D1kzf2LYR3hkLp GO2FNaWKVuSgeygLvsf7zIOzoFzzyJ/RNVOLdiqavx5KALSntyY0Q1XRi 3Tx9VDP66zIv6MAE+0K0dyrbj2/ws2XwdVSRhQZqIRUSC2zn9QT5AZHCc 19ofhtiDXH4I4zqxjaC1r35UGua0I71SgmG996DvWmY3VgD0/NvRpFzHi kTSGuEztki3yR3XCUgU6CuzPv2e30tDsEbH+tu6uMppZdfkxl5wlfE5ll 4NvWaX/Yw3sbEAot2KLaHMy5J9M/PvURxzJ+vsrk5ozBQD1+W6RuMtnCx w==; X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="328651761" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="328651761" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Feb 2023 18:10:32 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10609"; a="667505888" X-IronPort-AV: E=Sophos;i="5.97,269,1669104000"; d="scan'208";a="667505888" Received: from t.sh.intel.com ([10.239.159.159]) by fmsmga007.fm.intel.com with ESMTP; 02 Feb 2023 18:10:31 -0800 From: Fei Wang To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Feb 2023 10:09:24 +0800 Message-Id: <20230203020924.443162-10-fei.w.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230203020924.443162-1-fei.w.wang@intel.com> References: <20230203020924.443162-1-fei.w.wang@intel.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v4 10/10] 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: VobsK6K6C2zx 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 29c75e88f0..42e1b62fc3 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,