40#define H264_ATTR_KEY_UNSET UINT8_MAX
45#define H264_MAX_SPS_PPS_SIZE 16
49#define H264_MAX_SPS_PPS_SIZE_SCAN_LIMIT "15"
114#define DETERMINE_JOINT(joint, attr1, attr2, field) (joint->field = (attr1 && attr1->field) ? attr1->field : (attr2 && attr2->field) ? attr2->field : 0)
183 while ((attrib =
strsep(&attribs,
";"))) {
185 unsigned long int val2;
189 if (sscanf(attrib,
"profile-level-id=%lx", &val2) == 1) {
192 attr->
LEVEL = (val2 & 0xFF);
195 }
else if (sscanf(attrib,
"max-mbps=%30u", &
val) == 1) {
197 }
else if (sscanf(attrib,
"max-fs=%30u", &
val) == 1) {
199 }
else if (sscanf(attrib,
"max-cpb=%30u", &
val) == 1) {
201 }
else if (sscanf(attrib,
"max-dpb=%30u", &
val) == 1) {
203 }
else if (sscanf(attrib,
"max-br=%30u", &
val) == 1) {
205 }
else if (sscanf(attrib,
"max-smbps=%30u", &
val) == 1) {
207 }
else if (sscanf(attrib,
"max-fps=%30u", &
val) == 1) {
209 }
else if (sscanf(attrib,
"redundant-pic-cap=%30u", &
val) == 1) {
211 }
else if (sscanf(attrib,
"parameter-add=%30u", &
val) == 1) {
213 }
else if (sscanf(attrib,
"packetization-mode=%30u", &
val) == 1) {
215 }
else if (sscanf(attrib,
"sprop-interleaving-depth=%30u", &
val) == 1) {
217 }
else if (sscanf(attrib,
"sprop-deint-buf-req=%30u", &
val) == 1) {
219 }
else if (sscanf(attrib,
"deint-buf-cap=%30u", &
val) == 1) {
221 }
else if (sscanf(attrib,
"sprop-init-buf-time=%30u", &
val) == 1) {
223 }
else if (sscanf(attrib,
"sprop-max-don-diff=%30u", &
val) == 1) {
225 }
else if (sscanf(attrib,
"max-rcmd-nalu-size=%30u", &
val) == 1) {
227 }
else if (sscanf(attrib,
"level-asymmetry-allowed=%30u", &
val) == 1) {
235#define APPEND_IF_NOT_H264_UNSET(field, str, name) do { \
236 if (field != H264_ATTR_KEY_UNSET) { \
238 ast_str_append(str, 0, ";"); \
239 } else if (0 < ast_str_append(str, 0, "a=fmtp:%u ", payload)) { \
242 ast_str_append(str, 0, "%s=%u", name, field); \
246#define APPEND_IF_NONZERO(field, str, name) do { \
249 ast_str_append(str, 0, ";"); \
250 } else if (0 < ast_str_append(str, 0, "a=fmtp:%u ", payload)) { \
253 ast_str_append(str, 0, "%s=%u", name, field); \
Asterisk main include file. File version handling, generic pbx functions.
#define ast_strdupa(s)
duplicate a string in memory from the stack
#define ast_calloc(num, len)
A wrapper for calloc()
char * strsep(char **str, const char *delims)
Asterisk module definitions.
#define AST_MODULE_INFO(keystr, flags_to_set, desc, fields...)
@ AST_MODULE_SUPPORT_CORE
#define ASTERISK_GPL_KEY
The text the key() function should return.
@ AST_MODULE_LOAD_SUCCESS
@ AST_MODULE_LOAD_DECLINE
Module has failed to load, may be in an inconsistent state.
int ast_str_append(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Append to a thread local dynamic string.
static force_inline int attribute_pure ast_strlen_zero(const char *s)
void ast_copy_string(char *dst, const char *src, size_t size)
Size-limited null-terminating string copy.
char * ast_strip(char *s)
Strip leading/trailing whitespace from a string.
Support for dynamic strings.
unsigned int MAX_RCMD_NALU_SIZE
unsigned int SPROP_INTERLEAVING_DEPTH
unsigned int SPROP_DEINT_BUF_REQ
unsigned int LEVEL_ASYMMETRY_ALLOWED
unsigned int REDUNDANT_PIC_CAP
unsigned int DEINT_BUF_CAP
unsigned int PACKETIZATION_MODE
char SPS[H264_MAX_SPS_PPS_SIZE]
unsigned int PARAMETER_ADD
char PPS[H264_MAX_SPS_PPS_SIZE]
unsigned int SPROP_INIT_BUF_TIME
unsigned int SPROP_MAX_DON_DIFF