|
|
|
@ -28,6 +28,7 @@ |
|
|
|
|
|
|
|
|
|
#include "bytestream.h" |
|
|
|
|
#include "hevc.h" |
|
|
|
|
#include "h264.h" |
|
|
|
|
#include "h2645_parse.h" |
|
|
|
|
|
|
|
|
|
int ff_h2645_extract_rbsp(const uint8_t *src, int length, |
|
|
|
@ -218,6 +219,47 @@ static const char *hevc_nal_unit_name(int nal_type) |
|
|
|
|
return hevc_nal_type_name[nal_type]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const char *h264_nal_type_name[32] = { |
|
|
|
|
"Unspecified 0", //H264_NAL_UNSPECIFIED
|
|
|
|
|
"Coded slice of a non-IDR picture", // H264_NAL_SLICE
|
|
|
|
|
"Coded slice data partition A", // H264_NAL_DPA
|
|
|
|
|
"Coded slice data partition B", // H264_NAL_DPB
|
|
|
|
|
"Coded slice data partition C", // H264_NAL_DPC
|
|
|
|
|
"IDR", // H264_NAL_IDR_SLICE
|
|
|
|
|
"SEI", // H264_NAL_SEI
|
|
|
|
|
"SPS", // H264_NAL_SPS
|
|
|
|
|
"PPS", // H264_NAL_PPS
|
|
|
|
|
"AUD", // H264_NAL_AUD
|
|
|
|
|
"End of sequence", // H264_NAL_END_SEQUENCE
|
|
|
|
|
"End of stream", // H264_NAL_END_STREAM
|
|
|
|
|
"Filler data", // H264_NAL_FILLER_DATA
|
|
|
|
|
"SPS extension", // H264_NAL_SPS_EXT
|
|
|
|
|
"Prefix", // H264_NAL_PREFIX
|
|
|
|
|
"Subset SPS", // H264_NAL_SUB_SPS
|
|
|
|
|
"Depth parameter set", // H264_NAL_DPS
|
|
|
|
|
"Reserved 17", // H264_NAL_RESERVED17
|
|
|
|
|
"Reserved 18", // H264_NAL_RESERVED18
|
|
|
|
|
"Auxiliary coded picture without partitioning", // H264_NAL_AUXILIARY_SLICE
|
|
|
|
|
"Slice extension", // H264_NAL_EXTEN_SLICE
|
|
|
|
|
"Slice extension for a depth view or a 3D-AVC texture view", // H264_NAL_DEPTH_EXTEN_SLICE
|
|
|
|
|
"Reserved 22", // H264_NAL_RESERVED22
|
|
|
|
|
"Reserved 23", // H264_NAL_RESERVED23
|
|
|
|
|
"Unspecified 24", // H264_NAL_UNSPECIFIED24
|
|
|
|
|
"Unspecified 25", // H264_NAL_UNSPECIFIED25
|
|
|
|
|
"Unspecified 26", // H264_NAL_UNSPECIFIED26
|
|
|
|
|
"Unspecified 27", // H264_NAL_UNSPECIFIED27
|
|
|
|
|
"Unspecified 28", // H264_NAL_UNSPECIFIED28
|
|
|
|
|
"Unspecified 29", // H264_NAL_UNSPECIFIED29
|
|
|
|
|
"Unspecified 30", // H264_NAL_UNSPECIFIED30
|
|
|
|
|
"Unspecified 31", // H264_NAL_UNSPECIFIED31
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static const char *h264_nal_unit_name(int nal_type) |
|
|
|
|
{ |
|
|
|
|
av_assert0(nal_type >= 0 && nal_type < 32); |
|
|
|
|
return h264_nal_type_name[nal_type]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int get_bit_length(H2645NAL *nal, int skip_trailing_zeros) |
|
|
|
|
{ |
|
|
|
|
int size = nal->size; |
|
|
|
@ -280,8 +322,8 @@ static int h264_parse_nal_header(H2645NAL *nal, void *logctx) |
|
|
|
|
nal->type = get_bits(gb, 5); |
|
|
|
|
|
|
|
|
|
av_log(logctx, AV_LOG_DEBUG, |
|
|
|
|
"nal_unit_type: %d, nal_ref_idc: %d\n", |
|
|
|
|
nal->type, nal->ref_idc); |
|
|
|
|
"nal_unit_type: %d(%s), nal_ref_idc: %d\n", |
|
|
|
|
nal->type, h264_nal_unit_name(nal->type), nal->ref_idc); |
|
|
|
|
|
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|