pipe: Add pipe_h264_nal_unit_type and pipe_h265_nal_unit_type enums

This will also be useful for drivers.

Reviewed-By: Sil Vilerino <sivileri@microsoft.com>
Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30927>
This commit is contained in:
David Rosca 2024-08-23 11:47:55 +02:00 committed by Marge Bot
parent 6bf7b5bcd8
commit 20f9418478
3 changed files with 47 additions and 45 deletions

View file

@ -31,14 +31,6 @@
#include "util/vl_rbsp.h"
enum H264NALUnitType {
H264_NAL_SLICE = 1,
H264_NAL_IDR_SLICE = 5,
H264_NAL_SPS = 7,
H264_NAL_PPS = 8,
H264_NAL_AUD = 9,
};
VAStatus
vlVaHandleVAEncPictureParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf)
{
@ -511,7 +503,7 @@ static void parseEncSliceParamsH264(vlVaContext *context,
}
if (nal_ref_idc != 0) {
if (nal_unit_type == H264_NAL_IDR_SLICE) {
if (nal_unit_type == PIPE_H264_NAL_IDR_SLICE) {
slice->no_output_of_prior_pics_flag = vl_rbsp_u(rbsp, 1);
slice->long_term_reference_flag = vl_rbsp_u(rbsp, 1);
} else {
@ -793,19 +785,19 @@ vlVaHandleVAEncPackedHeaderDataBufferTypeH264(vlVaContext *context, vlVaBuffer *
vl_rbsp_init(&rbsp, &vlc, ~0, context->packed_header_emulation_bytes);
switch (nal_unit_type) {
case H264_NAL_SLICE:
case H264_NAL_IDR_SLICE:
case PIPE_H264_NAL_SLICE:
case PIPE_H264_NAL_IDR_SLICE:
parseEncSliceParamsH264(context, &rbsp, nal_ref_idc, nal_unit_type);
break;
case H264_NAL_SPS:
case PIPE_H264_NAL_SPS:
parseEncSpsParamsH264(context, &rbsp);
context->desc.h264enc.header_flags.sps = 1;
break;
case H264_NAL_PPS:
case PIPE_H264_NAL_PPS:
parseEncPpsParamsH264(context, &rbsp);
context->desc.h264enc.header_flags.pps = 1;
break;
case H264_NAL_AUD:
case PIPE_H264_NAL_AUD:
context->desc.h264enc.header_flags.aud = 1;
break;
default:

View file

@ -31,23 +31,6 @@
#include "util/vl_rbsp.h"
enum HEVCNALUnitType {
HEVC_NAL_TRAIL_N = 0,
HEVC_NAL_TRAIL_R = 1,
HEVC_NAL_TSA_N = 2,
HEVC_NAL_TSA_R = 3,
HEVC_NAL_BLA_W_LP = 16,
HEVC_NAL_IDR_W_RADL = 19,
HEVC_NAL_IDR_N_LP = 20,
HEVC_NAL_CRA_NUT = 21,
HEVC_NAL_RSV_IRAP_VCL23 = 23,
HEVC_NAL_VPS = 32,
HEVC_NAL_SPS = 33,
HEVC_NAL_PPS = 34,
HEVC_NAL_AUD = 35,
HEVC_NAL_PREFIX_SEI = 39,
};
enum HEVCSEIPayloadType {
MASTERING_DISPLAY_COLOUR_VOLUME = 137,
CONTENT_LIGHT_LEVEL_INFO = 144,
@ -655,7 +638,7 @@ static void parseEncSliceParamsH265(vlVaContext *context,
pic->nal_unit_type = nal_unit_type;
pic->temporal_id = temporal_id;
if (nal_unit_type >= HEVC_NAL_BLA_W_LP && nal_unit_type <= HEVC_NAL_RSV_IRAP_VCL23)
if (nal_unit_type >= PIPE_H265_NAL_BLA_W_LP && nal_unit_type <= PIPE_H265_NAL_RSV_IRAP_VCL23)
slice->no_output_of_prior_pics_flag = vl_rbsp_u(rbsp, 1);
vl_rbsp_ue(rbsp); /* slice_pic_parameter_set_id */
@ -671,7 +654,7 @@ static void parseEncSliceParamsH265(vlVaContext *context,
if (pic->output_flag_present_flag)
slice->pic_output_flag = vl_rbsp_u(rbsp, 1);
if (nal_unit_type != HEVC_NAL_IDR_W_RADL && nal_unit_type != HEVC_NAL_IDR_N_LP) {
if (nal_unit_type != PIPE_H265_NAL_IDR_W_RADL && nal_unit_type != PIPE_H265_NAL_IDR_N_LP) {
slice->slice_pic_order_cnt_lsb = vl_rbsp_u(rbsp, seq->log2_max_pic_order_cnt_lsb_minus4 + 4);
slice->short_term_ref_pic_set_sps_flag = vl_rbsp_u(rbsp, 1);
if (!slice->short_term_ref_pic_set_sps_flag) {
@ -1092,31 +1075,31 @@ vlVaHandleVAEncPackedHeaderDataBufferTypeHEVC(vlVaContext *context, vlVaBuffer *
vl_rbsp_init(&rbsp, &vlc, ~0, context->packed_header_emulation_bytes);
switch (nal_unit_type) {
case HEVC_NAL_TRAIL_N:
case HEVC_NAL_TRAIL_R:
case HEVC_NAL_TSA_N:
case HEVC_NAL_TSA_R:
case HEVC_NAL_IDR_W_RADL:
case HEVC_NAL_IDR_N_LP:
case HEVC_NAL_CRA_NUT:
case PIPE_H265_NAL_TRAIL_N:
case PIPE_H265_NAL_TRAIL_R:
case PIPE_H265_NAL_TSA_N:
case PIPE_H265_NAL_TSA_R:
case PIPE_H265_NAL_IDR_W_RADL:
case PIPE_H265_NAL_IDR_N_LP:
case PIPE_H265_NAL_CRA_NUT:
parseEncSliceParamsH265(context, &rbsp, nal_unit_type, temporal_id);
break;
case HEVC_NAL_VPS:
case PIPE_H265_NAL_VPS:
parseEncVpsParamsH265(context, &rbsp);
context->desc.h265enc.header_flags.vps = 1;
break;
case HEVC_NAL_SPS:
case PIPE_H265_NAL_SPS:
parseEncSpsParamsH265(context, &rbsp);
context->desc.h265enc.header_flags.sps = 1;
break;
case HEVC_NAL_PPS:
case PIPE_H265_NAL_PPS:
parseEncPpsParamsH265(context, &rbsp);
context->desc.h265enc.header_flags.pps = 1;
break;
case HEVC_NAL_AUD:
case PIPE_H265_NAL_AUD:
context->desc.h265enc.header_flags.aud = 1;
break;
case HEVC_NAL_PREFIX_SEI:
case PIPE_H265_NAL_PREFIX_SEI:
parseEncSeiH265(context, &rbsp);
break;
default:

View file

@ -126,6 +126,15 @@ enum pipe_mpeg12_field_select
PIPE_MPEG12_FS_SECOND_BACKWARD = 0x08
};
enum pipe_h264_nal_unit_type
{
PIPE_H264_NAL_SLICE = 1,
PIPE_H264_NAL_IDR_SLICE= 5,
PIPE_H264_NAL_SPS = 7,
PIPE_H264_NAL_PPS = 8,
PIPE_H264_NAL_AUD = 9,
};
enum pipe_h264_slice_type
{
PIPE_H264_SLICE_TYPE_P = 0x0,
@ -135,6 +144,24 @@ enum pipe_h264_slice_type
PIPE_H264_SLICE_TYPE_SI = 0x4
};
enum pipe_h265_nal_unit_type
{
PIPE_H265_NAL_TRAIL_N = 0,
PIPE_H265_NAL_TRAIL_R = 1,
PIPE_H265_NAL_TSA_N = 2,
PIPE_H265_NAL_TSA_R = 3,
PIPE_H265_NAL_BLA_W_LP = 16,
PIPE_H265_NAL_IDR_W_RADL = 19,
PIPE_H265_NAL_IDR_N_LP = 20,
PIPE_H265_NAL_CRA_NUT = 21,
PIPE_H265_NAL_RSV_IRAP_VCL23 = 23,
PIPE_H265_NAL_VPS = 32,
PIPE_H265_NAL_SPS = 33,
PIPE_H265_NAL_PPS = 34,
PIPE_H265_NAL_AUD = 35,
PIPE_H265_NAL_PREFIX_SEI = 39,
};
enum pipe_h265_slice_type
{
/* Values match Table 7-7 in HEVC spec