From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 13DEF48294 for ; Fri, 17 Nov 2023 13:03:44 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9C3B068C9AE; Fri, 17 Nov 2023 15:03:36 +0200 (EET) Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B336968CD0D for ; Fri, 17 Nov 2023 15:03:29 +0200 (EET) Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4084de32db5so17130815e9.0 for ; Fri, 17 Nov 2023 05:03:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700226209; x=1700831009; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=X+qSP686b9RJkWUgKAgQEDFYz3PNsE/3EHV6DRRVkyA=; b=I2wQBZDn7Air2Cnm7IRNp+U9gzopSP3wf1l3MPcQ6URgFli4oVxjETPCH1The+WR+D RK9YHNQKHQ91fkRxYPRqLlfkEPW7dNI4I/sowYj53DgX7sh6IsJXIY+LHGfIIGYV19Br SAkT90AjMMiQRc6yslPC2F6v2l8UwrdhPMziow5dxILslLJWVi8pS0e4w6jySYLFwFjI H950GWyNRlFlm5Mjo1+vuANvgDJyWyY/7nRK+TsS9DRBPU+c8eQqFpj4COlD/hhx8Z52 cvRvJ+YW7eUtscWiUn504diYGoQa517URAjJo1pi/h4CQSserrrG57NDuSORdr7B5Wrh l7pA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700226209; x=1700831009; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=X+qSP686b9RJkWUgKAgQEDFYz3PNsE/3EHV6DRRVkyA=; b=B4+nC/I0JrGwRCy7MeiI/16gUipk6ogq5dI6LFAwOUspee3nshjzUYCGsVdNg0pIIX MUUcDNQWaWa+SlMW2F+VG2bRLjyuVylUcBZ+sU40hgb2Iyy6urdTRwl1sVdyFnZoFTRP 3512NTSNtSDCeYxUlz12XSksojQeUDnpAsZUeA49HZ707A9vM34gl55M+qxKSsTxS1G9 qydoGEg/xLmkadIFxam7oVMCJRFScvBnesQSFPhPPRm1ZJ6JFvGaGPc4ugDb0qves8tL DFr8id0v/T8kmBwDfvXPQicdMz4Bl9avX3L19XStsdFrtGlqGI00FU1Ncs7LwB8RD4IJ 91yA== X-Gm-Message-State: AOJu0YxccpTLOEY7V/tKo1RcvVSYjNII1Jia5nrUwlfTnVKuUPz2w1LU l7iBCDp/hKPEXHi9aEkxrxWj3iCyilcuNIoO X-Google-Smtp-Source: AGHT+IFbH1HhFVerd3yiLxWjKgs9AcmYHI/pDIZ0S5jrVmPb3V+lu7PiaMP7lJj4qDE9dWN+VZFj0A== X-Received: by 2002:a05:600c:4703:b0:405:3cc5:1105 with SMTP id v3-20020a05600c470300b004053cc51105mr15547311wmo.8.1700226208850; Fri, 17 Nov 2023 05:03:28 -0800 (PST) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id d34-20020a05600c4c2200b0040a48430837sm6919203wmp.13.2023.11.17.05.03.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Nov 2023 05:03:28 -0800 (PST) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Fri, 17 Nov 2023 21:03:22 +0800 Message-Id: <20231117130322.3502477-2-mypopydev@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231117130322.3502477-1-mypopydev@gmail.com> References: <20231117130322.3502477-1-mypopydev@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] lavc/cbs_h265: Add pps_multilayer_extension support 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: Jun Zhao , Jun Zhao Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Add pps_multilayer_extensio support. Signed-off-by: Jun Zhao --- libavcodec/cbs_h265.h | 28 ++++++++++++++++ libavcodec/cbs_h265_syntax_template.c | 48 ++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/libavcodec/cbs_h265.h b/libavcodec/cbs_h265.h index 15951269fd..d83dc97072 100644 --- a/libavcodec/cbs_h265.h +++ b/libavcodec/cbs_h265.h @@ -421,6 +421,34 @@ typedef struct H265RawPPS { uint8_t log2_sao_offset_scale_luma; uint8_t log2_sao_offset_scale_chroma; + // Multilayer extension + uint8_t poc_reset_info_present_flag; + uint8_t pps_infer_scaling_list_flag; + uint8_t pps_scaling_list_ref_layer_id; + uint8_t num_ref_loc_offsets; + uint8_t ref_loc_offset_layer_id[HEVC_MAX_LAYERS]; + + uint8_t scaled_ref_layer_offset_present_flag[HEVC_MAX_LAYERS]; + int16_t scaled_ref_layer_left_offset[HEVC_MAX_LAYERS]; + int16_t scaled_ref_layer_top_offset[HEVC_MAX_LAYERS]; + int16_t scaled_ref_layer_right_offset[HEVC_MAX_LAYERS]; + int16_t scaled_ref_layer_bottom_offset[HEVC_MAX_LAYERS]; + + uint8_t ref_region_offset_present_flag[HEVC_MAX_LAYERS]; + int16_t ref_region_left_offset[HEVC_MAX_LAYERS]; + int16_t ref_region_top_offset[HEVC_MAX_LAYERS]; + int16_t ref_region_right_offset[HEVC_MAX_LAYERS]; + int16_t ref_region_bottom_offset[HEVC_MAX_LAYERS]; + + uint8_t resample_phase_set_present_flag[HEVC_MAX_LAYERS]; + uint8_t phase_hor_luma[HEVC_MAX_LAYERS]; + uint8_t phase_ver_luma[HEVC_MAX_LAYERS]; + uint8_t phase_hor_chroma_plus8[HEVC_MAX_LAYERS]; + uint8_t phase_ver_chroma_plus8[HEVC_MAX_LAYERS]; + + uint8_t colour_mapping_enabled_flag; + // TODO: colour_mapping_table + // Screen content coding extension. uint8_t pps_curr_pic_ref_enabled_flag; uint8_t residual_adaptive_colour_transform_enabled_flag; diff --git a/libavcodec/cbs_h265_syntax_template.c b/libavcodec/cbs_h265_syntax_template.c index 1e3bc1acd8..de8b838209 100644 --- a/libavcodec/cbs_h265_syntax_template.c +++ b/libavcodec/cbs_h265_syntax_template.c @@ -1003,6 +1003,52 @@ static int FUNC(pps_range_extension)(CodedBitstreamContext *ctx, RWContext *rw, return 0; } +static int FUNC(pps_multilayer_extension)(CodedBitstreamContext *ctx, RWContext *rw, + H265RawPPS *current) +{ + int err, i, index; + + flag(poc_reset_info_present_flag); + flag(pps_infer_scaling_list_flag); + if (current->pps_infer_scaling_list_flag) + ub(6, pps_scaling_list_ref_layer_id); + ue(num_ref_loc_offsets, 0, HEVC_MAX_LAYERS); + + for (i=0; inum_ref_loc_offsets; i++) { + ub(6, ref_loc_offset_layer_id[i]); + index = current->ref_loc_offset_layer_id[i]; + + flag(scaled_ref_layer_offset_present_flag[i]); + if (current->scaled_ref_layer_offset_present_flag[i]) { + se(scaled_ref_layer_left_offset[index], -16383, +16384); + se(scaled_ref_layer_top_offset[index], -16383, +16384); + se(scaled_ref_layer_right_offset[index], -16383, +16384); + se(scaled_ref_layer_bottom_offset[index], -16383, +16384); + } + + flag(ref_region_offset_present_flag[i]); + if (current->ref_region_offset_present_flag[i]) { + se(ref_region_left_offset[index], -16383, +16384); + se(ref_region_top_offset[index], -16383, +16384); + se(ref_region_right_offset[index], -16383, +16384); + se(ref_region_bottom_offset[index], -16383, +16384); + } + + flag(resample_phase_set_present_flag[i]); + if (current->resample_phase_set_present_flag[i]) { + ue(phase_hor_luma[index], 0, 31); + ue(phase_ver_luma[index], 0, 31); + ue(phase_hor_chroma_plus8[index], 0, 63); + ue(phase_ver_chroma_plus8[index], 0, 63); + } + } + + flag(colour_mapping_enabled_flag); + if (current->colour_mapping_enabled_flag) + return AVERROR_PATCHWELCOME; + return 0; +} + static int FUNC(pps_scc_extension)(CodedBitstreamContext *ctx, RWContext *rw, H265RawPPS *current) { @@ -1153,7 +1199,7 @@ static int FUNC(pps)(CodedBitstreamContext *ctx, RWContext *rw, if (current->pps_range_extension_flag) CHECK(FUNC(pps_range_extension)(ctx, rw, current)); if (current->pps_multilayer_extension_flag) - return AVERROR_PATCHWELCOME; + CHECK(FUNC(pps_multilayer_extension)(ctx, rw, current)); if (current->pps_3d_extension_flag) return AVERROR_PATCHWELCOME; if (current->pps_scc_extension_flag) -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".