]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4067 this should make g722 work
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 31 Oct 2013 00:16:23 +0000 (19:16 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 31 Oct 2013 00:16:23 +0000 (19:16 -0500)
src/mod/applications/mod_esf/mod_esf.c

index 42a760b45bb7e26255f279df552839b364810a99..f6a9191877b12e1d6505bf212545e4cffa34dc6a 100644 (file)
@@ -30,6 +30,7 @@
  *
  */
 #include <switch.h>
+#include <g711.h>
 
 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);