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 <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30585>
This commit is contained in:
David Rosca 2024-07-22 10:18:15 +02:00 committed by Marge Bot
parent a43f18dd04
commit f8dcf15ed2
4 changed files with 20 additions and 7 deletions

View file

@ -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]

View file

@ -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:

View file

@ -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;

View file

@ -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;