]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
MODAPP-200
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 19 Jan 2009 18:01:44 +0000 (18:01 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 19 Jan 2009 18:01:44 +0000 (18:01 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@11287 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_conference/mod_conference.c

index 6dc0499238423df9febfa535bbfd9bcfe4b126b5..6b557fc77906bcffe98f5d109b28ddb7ff52925c 100644 (file)
@@ -1536,10 +1536,8 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v
        switch_channel_t *channel;
        switch_status_t status;
        switch_frame_t *read_frame = NULL;
-
-       switch_codec_t *read_codec;
        uint32_t hangover = 40, hangunder = 15, hangover_hits = 0, hangunder_hits = 0, energy_level = 0, diff_level = 400;
-
+       switch_codec_implementation_t read_impl = {0};
 
        switch_assert(member != NULL);
 
@@ -1547,8 +1545,7 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v
 
        channel = switch_core_session_get_channel(member->session);
 
-       read_codec = switch_core_session_get_read_codec(member->session);
-       switch_assert(read_codec != NULL);
+       switch_core_session_get_read_impl(member->session, &read_impl);
 
        /* As long as we have a valid read, feed that data into an input buffer where the conference thread will take it 
           and mux it with any audio from other channels. */
@@ -1601,7 +1598,7 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v
 
                        data = read_frame->data;
 
-                       if (!(divisor = read_codec->implementation->actual_samples_per_second / 8000)) {
+                       if (!(divisor = read_impl.actual_samples_per_second / 8000)) {
                                divisor = 1;
                        }
 
@@ -1610,7 +1607,7 @@ static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, v
                        if ((samples = read_frame->datalen / sizeof(*data))) {
                                for (i = 0; i < samples; i++) {
                                        energy += abs(data[j]);
-                                       j += read_codec->implementation->number_of_channels;
+                                       j += read_impl.number_of_channels;
                                }
                                member->score = energy / (samples / divisor);
                        }