Asterisk - The Open Source Telephony Project
18.5.0
|
Translate via the use of pseudo channels. More...
#include "asterisk.h"
#include <sys/time.h>
#include <sys/resource.h>
#include <math.h>
#include "asterisk/lock.h"
#include "asterisk/channel.h"
#include "asterisk/translate.h"
#include "asterisk/module.h"
#include "asterisk/frame.h"
#include "asterisk/sched.h"
#include "asterisk/cli.h"
#include "asterisk/term.h"
#include "asterisk/format.h"
#include "asterisk/linkedlists.h"
Go to the source code of this file.
Data Structures | |
struct | translator_path |
struct | translators |
the list of translators More... | |
Macros | |
#define | format_sample_rate_absdiff(fmt1, fmt2) |
#define | GROW_INDEX 16 |
#define | INIT_INDEX 32 |
#define | MAX_RECALC 1000 |
Functions | |
int | __ast_register_translator (struct ast_translator *t, struct ast_module *mod) |
register codec translator More... | |
static int | add_codec2index (struct ast_codec *codec) |
struct ast_frame * | ast_trans_frameout (struct ast_trans_pvt *pvt, int datalen, int samples) |
generic frameout routine. If samples and datalen are 0, take whatever is in pvt and reset them, otherwise take the values in the caller and leave alone the pvt values. More... | |
struct ast_frame * | ast_translate (struct ast_trans_pvt *path, struct ast_frame *f, int consume) |
do the actual translation More... | |
void | ast_translate_available_formats (struct ast_format_cap *dest, struct ast_format_cap *src, struct ast_format_cap *result) |
Find available formats. More... | |
int | ast_translate_init (void) |
Initialize the translation matrix and index to format conversion table. More... | |
unsigned int | ast_translate_path_steps (struct ast_format *dst_format, struct ast_format *src_format) |
Returns the number of steps required to convert from 'src' to 'dest'. More... | |
const char * | ast_translate_path_to_str (struct ast_trans_pvt *p, struct ast_str **str) |
Puts a string representation of the translation path into outbuf. More... | |
void | ast_translator_activate (struct ast_translator *t) |
Activate a previously deactivated translator. More... | |
int | ast_translator_best_choice (struct ast_format_cap *dst_cap, struct ast_format_cap *src_cap, struct ast_format **dst_fmt_out, struct ast_format **src_fmt_out) |
Calculate our best translator source format, given costs, and a desired destination. More... | |
struct ast_trans_pvt * | ast_translator_build_path (struct ast_format *dst, struct ast_format *src) |
Build a chain of translators based upon the given source and dest formats. More... | |
void | ast_translator_deactivate (struct ast_translator *t) |
Deactivate a translator. More... | |
void | ast_translator_free_path (struct ast_trans_pvt *p) |
Frees a translator path Frees the given translator path structure. More... | |
int | ast_unregister_translator (struct ast_translator *t) |
unregister codec translator More... | |
static void | check_translation_path (struct ast_format_cap *dest, struct ast_format_cap *src, struct ast_format_cap *result, struct ast_format *src_fmt, enum ast_media_type type) |
static int | codec2index (struct ast_codec *codec) |
static void | codec_append_name (const struct ast_codec *codec, struct ast_str **buf) |
static int | codec_to_index (unsigned int id) |
static char * | complete_trans_path_choice (const char *word) |
static struct ast_frame * | default_frameout (struct ast_trans_pvt *pvt) |
static void | destroy (struct ast_trans_pvt *pvt) |
static int | format2index (struct ast_format *format) |
static int | framein (struct ast_trans_pvt *pvt, struct ast_frame *f) |
framein wrapper, deals with bound checks. More... | |
static void | generate_computational_cost (struct ast_translator *t, int seconds) |
static struct ast_frame * | generate_interpolated_slin (struct ast_trans_pvt *p, struct ast_frame *f) |
static int | generate_table_cost (struct ast_codec *src, struct ast_codec *dst) |
static char * | handle_cli_core_show_translation (struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) |
static void | handle_cli_recalc (struct ast_cli_args *a) |
static char * | handle_show_translation_path (struct ast_cli_args *a, const char *codec_name, unsigned int sample_rate) |
static char * | handle_show_translation_table (struct ast_cli_args *a) |
static struct ast_codec * | index2codec (int index) |
static void | matrix_clear (void) |
static struct translator_path * | matrix_get (unsigned int x, unsigned int y) |
static void | matrix_rebuild (int samples) |
rebuild a translation matrix. More... | |
static int | matrix_resize (int init) |
static struct ast_trans_pvt * | newpvt (struct ast_translator *t, struct ast_format *explicit_dst) |
Allocate the descriptor, required outbuf space, and possibly desc. More... | |
static void | translate_shutdown (void) |
Variables | |
static unsigned int * | __indextable |
table for converting index to format values. More... | |
static struct translator_path ** | __matrix |
a matrix that, for any pair of supported formats, indicates the total cost of translation and the first step. The full path can be reconstricted iterating on the matrix until step->dstfmt == desired_format. More... | |
static struct ast_cli_entry | cli_translate [] |
static int | cur_max_index |
static int | index_size |
static ast_rwlock_t | tablelock |
static struct translators | translators = { .first = NULL, .last = NULL, .lock = { PTHREAD_RWLOCK_INITIALIZER , NULL, {1, 0} } , } |
Translate via the use of pseudo channels.
Definition in file translate.c.
#define format_sample_rate_absdiff | ( | fmt1, | |
fmt2 | |||
) |
Calculate the absolute difference between sample rate of two formats.
Definition at line 1378 of file translate.c.
Referenced by ast_translator_best_choice().
#define GROW_INDEX 16 |
Definition at line 91 of file translate.c.
Referenced by matrix_resize().
#define INIT_INDEX 32 |
Definition at line 89 of file translate.c.
Referenced by matrix_resize().
#define MAX_RECALC 1000 |
max sample recalc
Definition at line 54 of file translate.c.
Referenced by handle_cli_recalc().
int __ast_register_translator | ( | struct ast_translator * | t, |
struct ast_module * | mod | ||
) |
register codec translator
Register a translator This registers a codec translator with asterisk.
Definition at line 1220 of file translate.c.
References a, ast_translator::active, add_codec2index(), ao2_cleanup, ast_assert, ast_codec_get(), ast_log, AST_RWLIST_INSERT_BEFORE_CURRENT, AST_RWLIST_INSERT_HEAD, AST_RWLIST_TRAVERSE_SAFE_BEGIN, AST_RWLIST_TRAVERSE_SAFE_END, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, ast_verb, b, ast_translator::buf_size, codec2index(), COLOR_BLACK, COLOR_MAGENTA, ast_translator::comp_cost, cur_max_index, default_frameout(), ast_translator::dst_codec, ast_translator::dst_fmt_index, ast_translator::frameout, generate_computational_cost(), generate_table_cost(), LOG_WARNING, matrix_rebuild(), matrix_resize(), ast_translator::module, ast_codec::name, ast_translator::name, NULL, RAII_VAR, ast_codec::sample_rate, ast_translator::src_codec, ast_translator::src_fmt_index, ast_translator::table_cost, term_color(), tmp(), and ast_codec::type.
|
static |
Definition at line 147 of file translate.c.
References __indextable, ast_rwlock_unlock, ast_rwlock_wrlock, codec2index(), cur_max_index, ast_codec::id, and index_size.
Referenced by __ast_register_translator().
struct ast_frame* ast_trans_frameout | ( | struct ast_trans_pvt * | pvt, |
int | datalen, | ||
int | samples | ||
) |
generic frameout routine. If samples and datalen are 0, take whatever is in pvt and reset them, otherwise take the values in the caller and leave alone the pvt values.
generic frameout function
Definition at line 438 of file translate.c.
References ast_frisolate, ast_trans_pvt::c, ast_frame::data, ast_frame::datalen, ast_trans_pvt::datalen, ast_trans_pvt::f, NULL, ast_trans_pvt::outbuf, ast_frame::ptr, ast_frame::samples, and ast_trans_pvt::samples.
Referenced by default_frameout(), lintoadpcm_frameout(), lintocodec2_frameout(), lintogsm_frameout(), lintoilbc_frameout(), lintolpc10_frameout(), and lintospeex_frameout().
struct ast_frame* ast_translate | ( | struct ast_trans_pvt * | path, |
struct ast_frame * | f, | ||
int | consume | ||
) |
do the actual translation
translates one or more frames Apply an input frame into the translator and receive zero or one output frames. Consume determines whether the original frame should be freed. In case the frame type is AST_FRAME_RTCP, the frame is not translated but passed to the translator codecs via the feedback callback, and a pointer to ast_null_frame is returned after that.
Definition at line 565 of file translate.c.
References ast_clear_flag, ast_debug, ast_format_get_sample_rate(), AST_FRAME_CNG, AST_FRAME_RTCP, AST_FRFLAG_HAS_TIMING_INFO, ast_frfree, AST_LIST_NEXT, ast_null_frame, ast_samp2tv(), ast_set2_flag, ast_test_flag, ast_tv(), ast_tvadd(), ast_tveq(), ast_tvnow(), ast_tvsub(), ast_tvzero(), ast_frame::delivery, ast_translator::feedback, ast_frame_subclass::format, framein(), ast_frame::frametype, generate_interpolated_slin(), ast_frame::len, len(), ast_trans_pvt::next, ast_trans_pvt::nextin, ast_trans_pvt::nextout, out, ast_frame::samples, ast_frame::seqno, ast_frame::subclass, ast_trans_pvt::t, and ast_frame::ts.
Referenced by __ast_read(), ast_slinfactory_feed(), ast_write_stream(), ast_writestream(), audiohook_list_translate_to_native(), audiohook_list_translate_to_slin(), audiohook_read_frame_helper(), conf_run(), fax_gateway_framehook(), and softmix_process_write_audio().
void ast_translate_available_formats | ( | struct ast_format_cap * | dest, |
struct ast_format_cap * | src, | ||
struct ast_format_cap * | result | ||
) |
Find available formats.
dest | possible destination formats |
src | source formats |
result | capabilities structure to store available formats in |
The result will include all formats from 'dest' that are either present in 'src' or translatable from a format present in 'src'.
Definition at line 1571 of file translate.c.
References ao2_ref, ast_format_cap_append, ast_format_cap_count(), ast_format_cap_get_compatible_format(), ast_format_cap_get_format(), AST_MEDIA_TYPE_AUDIO, AST_MEDIA_TYPE_VIDEO, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK, and check_translation_path().
Referenced by ast_rtp_instance_available_formats().
int ast_translate_init | ( | void | ) |
Initialize the translation matrix and index to format conversion table.
0 | on success |
-1 | on failure |
Definition at line 1630 of file translate.c.
References ARRAY_LEN, ast_cli_register_multiple, ast_register_cleanup(), ast_rwlock_init, matrix_resize(), and translate_shutdown().
Referenced by asterisk_daemon().
unsigned int ast_translate_path_steps | ( | struct ast_format * | dest, |
struct ast_format * | src | ||
) |
Returns the number of steps required to convert from 'src' to 'dest'.
dest | destination format |
src | source format |
Definition at line 1491 of file translate.c.
References ast_log, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK, format2index(), LOG_WARNING, matrix_get(), translator_path::multistep, and translator_path::step.
Referenced by ast_channel_make_compatible_helper().
const char* ast_translate_path_to_str | ( | struct ast_trans_pvt * | t, |
struct ast_str ** | str | ||
) |
Puts a string representation of the translation path into outbuf.
t | translator structure containing the translation path |
str | ast_str output buffer |
on | success pointer to beginning of outbuf. on failure "". |
Definition at line 928 of file translate.c.
References ast_str_append(), ast_str_buffer(), ast_str_reset(), codec_append_name(), ast_translator::dst_codec, ast_trans_pvt::next, ast_translator::src_codec, and ast_trans_pvt::t.
Referenced by chan_pjsip_write_stream(), generate_status(), handle_showchan(), and serialize_showchan().
void ast_translator_activate | ( | struct ast_translator * | t | ) |
Activate a previously deactivated translator.
t | translator to activate |
Enables the specified translator for use.
Definition at line 1361 of file translate.c.
References ast_translator::active, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, and matrix_rebuild().
int ast_translator_best_choice | ( | struct ast_format_cap * | dst_cap, |
struct ast_format_cap * | src_cap, | ||
struct ast_format ** | dst_fmt_out, | ||
struct ast_format ** | src_fmt_out | ||
) |
Calculate our best translator source format, given costs, and a desired destination.
Chooses the best translation path.
Definition at line 1385 of file translate.c.
References ao2_cleanup, ao2_ref, ao2_replace, ast_format_cap_alloc, ast_format_cap_count(), ast_format_cap_empty(), AST_FORMAT_CAP_FLAG_DEFAULT, ast_format_cap_get_compatible(), ast_format_cap_get_format(), ast_format_get_sample_rate(), ast_format_get_type(), ast_log, AST_MEDIA_TYPE_AUDIO, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK, format2index(), format_sample_rate_absdiff, LOG_ERROR, matrix_get(), translator_path::multistep, NULL, RAII_VAR, translator_path::step, and translator_path::table_cost.
Referenced by ast_channel_make_compatible_helper(), iax2_request(), local_request_with_stream_topology(), request_channel(), and set_format().
struct ast_trans_pvt* ast_translator_build_path | ( | struct ast_format * | dst, |
struct ast_format * | src | ||
) |
Build a chain of translators based upon the given source and dest formats.
Builds a translator path Build a path (possibly NULL) from source to dest.
Definition at line 485 of file translate.c.
References ast_format_get_name(), ast_format_get_sample_rate(), ast_format_get_type(), ast_log, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK, ast_translator_free_path(), ast_tv(), ast_translator::dst_codec, ast_translator::dst_fmt_index, format2index(), LOG_WARNING, matrix_get(), newpvt(), ast_trans_pvt::next, ast_trans_pvt::nextin, ast_trans_pvt::nextout, NULL, ast_codec::sample_rate, translator_path::step, ast_trans_pvt::t, and ast_codec::type.
Referenced by ast_set_read_format_path(), ast_set_write_format_path(), ast_slinfactory_feed(), ast_writestream(), audiohook_list_translate_to_native(), audiohook_list_translate_to_slin(), audiohook_read_frame_helper(), conf_run(), set_format(), softmix_process_write_audio(), and softmix_translate_helper_change_rate().
void ast_translator_deactivate | ( | struct ast_translator * | t | ) |
Deactivate a translator.
t | translator to deactivate |
Disables the specified translator from being used.
Definition at line 1369 of file translate.c.
References ast_translator::active, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, and matrix_rebuild().
void ast_translator_free_path | ( | struct ast_trans_pvt * | tr | ) |
Frees a translator path Frees the given translator path structure.
tr | translator path to get rid of |
Definition at line 475 of file translate.c.
References destroy(), and ast_trans_pvt::next.
Referenced by ast_audiohook_destroy(), ast_audiohook_detach_list(), ast_channel_destructor(), ast_set_read_format_path(), ast_set_write_format_path(), ast_slinfactory_destroy(), ast_slinfactory_feed(), ast_slinfactory_flush(), ast_translator_build_path(), ast_writestream(), audiohook_list_translate_to_native(), audiohook_list_translate_to_slin(), audiohook_read_frame_helper(), conf_free(), filestream_destructor(), free_translation(), set_format(), softmix_translate_helper_change_rate(), softmix_translate_helper_cleanup(), and softmix_translate_helper_free_entry().
int ast_unregister_translator | ( | struct ast_translator * | t | ) |
unregister codec translator
Unregister a translator Unregisters the given tranlator.
Definition at line 1333 of file translate.c.
References AST_RWLIST_REMOVE_CURRENT, AST_RWLIST_TRAVERSE_SAFE_BEGIN, AST_RWLIST_TRAVERSE_SAFE_END, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, ast_shutting_down(), ast_verb, COLOR_BLACK, COLOR_MAGENTA, ast_translator::dst_codec, ast_translator::list, matrix_rebuild(), ast_codec::name, ast_translator::name, ast_translator::src_codec, term_color(), and tmp().
Referenced by unload_module(), and unregister_translators().
|
static |
Definition at line 1513 of file translate.c.
References ao2_cleanup, ast_format_cap_count(), ast_format_cap_get_format(), ast_format_cap_iscompatible_format(), ast_format_cap_remove(), AST_FORMAT_CMP_EQUAL, AST_FORMAT_CMP_NOT_EQUAL, ast_format_get_type(), format2index(), matrix_get(), RAII_VAR, and translator_path::step.
Referenced by ast_translate_available_formats().
|
static |
Definition at line 124 of file translate.c.
References codec_to_index(), and ast_codec::id.
Referenced by __ast_register_translator(), add_codec2index(), handle_show_translation_path(), and handle_show_translation_table().
Definition at line 919 of file translate.c.
References ast_str_append(), ast_codec::name, and ast_codec::sample_rate.
Referenced by ast_translate_path_to_str(), and handle_show_translation_path().
|
static |
Definition at line 104 of file translate.c.
References __indextable, ast_rwlock_rdlock, ast_rwlock_unlock, and cur_max_index.
Referenced by codec2index(), and format2index().
|
static |
Definition at line 945 of file translate.c.
References ao2_ref, ast_cli_completion_add(), ast_codec_get_by_id(), AST_MEDIA_TYPE_AUDIO, ast_strdup, ast_codec::name, NULL, and ast_codec::type.
Referenced by handle_cli_core_show_translation().
|
static |
Definition at line 468 of file translate.c.
References ast_trans_frameout().
Referenced by __ast_register_translator().
|
static |
Definition at line 291 of file translate.c.
References ao2_cleanup, ao2_ref, ast_free, ast_module_unref, ast_translator::destroy, ast_trans_pvt::explicit_dst, ast_trans_pvt::f, ast_frame_subclass::format, ast_translator::module, NULL, ast_frame::subclass, and ast_trans_pvt::t.
Referenced by ast_translator_free_path(), generate_computational_cost(), newpvt(), and rtp_ioqueue_thread_remove().
|
static |
Definition at line 133 of file translate.c.
References ast_format_get_codec_id(), and codec_to_index().
Referenced by ast_translate_path_steps(), ast_translator_best_choice(), ast_translator_build_path(), and check_translation_path().
|
static |
framein wrapper, deals with bound checks.
Definition at line 396 of file translate.c.
References ast_assert, ast_copy_flags, AST_FRFLAG_HAS_TIMING_INFO, ast_log, ast_translator::buffer_samples, ast_frame::datalen, ast_translator::dst_codec, ast_trans_pvt::f, ast_translator::framein, ast_frame::len, LOG_WARNING, ast_translator::name, ast_translator::native_plc, ast_codec::sample_rate, ast_frame::samples, ast_trans_pvt::samples, ast_frame::seqno, ast_frame::src, ast_translator::src_codec, ast_trans_pvt::t, and ast_frame::ts.
Referenced by ast_translate(), and generate_computational_cost().
|
static |
Definition at line 690 of file translate.c.
References ast_debug, ast_frfree, ast_log, ast_translator::comp_cost, destroy(), ast_translator::dst_codec, framein(), ast_translator::frameout, LOG_WARNING, ast_translator::name, newpvt(), NULL, ast_trans_pvt::pvt, ast_translator::sample, ast_codec::sample_rate, and ast_frame::samples.
Referenced by __ast_register_translator(), and matrix_rebuild().
|
static |
Definition at line 536 of file translate.c.
References ast_format_cache_get_slin_by_rate(), ast_format_cmp(), AST_FORMAT_CMP_NOT_EQUAL, ast_format_slin, AST_FRAME_VOICE, ast_frdup, AST_FRIENDLY_OFFSET, ast_opt_generic_plc, ast_frame::data, ast_frame::datalen, ast_trans_pvt::explicit_dst, ast_frame_subclass::format, NULL, ast_frame::offset, ast_frame::ptr, ast_frame::samples, and ast_frame::subclass.
Referenced by ast_translate().
Definition at line 768 of file translate.c.
References AST_MEDIA_TYPE_AUDIO, AST_TRANS_COST_LL_LL_DOWNSAMP, AST_TRANS_COST_LL_LL_ORIGSAMP, AST_TRANS_COST_LL_LL_UPSAMP, AST_TRANS_COST_LL_LY_DOWNSAMP, AST_TRANS_COST_LL_LY_ORIGSAMP, AST_TRANS_COST_LL_LY_UPSAMP, AST_TRANS_COST_LL_UNKNOWN, AST_TRANS_COST_LY_LL_DOWNSAMP, AST_TRANS_COST_LY_LL_ORIGSAMP, AST_TRANS_COST_LY_LL_UPSAMP, AST_TRANS_COST_LY_LY_DOWNSAMP, AST_TRANS_COST_LY_LY_ORIGSAMP, AST_TRANS_COST_LY_LY_UPSAMP, AST_TRANS_COST_LY_UNKNOWN, ast_codec::name, ast_codec::sample_rate, and ast_codec::type.
Referenced by __ast_register_translator().
|
static |
Definition at line 1164 of file translate.c.
References ast_cli_args::argc, ast_cli_args::argv, ast_cli(), ast_cli_complete(), CLI_FAILURE, CLI_GENERATE, CLI_INIT, CLI_SHOWUSAGE, ast_cli_entry::command, complete_trans_path_choice(), ast_cli_args::fd, handle_cli_recalc(), handle_show_translation_path(), handle_show_translation_table(), NULL, ast_cli_args::pos, ast_codec::sample_rate, ast_cli_entry::usage, and ast_cli_args::word.
|
static |
Definition at line 969 of file translate.c.
References ast_cli_args::argv, ast_cli(), AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, ast_cli_args::fd, matrix_rebuild(), and MAX_RECALC.
Referenced by handle_cli_core_show_translation().
|
static |
Definition at line 1099 of file translate.c.
References ao2_ref, ast_cli(), ast_codec_get(), ast_codec_get_by_id(), AST_MEDIA_TYPE_AUDIO, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK, ast_str_alloca, ast_str_append(), ast_str_buffer(), ast_str_reset(), ast_str_set(), CLI_FAILURE, CLI_SUCCESS, codec2index(), codec_append_name(), ast_translator::dst_fmt_index, ast_cli_args::fd, matrix_get(), ast_codec::name, ast_codec::sample_rate, ast_translator::src_codec, translator_path::step, str, and ast_codec::type.
Referenced by handle_cli_core_show_translation().
|
static |
Definition at line 988 of file translate.c.
References ao2_cleanup, ao2_ref, ast_cli(), ast_codec_get_by_id(), ast_free, AST_MEDIA_TYPE_AUDIO, AST_RWLIST_RDLOCK, AST_RWLIST_UNLOCK, ast_str_append(), ast_str_buffer(), ast_str_create, ast_str_set(), CLI_SUCCESS, codec2index(), ast_cli_args::fd, matrix_get(), ast_codec::name, NULL, out, ast_codec::sample_rate, translator_path::step, translator_path::table_cost, and ast_codec::type.
Referenced by handle_cli_core_show_translation().
|
static |
Definition at line 170 of file translate.c.
References __indextable, ast_codec_get_by_id(), ast_rwlock_rdlock, ast_rwlock_unlock, and cur_max_index.
Referenced by matrix_rebuild().
|
static |
Definition at line 268 of file translate.c.
References index_size.
Referenced by matrix_rebuild().
|
static |
Definition at line 282 of file translate.c.
Referenced by ast_translate_path_steps(), ast_translator_best_choice(), ast_translator_build_path(), check_translation_path(), handle_show_translation_path(), handle_show_translation_table(), and matrix_rebuild().
|
static |
rebuild a translation matrix.
Definition at line 824 of file translate.c.
References ast_translator::active, ao2_ref, ast_debug, ast_log, AST_RWLIST_TRAVERSE, ast_translator::comp_cost, cur_max_index, DEBUG_ATLEAST, ast_translator::dst_fmt_index, generate_computational_cost(), index2codec(), ast_translator::list, LOG_DEBUG, matrix_clear(), matrix_get(), translator_path::multistep, ast_codec::name, ast_translator::src_fmt_index, translator_path::step, translator_path::table_cost, and ast_translator::table_cost.
Referenced by __ast_register_translator(), ast_translator_activate(), ast_translator_deactivate(), ast_unregister_translator(), handle_cli_recalc(), and matrix_resize().
|
static |
Definition at line 194 of file translate.c.
References __indextable, ast_calloc, ast_free, AST_RWLIST_UNLOCK, AST_RWLIST_WRLOCK, ast_rwlock_unlock, ast_rwlock_wrlock, GROW_INDEX, index_size, INIT_INDEX, matrix_rebuild(), and NULL.
Referenced by __ast_register_translator(), and ast_translate_init().
|
static |
Allocate the descriptor, required outbuf space, and possibly desc.
Definition at line 311 of file translate.c.
References ao2_bump, ao2_ref, ast_calloc, ast_codec_get(), ast_format_cache_get, ast_format_create(), AST_FRAME_VOICE, ast_free, AST_FRIENDLY_OFFSET, ast_log, ast_module_ref, ast_module_unref, ast_strlen_zero, ast_translator::buf_size, ast_trans_pvt::c, ast_frame::data, ast_translator::desc_size, destroy(), ast_translator::dst_codec, ast_trans_pvt::explicit_dst, ast_trans_pvt::f, ast_translator::format, ast_frame_subclass::format, ast_frame::frametype, len(), LOG_ERROR, ast_frame::mallocd, ast_translator::module, ast_codec::name, ast_translator::name, ast_translator::newpvt, NULL, ast_frame::offset, ast_trans_pvt::outbuf, ast_frame::ptr, ast_trans_pvt::pvt, ast_codec::sample_rate, ast_frame::src, ast_frame::subclass, ast_trans_pvt::t, and ast_codec::type.
Referenced by ast_translator_build_path(), and generate_computational_cost().
|
static |
Definition at line 1613 of file translate.c.
References __indextable, ARRAY_LEN, ast_cli_unregister_multiple(), ast_free, ast_rwlock_destroy, ast_rwlock_unlock, ast_rwlock_wrlock, index_size, and NULL.
Referenced by ast_translate_init().
|
static |
table for converting index to format values.
Definition at line 83 of file translate.c.
Referenced by add_codec2index(), codec_to_index(), index2codec(), matrix_resize(), and translate_shutdown().
|
static |
a matrix that, for any pair of supported formats, indicates the total cost of translation and the first step. The full path can be reconstricted iterating on the matrix until step->dstfmt == desired_format.
Array indexes are 'src' and 'dest', in that order.
Note: the lock in the 'translators' list is also used to protect this structure.
Definition at line 76 of file translate.c.
|
static |
Definition at line 1215 of file translate.c.
|
static |
the current largest index used by the __matrix and __indextable arrays
Definition at line 94 of file translate.c.
Referenced by __ast_register_translator(), add_codec2index(), codec_to_index(), index2codec(), and matrix_rebuild().
|
static |
the largest index that can be used in either the __indextable or __matrix before resize must occur
Definition at line 96 of file translate.c.
Referenced by add_codec2index(), matrix_clear(), matrix_resize(), and translate_shutdown().
|
static |
protects the __indextable for resizing
Definition at line 86 of file translate.c.
|
static |