]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Needs a bit more if the codecs aren't sln like with port audio.
authorBrian West <brian@freeswitch.org>
Mon, 6 Mar 2006 04:50:29 +0000 (04:50 +0000)
committerBrian West <brian@freeswitch.org>
Mon, 6 Mar 2006 04:50:29 +0000 (04:50 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@761 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_echo/mod_echo.c

index 1a6ada20391b934da98e7b66c8d363a411c7f74c..b0fee9a4a564d0954e294fdf197126358e77d619 100644 (file)
@@ -37,13 +37,31 @@ static void echo_function(switch_core_session *session, char *data)
 {
        switch_channel *channel;
        switch_frame *frame;
+       char *codec_name; 
+       switch_codec codec, *read_codec;
 
        channel = switch_core_session_get_channel(session);
     assert(channel != NULL);   
 
-       while(switch_channel_ready(channel)) { 
-               switch_core_session_read_frame(session, &frame, -1, 0);
-               switch_core_session_write_frame(session, frame, -1 ,0);
+       read_codec = switch_core_session_get_read_codec(session); 
+
+       switch_channel_answer(channel);
+
+       codec_name = "L16";
+       if (switch_core_codec_init(&codec,
+                                                          codec_name,
+                                                          read_codec->implementation->samples_per_second,
+                                                          read_codec->implementation->microseconds_per_frame / 1000,
+                                                          read_codec->implementation->number_of_channels,
+                                                          SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
+                                                          NULL, switch_core_session_get_pool(session)) == SWITCH_STATUS_SUCCESS) {
+               switch_console_printf(SWITCH_CHANNEL_CONSOLE, "Raw Codec Activated\n");
+               switch_core_session_set_read_codec(session, &codec);            
+               switch_core_session_set_read_codec(session, &codec);
+               while(switch_channel_ready(channel)) { 
+                       switch_core_session_read_frame(session, &frame, -1, 0);
+                       switch_core_session_write_frame(session, frame, -1 ,0);
+               }
        }
 }