Header for providers of file and format handling routines. Clients of these routines should include "asterisk/file.h" instead. More...
#include "asterisk/file.h"
#include "asterisk/frame.h"
Go to the source code of this file.
Data Structures | |
struct | ast_filestream |
This structure is allocated by file.c in one chunk, together with buf_size and desc_size bytes of memory to be used for private purposes (e.g. buffers etc.). More... | |
struct | ast_format |
Each supported file format is described by the following structure. More... | |
Defines | |
#define | ast_format_register(f) __ast_format_register(f, ast_module_info->self) |
Functions | |
int | __ast_format_register (const struct ast_format *f, struct ast_module *mod) |
Register a new file format capability. Adds a format to Asterisk's format abilities. | |
int | ast_format_unregister (const char *name) |
Unregisters a file format. |
Header for providers of file and format handling routines. Clients of these routines should include "asterisk/file.h" instead.
Definition in file mod_format.h.
#define ast_format_register | ( | f | ) | __ast_format_register(f, ast_module_info->self) |
Definition at line 131 of file mod_format.h.
Referenced by load_module().
int __ast_format_register | ( | const struct ast_format * | f, | |
struct ast_module * | mod | |||
) |
Register a new file format capability. Adds a format to Asterisk's format abilities.
0 | on success | |
-1 | on failure |
Definition at line 67 of file file.c.
References ast_calloc, ast_log(), AST_RWLIST_INSERT_HEAD, AST_RWLIST_TRAVERSE, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, ast_verb, ast_format::buf_size, ast_format::exts, ast_format::list, LOG_WARNING, ast_format::module, and ast_format::name.
00068 { 00069 struct ast_format *tmp; 00070 00071 AST_RWLIST_WRLOCK(&formats); 00072 AST_RWLIST_TRAVERSE(&formats, tmp, list) { 00073 if (!strcasecmp(f->name, tmp->name)) { 00074 AST_RWLIST_UNLOCK(&formats); 00075 ast_log(LOG_WARNING, "Tried to register '%s' format, already registered\n", f->name); 00076 return -1; 00077 } 00078 } 00079 if (!(tmp = ast_calloc(1, sizeof(*tmp)))) { 00080 AST_RWLIST_UNLOCK(&formats); 00081 return -1; 00082 } 00083 *tmp = *f; 00084 tmp->module = mod; 00085 if (tmp->buf_size) { 00086 /* 00087 * Align buf_size properly, rounding up to the machine-specific 00088 * alignment for pointers. 00089 */ 00090 struct _test_align { void *a, *b; } p; 00091 int align = (char *)&p.b - (char *)&p.a; 00092 tmp->buf_size = ((f->buf_size + align - 1) / align) * align; 00093 } 00094 00095 memset(&tmp->list, 0, sizeof(tmp->list)); 00096 00097 AST_RWLIST_INSERT_HEAD(&formats, tmp, list); 00098 AST_RWLIST_UNLOCK(&formats); 00099 ast_verb(2, "Registered file format %s, extension(s) %s\n", f->name, f->exts); 00100 00101 return 0; 00102 }
int ast_format_unregister | ( | const char * | name | ) |
Unregisters a file format.
name | the name of the format you wish to unregister Unregisters a format based on the name of the format. |
0 | on success | |
-1 | on failure to unregister |
Definition at line 104 of file file.c.
References ast_free, ast_log(), AST_RWLIST_REMOVE_CURRENT, AST_RWLIST_TRAVERSE_SAFE_BEGIN, AST_RWLIST_TRAVERSE_SAFE_END, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, ast_verb, ast_format::list, LOG_WARNING, and ast_format::name.
Referenced by unload_module().
00105 { 00106 struct ast_format *tmp; 00107 int res = -1; 00108 00109 AST_RWLIST_WRLOCK(&formats); 00110 AST_RWLIST_TRAVERSE_SAFE_BEGIN(&formats, tmp, list) { 00111 if (!strcasecmp(name, tmp->name)) { 00112 AST_RWLIST_REMOVE_CURRENT(list); 00113 ast_free(tmp); 00114 res = 0; 00115 } 00116 } 00117 AST_RWLIST_TRAVERSE_SAFE_END; 00118 AST_RWLIST_UNLOCK(&formats); 00119 00120 if (!res) 00121 ast_verb(2, "Unregistered format %s\n", name); 00122 else 00123 ast_log(LOG_WARNING, "Tried to unregister format %s, already unregistered\n", name); 00124 00125 return res; 00126 }