60static uint32_t
get4Bytes(
const unsigned char *ptr) {
61 return (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3];
71 const unsigned char *
const stop =
start +
len;
72 while (stop -
start >= 4) {
74 if (next4Bytes == 0x00000001) {
75 return start + (with_start_code ? 0 : 4);
77 if ((next4Bytes & 0xFFFFFF00) == 0x00000100) {
78 return start + (with_start_code ? 0 : 3);
81 if ((
unsigned) (next4Bytes & 0xFF) > 1) {
102 const unsigned char **endptr)
105 if (endptr == NULL) {
120 const unsigned char *nal = src;
140 return "H264 non-IDR";
166 return "RTP MTAP 16";
168 return "RTP MTAP 24";
174 _Thread_local
static char buf[32];
175 snprintf(buf,
sizeof buf,
"(NALU %d)",
type);
#define debug_msg(...)
#define debug_msg(...) log_msg(LOG_LEVEL_DEBUG, "[pid/%d +%d %s] ", getpid(), LINE,...
aux_nal_types
NAL values >23 are invalid in H.264 codestream but used by RTP.
#define NALU_HDR_GET_TYPE(nal, is_hevc)
const char * get_nalu_name(int type)
const unsigned char * rtpenc_get_next_nal(const unsigned char *start, long len, const unsigned char **endptr)
const unsigned char * rtpenc_get_first_nal(const unsigned char *src, long src_len, bool hevc)
static uint32_t get4Bytes(const unsigned char *ptr)
static const unsigned char * get_next_nal(const unsigned char *start, long len, _Bool with_start_code)