From: Anthony Minessale Date: Thu, 31 Oct 2013 00:16:23 +0000 (-0500) Subject: FS-4067 this should make g722 work X-Git-Tag: v1.5.6~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bd41690d890fc99a0b38743acf1ec0329e29ad15;p=thirdparty%2Ffreeswitch.git FS-4067 this should make g722 work --- 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);