From f8dcf15ed2e32b3abf6be772aca0dfdab9e21a13 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Mon, 22 Jul 2024 10:18:15 +0200 Subject: [PATCH] gallium: Add header_flags to pipe_h2645_enc_picture_desc Indicates what headers should be inserted. Move pipe_h265_enc_picture_desc metadata_flags into header_flags Reviewed-by: Ruijing Dong Part-of: --- src/gallium/drivers/radeonsi/radeon_vcn_enc.c | 6 +++--- src/gallium/frontends/va/picture.c | 2 +- src/gallium/frontends/va/picture_hevc_enc.c | 4 ++-- src/gallium/include/pipe/p_video_state.h | 15 ++++++++++++++- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c index 9833af8698b..adbd5932dfd 100644 --- a/src/gallium/drivers/radeonsi/radeon_vcn_enc.c +++ b/src/gallium/drivers/radeonsi/radeon_vcn_enc.c @@ -689,12 +689,12 @@ static void radeon_vcn_enc_hevc_get_metadata(struct radeon_encoder *enc, { memset (&enc->enc_pic.enc_sei, 0, sizeof(rvcn_enc_seidata_t)); - if (!pic->metadata_flags.value) { + if (!pic->header_flags.value) { enc->enc_pic.enc_sei.flags.value = 0; return; } - if (pic->metadata_flags.hdr_cll) { + if (pic->header_flags.hdr_cll) { enc->enc_pic.enc_sei.flags.hdr_cll = 1; enc->enc_pic.enc_sei.hdr_cll = (rvcn_enc_sei_hdr_cll_t) { .max_cll = pic->metadata_hdr_cll.max_cll, @@ -702,7 +702,7 @@ static void radeon_vcn_enc_hevc_get_metadata(struct radeon_encoder *enc, }; } - if (pic->metadata_flags.hdr_mdcv) { + if (pic->header_flags.hdr_mdcv) { enc->enc_pic.enc_sei.flags.hdr_mdcv = 1; for (int32_t i = 0; i < 3; i++) { enc->enc_pic.enc_sei.hdr_mdcv.primary_chromaticity_x[i] diff --git a/src/gallium/frontends/va/picture.c b/src/gallium/frontends/va/picture.c index b77d46276d9..6951a88ec5d 100644 --- a/src/gallium/frontends/va/picture.c +++ b/src/gallium/frontends/va/picture.c @@ -148,7 +148,7 @@ vlVaBeginPicture(VADriverContextP ctx, VAContextID context_id, VASurfaceID rende context->desc.av1enc.metadata_flags.value = 0; break; case PIPE_VIDEO_FORMAT_HEVC: - context->desc.h265enc.metadata_flags.value = 0; + context->desc.h265enc.header_flags.value = 0; break; case PIPE_VIDEO_FORMAT_MPEG4_AVC: default: diff --git a/src/gallium/frontends/va/picture_hevc_enc.c b/src/gallium/frontends/va/picture_hevc_enc.c index 60bcd69b489..1256dd1f7a3 100644 --- a/src/gallium/frontends/va/picture_hevc_enc.c +++ b/src/gallium/frontends/va/picture_hevc_enc.c @@ -690,7 +690,7 @@ static void parseEncSeiPayloadH265(vlVaContext *context, struct vl_rbsp *rbsp, i { switch (payloadType) { case MASTERING_DISPLAY_COLOUR_VOLUME: - context->desc.h265enc.metadata_flags.hdr_mdcv = 1; + context->desc.h265enc.header_flags.hdr_mdcv = 1; for (int32_t i = 0; i < 3; i++) { context->desc.h265enc.metadata_hdr_mdcv.primary_chromaticity_x[i] = vl_rbsp_u(rbsp, 16); context->desc.h265enc.metadata_hdr_mdcv.primary_chromaticity_y[i] = vl_rbsp_u(rbsp, 16); @@ -701,7 +701,7 @@ static void parseEncSeiPayloadH265(vlVaContext *context, struct vl_rbsp *rbsp, i context->desc.h265enc.metadata_hdr_mdcv.luminance_min = vl_rbsp_u(rbsp, 32); break; case CONTENT_LIGHT_LEVEL_INFO: - context->desc.h265enc.metadata_flags.hdr_cll = 1; + context->desc.h265enc.header_flags.hdr_cll = 1; context->desc.h265enc.metadata_hdr_cll.max_cll= vl_rbsp_u(rbsp, 16); context->desc.h265enc.metadata_hdr_cll.max_fall= vl_rbsp_u(rbsp, 16); break; diff --git a/src/gallium/include/pipe/p_video_state.h b/src/gallium/include/pipe/p_video_state.h index b70332e6437..b83943cc482 100644 --- a/src/gallium/include/pipe/p_video_state.h +++ b/src/gallium/include/pipe/p_video_state.h @@ -689,6 +689,15 @@ struct pipe_h264_enc_picture_desc bool insert_aud_nalu; enum pipe_video_feedback_metadata_type requested_metadata; bool renew_headers_on_idr; + + union { + struct { + uint32_t sps:1; + uint32_t pps:1; + uint32_t aud:1; + }; + uint32_t value; + } header_flags; }; struct pipe_h265_st_ref_pic_set @@ -892,11 +901,15 @@ struct pipe_h265_enc_picture_desc union { struct { + uint32_t vps:1; + uint32_t sps:1; + uint32_t pps:1; + uint32_t aud:1; uint32_t hdr_cll:1; uint32_t hdr_mdcv:1; }; uint32_t value; - } metadata_flags; + } header_flags; struct pipe_enc_hdr_cll metadata_hdr_cll; struct pipe_enc_hdr_mdcv metadata_hdr_mdcv;