257#define CACHE_BUCKETS 53 
  285    const char *right_key = arg;
 
 
  379    if (!strcmp(
name, 
"codec2")) {
 
  381    } 
else if (!strcmp(
name, 
"g723")) {
 
  383    } 
else if (!strcmp(
name, 
"ulaw")) {
 
  385    } 
else if (!strcmp(
name, 
"alaw")) {
 
  387    } 
else if (!strcmp(
name, 
"gsm")) {
 
  389    } 
else if (!strcmp(
name, 
"g726")) {
 
  391    } 
else if (!strcmp(
name, 
"g726aal2")) {
 
  393    } 
else if (!strcmp(
name, 
"adpcm")) {
 
  395    } 
else if (!strcmp(
name, 
"slin")) {
 
  397    } 
else if (!strcmp(
name, 
"slin12")) {
 
  399    } 
else if (!strcmp(
name, 
"slin16")) {
 
  401    } 
else if (!strcmp(
name, 
"slin24")) {
 
  403    } 
else if (!strcmp(
name, 
"slin32")) {
 
  405    } 
else if (!strcmp(
name, 
"slin44")) {
 
  407    } 
else if (!strcmp(
name, 
"slin48")) {
 
  409    } 
else if (!strcmp(
name, 
"slin96")) {
 
  411    } 
else if (!strcmp(
name, 
"slin192")) {
 
  413    } 
else if (!strcmp(
name, 
"lpc10")) {
 
  415    } 
else if (!strcmp(
name, 
"g729")) {
 
  417    } 
else if (!strcmp(
name, 
"speex")) {
 
  419    } 
else if (!strcmp(
name, 
"speex16")) {
 
  421    } 
else if (!strcmp(
name, 
"speex32")) {
 
  423    } 
else if (!strcmp(
name, 
"ilbc")) {
 
  425    } 
else if (!strcmp(
name, 
"g722")) {
 
  427    } 
else if (!strcmp(
name, 
"siren7")) {
 
  429    } 
else if (!strcmp(
name, 
"siren14")) {
 
  431    } 
else if (!strcmp(
name, 
"g719")) {
 
  433    } 
else if (!strcmp(
name, 
"opus")) {
 
  435    } 
else if (!strcmp(
name, 
"jpeg")) {
 
  437    } 
else if (!strcmp(
name, 
"png")) {
 
  439    } 
else if (!strcmp(
name, 
"h261")) {
 
  441    } 
else if (!strcmp(
name, 
"h263")) {
 
  443    } 
else if (!strcmp(
name, 
"h263p")) {
 
  445    } 
else if (!strcmp(
name, 
"h264")) {
 
  447    } 
else if (!strcmp(
name, 
"h265")) {
 
  449    } 
else if (!strcmp(
name, 
"mpeg4")) {
 
  451    } 
else if (!strcmp(
name, 
"vp8")) {
 
  453    } 
else if (!strcmp(
name, 
"vp9")) {
 
  455    } 
else if (!strcmp(
name, 
"red")) {
 
  457    } 
else if (!strcmp(
name, 
"t140")) {
 
  459    } 
else if (!strcmp(
name, 
"t38")) {
 
  461    } 
else if (!strcmp(
name, 
"none")) {
 
  463    } 
else if (!strcmp(
name, 
"silk8")) {
 
  465    } 
else if (!strcmp(
name, 
"silk12")) {
 
  467    } 
else if (!strcmp(
name, 
"silk16")) {
 
  469    } 
else if (!strcmp(
name, 
"silk24")) {
 
 
  493    ast_verb(5, 
"%s cached format with name '%s'\n",
 
  494        old_format ? 
"Updated" : 
"Created",
 
 
  503    const char *tag, 
const char *file, 
int line, 
const char *func)
 
 
  514    if (rate >= 192000) {
 
  516    } 
else if (rate >= 96000) {
 
  518    } 
else if (rate >= 48000) {
 
  520    } 
else if (rate >= 44100) {
 
  522    } 
else if (rate >= 32000) {
 
  524    } 
else if (rate >= 24000) {
 
  526    } 
else if (rate >= 16000) {
 
  528    } 
else if (rate >= 12000) {
 
 
  560        if (codec == candidate) {
 
 
Asterisk main include file. File version handling, generic pbx functions.
int ast_register_cleanup(void(*func)(void))
Register a function to be executed before Asterisk gracefully exits.
#define ao2_iterator_next(iter)
@ AO2_ALLOC_OPT_LOCK_RWLOCK
#define ao2_unlink_flags(container, obj, flags)
Remove an object from a container.
#define ao2_link_flags(container, obj, flags)
Add an object to a container.
#define ao2_find(container, arg, flags)
struct ao2_iterator ao2_iterator_init(struct ao2_container *c, int flags) attribute_warn_unused_result
Create an iterator for a container.
void * __ao2_find(struct ao2_container *c, const void *arg, enum search_flags flags, const char *tag, const char *file, int line, const char *func)
#define ao2_replace(dst, src)
Replace one object reference with another cleaning up the original.
#define ao2_ref(o, delta)
Reference/unreference an object and return the old refcount.
void ao2_iterator_destroy(struct ao2_iterator *iter)
Destroy a container iterator.
@ OBJ_SEARCH_PARTIAL_KEY
The arg parameter is a partial search key similar to OBJ_SEARCH_KEY.
@ OBJ_SEARCH_OBJECT
The arg parameter is an object of the same type.
@ OBJ_NOLOCK
Assume that the ao2_container is already locked.
@ OBJ_SEARCH_MASK
Search option field mask.
@ OBJ_SEARCH_KEY
The arg parameter is a search key, but is not an object.
#define ao2_container_alloc_hash(ao2_options, container_options, n_buckets, hash_fn, sort_fn, cmp_fn)
Allocate and initialize a hash container with the desired number of buckets.
Support for logging to various files, console and syslog Configuration in file logger....
#define ast_verb(level,...)
#define SCOPED_AO2WRLOCK(varname, obj)
scoped lock specialization for ao2 write locks.
String manipulation functions.
static force_inline int attribute_pure ast_strlen_zero(const char *s)
static force_inline int attribute_pure ast_str_case_hash(const char *str)
Compute a hash value on a case-insensitive string.
When we need to walk through a container, we use an ao2_iterator to keep track of the current positio...
Represents a media codec within Asterisk.