diff options
Diffstat (limited to 'codecs/codec_gsm.c')
-rw-r--r-- | codecs/codec_gsm.c | 53 |
1 files changed, 31 insertions, 22 deletions
diff --git a/codecs/codec_gsm.c b/codecs/codec_gsm.c index f42a5f1bd..49f672adb 100644 --- a/codecs/codec_gsm.c +++ b/codecs/codec_gsm.c @@ -168,7 +168,18 @@ static void gsm_destroy_stuff(struct ast_trans_pvt *pvt) } static struct ast_translator gsmtolin = { - .name = "gsmtolin", + .name = "gsmtolin", + .src_codec = { + .name = "gsm", + .type = AST_MEDIA_TYPE_AUDIO, + .sample_rate = 8000, + }, + .dst_codec = { + .name = "slin", + .type = AST_MEDIA_TYPE_AUDIO, + .sample_rate = 8000, + }, + .format = "slin", .newpvt = gsm_new, .framein = gsmtolin_framein, .destroy = gsm_destroy_stuff, @@ -179,7 +190,18 @@ static struct ast_translator gsmtolin = { }; static struct ast_translator lintogsm = { - .name = "lintogsm", + .name = "lintogsm", + .src_codec = { + .name = "slin", + .type = AST_MEDIA_TYPE_AUDIO, + .sample_rate = 8000, + }, + .dst_codec = { + .name = "gsm", + .type = AST_MEDIA_TYPE_AUDIO, + .sample_rate = 8000, + }, + .format = "gsm", .newpvt = gsm_new, .framein = lintogsm_framein, .frameout = lintogsm_frameout, @@ -189,19 +211,12 @@ static struct ast_translator lintogsm = { .buf_size = (BUFFER_SAMPLES * GSM_FRAME_LEN + GSM_SAMPLES - 1)/GSM_SAMPLES, }; -/*! \brief standard module glue */ -static int reload(void) -{ - return AST_MODULE_LOAD_SUCCESS; -} - static int unload_module(void) { int res; res = ast_unregister_translator(&lintogsm); - if (!res) - res = ast_unregister_translator(&gsmtolin); + res |= ast_unregister_translator(&gsmtolin); return res; } @@ -210,24 +225,18 @@ static int load_module(void) { int res; - ast_format_set(&gsmtolin.src_format, AST_FORMAT_GSM, 0); - ast_format_set(&gsmtolin.dst_format, AST_FORMAT_SLINEAR, 0); - - ast_format_set(&lintogsm.src_format, AST_FORMAT_SLINEAR, 0); - ast_format_set(&lintogsm.dst_format, AST_FORMAT_GSM, 0); - res = ast_register_translator(&gsmtolin); - if (!res) - res=ast_register_translator(&lintogsm); - else - ast_unregister_translator(&gsmtolin); - if (res) + res |= ast_register_translator(&lintogsm); + + if (res) { + unload_module(); return AST_MODULE_LOAD_FAILURE; + } + return AST_MODULE_LOAD_SUCCESS; } AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "GSM Coder/Decoder", .load = load_module, .unload = unload_module, - .reload = reload, ); |