Asterisk - The Open Source Telephony Project  18.5.0
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.

References ast_sounds_get_index_for_file(), and NULL.

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

309 {
311 }
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
#define NULL
Definition: resample.c:96

◆ 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.

References ao2_callback_data, ao2_ref, ast_config_AST_DATA_DIR, ast_free, ast_media_index_create(), AST_MODFLAG_GLOBAL_SYMBOLS, AST_MODFLAG_LOAD_ORDER, AST_MODPRI_APP_DEPEND, AST_MODULE_INFO(), AST_MODULE_SUPPORT_CORE, ast_str_buffer(), ast_str_create, ast_str_set(), ASTERISK_GPL_KEY, get_languages(), load_module(), NULL, unload_module(), and update_index_cb().

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

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 }
char * ast_str_buffer(const struct ast_str *buf)
Returns the string buffer within the ast_str buf.
Definition: strings.h:714
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
#define NULL
Definition: resample.c:96
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:1065
static struct ao2_container * get_languages(void)
Get the languages in which sound files are available.
Definition: sounds.c:49
#define ao2_ref(o, delta)
Definition: astobj2.h:464
const char * ast_config_AST_DATA_DIR
Definition: options.c:158
The descriptor of a dynamic string XXX storage will be optimized later if needed We use the ts field ...
Definition: strings.h:584
#define ao2_callback_data(container, flags, cb_fn, arg, data)
Definition: astobj2.h:1743
struct ast_media_index * ast_media_index_create(const char *base_dir)
Creates a new media index.
Definition: media_index.c:162
#define ast_free(a)
Definition: astmm.h:182
Generic container type.
#define ast_str_create(init_len)
Create a malloc'ed dynamic length string.
Definition: strings.h:620