一、H264 NAL类型定义
enum H264_NAL_TYP
{
H264_NAL_UNKNOWN = 0, // 未使用
H264_NAL_SLICE = 1, // 不分区、非 IDR 图像的片(片的头信息和数据)
H264_NAL_SLICE_DPA = 2, // 片分区 A
H264_NAL_SLICE_DPB = 3, // 片分区 B
H264_NAL_SLICE_DPC = 4, // 片分区 C
H264_NAL_SLICE_IDR = 5, // IDR 图像中的片
H264_NAL_SEI = 6,// 补充增强信息单元
//参数集是 H.264 标准的一个新概念,是一种通过改进视频码流结构增强错误恢复能力的方法。
H264_NAL_SPS = 7, // 序列参数集 (包括一个图像序列的所有信息,即两个 IDR 图像间的所有图像信息,如图像尺寸、视频格式等)
H264_NAL_PPS = 8, // 图像参数集 (包括一个图像的所有分片的所有相关信息, 包括图像类型、序列号等,解码时某些序列号的丢失可用来检验信息包的丢失与否)
H264_NAL_AUD = 9, // 分界符
H264_NAL_SEQ_END = 10,//序列结束(表明下一图像为IDR图像)
H264_NAL_STREAM_END = 11,//码流结束(表明该流中已没有图像)
H264_NAL_FILLER = 12, // 填充(哑元数据,用于填充字节)
//13~23 //保留
//24~31 //未使用
};
二、H264 NAL计算方法
static H264_NAL_TYP ParseH264NalType(unsigned char code)
{
return H264_NAL_TYP(code & 0x1F);
}
三、HEVC NAL类型定义
enum HEVC_NAL_TYPE
{
HEVC_NAL_TRAIL_N = 0,
HEVC_NAL_TRAIL_R = 1, //P frame
HEVC_NAL_TSA_N = 2,
HEVC_NAL_TSA_R = 3,
HEVC_NAL_STSA_N = 4,
HEVC_NAL_STSA_R = 5,
HEVC_NAL_RADL_N = 6,
HEVC_NAL_RADL_R = 7,
HEVC_NAL_RASL_N = 8,
HEVC_NAL_RASL_R = 9,
HEVC_NAL_VCL_N10 = 10,
HEVC_NAL_VCL_R11 = 11,
HEVC_NAL_VCL_N12 = 12,
HEVC_NAL_VCL_R13 = 13,
HEVC_NAL_VCL_N14 = 14,
HEVC_NAL_VCL_R15 = 15,
HEVC_NAL_BLA_W_LP = 16,
HEVC_NAL_BLA_W_RADL = 17,
HEVC_NAL_BLA_N_LP = 18,
HEVC_NAL_IDR_W_RADL = 19, //IDR
HEVC_NAL_IDR_N_LP = 20,
HEVC_NAL_CRA_NUT = 21,
HEVC_NAL_IRAP_VCL22 = 22,
HEVC_NAL_IRAP_VCL23 = 23,
HEVC_NAL_RSV_VCL24 = 24,
HEVC_NAL_RSV_VCL25 = 25,
HEVC_NAL_RSV_VCL26 = 26,
HEVC_NAL_RSV_VCL27 = 27,
HEVC_NAL_RSV_VCL28 = 28,
HEVC_NAL_RSV_VCL29 = 29,
HEVC_NAL_RSV_VCL30 = 30,
HEVC_NAL_RSV_VCL31 = 31,
HEVC_NAL_VPS = 32, //VPS
HEVC_NAL_SPS = 33, //SPS
HEVC_NAL_PPS = 34, //PPS
HEVC_NAL_AUD = 35,
HEVC_NAL_EOS_NUT = 36,
HEVC_NAL_EOB_NUT = 37,
HEVC_NAL_FD_NUT = 38,
HEVC_NAL_SEI_PREFIX = 39, //SEI
HEVC_NAL_SEI_SUFFIX = 40,
};
四、HEVC NAL计算方法
static HEVC_NAL_TYPE ParseHevcNalType(unsigned char code)
{
return HEVC_NAL_TYPE((code & 0x7E) >> 1);
}