Asterisk - The Open Source Telephony Project GIT-master-f36a736
Functions
sounds_index.h File Reference

Sound file format and description indexer. More...

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

struct ast_media_indexast_sounds_get_index (void)
 Get the sounds index. More...
 
struct ast_media_indexast_sounds_get_index_for_file (const char *filename)
 Get the index for a specific sound file. More...
 

Detailed Description

Sound file format and description indexer.

Definition in file sounds_index.h.

Function Documentation

◆ ast_sounds_get_index()

struct ast_media_index * ast_sounds_get_index ( void  )

Get the sounds index.

Return values
soundsindex (must be ao2_cleanup()'ed)
NULLon failure

Definition at line 308 of file sounds.c.

309{
311}
#define NULL
Definition: resample.c:96
struct ast_media_index * ast_sounds_get_index_for_file(const char *filename)
Get the index for a specific sound file.
Definition: sounds.c:313

References ast_sounds_get_index_for_file(), and NULL.

Referenced by ast_ari_sounds_list(), handle_cli_sound_show(), and handle_cli_sounds_show().

◆ ast_sounds_get_index_for_file()

struct ast_media_index * ast_sounds_get_index_for_file ( const char *  filename)

Get the index for a specific sound file.

Since
13.25.0
16.2.0
Parameters
filenameSound file name without extension
Return values
soundsindex (must be ao2_cleanup()'ed)
NULLon failure

Definition at line 313 of file sounds.c.

314{
315 struct ast_str *sounds_dir = ast_str_create(64);
316 struct ao2_container *languages;
317 char *failed_index;
318 struct ast_media_index *new_index;
319
320 if (!sounds_dir) {
321 return NULL;
322 }
323
324 ast_str_set(&sounds_dir, 0, "%s/sounds", ast_config_AST_DATA_DIR);
325 new_index = ast_media_index_create(ast_str_buffer(sounds_dir));
326 ast_free(sounds_dir);
327 if (!new_index) {
328 return NULL;
329 }
330
331 languages = get_languages();
332 if (!languages) {
333 ao2_ref(new_index, -1);
334 return NULL;
335 }
336
337 failed_index = ao2_callback_data(languages, 0, update_index_cb, new_index, (void *)filename);
338 ao2_ref(languages, -1);
339 if (failed_index) {
340 ao2_ref(failed_index, -1);
341 ao2_ref(new_index, -1);
342 new_index = NULL;
343 }
344
345 return new_index;
346}
#define ast_free(a)
Definition: astmm.h:180
#define ao2_callback_data(container, flags, cb_fn, arg, data)
Definition: astobj2.h:1723
#define ao2_ref(o, delta)
Reference/unreference an object and return the old refcount.
Definition: astobj2.h:459
struct ast_media_index * ast_media_index_create(const char *base_dir)
Creates a new media index.
Definition: media_index.c:162
const char * ast_config_AST_DATA_DIR
Definition: options.c:158
static struct ao2_container * get_languages(void)
Get the languages in which sound files are available.
Definition: sounds.c:49
static int update_index_cb(void *obj, void *arg, void *data, int flags)
Callback to process an individual language directory or subdirectory.
Definition: sounds.c:295
char * ast_str_buffer(const struct ast_str *buf)
Returns the string buffer within the ast_str buf.
Definition: strings.h:761
#define ast_str_create(init_len)
Create a malloc'ed dynamic length string.
Definition: strings.h:659
int ast_str_set(struct ast_str **buf, ssize_t max_len, const char *fmt,...)
Set a dynamic string using variable arguments.
Definition: strings.h:1113
Generic container type.
Support for dynamic strings.
Definition: strings.h:623

References ao2_callback_data, ao2_ref, ast_config_AST_DATA_DIR, ast_free, ast_media_index_create(), ast_str_buffer(), ast_str_create, ast_str_set(), get_languages(), NULL, and update_index_cb().

Referenced by ast_ari_sounds_get(), ast_sounds_get_index(), and handle_cli_sound_show().