From bd41690d890fc99a0b38743acf1ec0329e29ad15 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 30 Oct 2013 19:16:23 -0500 Subject: [PATCH] FS-4067 this should make g722 work --- src/mod/applications/mod_esf/mod_esf.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_esf/mod_esf.c b/src/mod/applications/mod_esf/mod_esf.c index 42a760b45b..f6a9191877 100644 --- a/src/mod/applications/mod_esf/mod_esf.c +++ b/src/mod/applications/mod_esf/mod_esf.c @@ -30,6 +30,7 @@ * */ #include +#include SWITCH_MODULE_LOAD_FUNCTION(mod_esf_load); SWITCH_MODULE_DEFINITION(mod_esf, mod_esf_load, NULL, NULL); @@ -168,7 +169,7 @@ SWITCH_STANDARD_APP(bcast_function) if (ready == SEND_TYPE_RTP) { if (read_impl.ianacode != 0) { if (switch_core_codec_init(&codec, - "PCMU", + "L16", NULL, 8000, 20, @@ -237,7 +238,22 @@ SWITCH_STANDARD_APP(bcast_function) continue; } if (ready == SEND_TYPE_RTP) { + short *dbuf; + unsigned char *ebuf; + uint32_t i; + unsigned char encoded_data[4192]; + + dbuf = read_frame->data; + ebuf = encoded_data; + + for (i = 0; i < read_frame->datalen / sizeof(short); i++) { + ebuf[i] = linear_to_ulaw(dbuf[i]); + } + read_frame->data = encoded_data; + read_frame->datalen = read_frame->datalen / 2; switch_rtp_write_frame(rtp_session, read_frame); + read_frame->data = dbuf; + read_frame->datalen = read_frame->datalen * 2; } else { bytes = read_frame->packetlen; switch_socket_sendto(socket, audio_addr, 0, read_frame->packet, &bytes);