]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
up
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 17 Apr 2009 03:38:40 +0000 (03:38 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 17 Apr 2009 03:38:40 +0000 (03:38 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13070 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_cluechoo/mod_cluechoo.c

index 462d191326fe8b523ed394093c5e23221c15db90..7f4555db99118b5bf20e6846f8aa0e75ffd79c69 100644 (file)
@@ -217,7 +217,7 @@ int vgo(int i, switch_core_session_t *session)
        int hangover = 40, hangunder = 15;
        int talking = 0;
        int energy_level = 500;
-
+       int done = 0;
     switch_core_session_get_read_impl(session, &read_impl);
 
        printf("%s", SWITCH_SEQ_CLEARSCR);
@@ -245,15 +245,18 @@ int vgo(int i, switch_core_session_t *session)
 
     for (x = COLS - 1; ; --x) {
 
-               if (!switch_channel_ready(channel)) {
-                       break;
+               if (!done && !switch_channel_ready(channel)) {
+                       done = 1;
                }
-
-               status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
-               if (!SWITCH_READ_ACCEPTABLE(status)) {
-                       break;
+               
+               if (!done) {
+                       status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
+                       if (!SWITCH_READ_ACCEPTABLE(status)) {
+                               done = 1;
+                       }
                }
-
+               
+               if (!done)
                {
                        int16_t *fdata = (int16_t *) read_frame->data;
                        uint32_t samples = read_frame->datalen / sizeof(*fdata);
@@ -261,6 +264,7 @@ int vgo(int i, switch_core_session_t *session)
                        double energy = 0;
                        int divisor = 0;
 
+                       
                        for (count = 0; count < samples; count++) {
                                energy += abs(fdata[j]);
                                j += read_impl.number_of_channels;
@@ -296,11 +300,13 @@ int vgo(int i, switch_core_session_t *session)
                                        }
                                }
                        }
-               }
 
-               if (!talking) {
-                       x++;
-                       continue;
+                       if (!talking) {
+                               x++;
+                               continue;
+                       }
+               } else {
+                       usleep(20000);
                }
 
                if (LOGO == 0) {
@@ -310,8 +316,6 @@ int vgo(int i, switch_core_session_t *session)
                }
                refresh();
 
-               
-
                /*
                if (x == COLS / 4) {
                        sleep(2);