]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
sniffing glue
authorAnthony Minessale <anthm@freeswitch.org>
Fri, 21 Jun 2013 03:25:25 +0000 (22:25 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Fri, 21 Jun 2013 03:25:25 +0000 (22:25 -0500)
src/switch_ivr_async.c

index e46ce46c39fe4575d228ebcbf21e1840d57503d7..540ddb9c0713d06c6e48bb15d7c034cbad70b32c 100644 (file)
@@ -1089,6 +1089,9 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
                break;
        case SWITCH_ABC_TYPE_TAP_NATIVE_READ:
                {
+                       switch_time_t now = switch_micro_time_now();
+                       switch_time_t diff;
+
                        rh->rready = 1;
 
                        nframe = switch_core_media_bug_get_native_read_frame(bug);
@@ -1100,22 +1103,20 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
 
                                switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
                                switch_core_file_write(&rh->out_fh, fill_data, &fill_len);
-                       } else {
-                               switch_time_t now = switch_micro_time_now();
-                               switch_time_t diff;
+                       }
+                               
                                
-                               if (rh->last_read_time && rh->last_read_time < now) {
-                                       diff = ((now - rh->last_read_time) + 3000 ) / rh->read_impl.microseconds_per_packet;
+                       if (rh->last_read_time && rh->last_read_time < now) {
+                               diff = ((now - rh->last_read_time) + 3000 ) / rh->read_impl.microseconds_per_packet;
+                               
+                               if (diff > 1) {
+                                       unsigned char fill_data[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
+                                       switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
                                        
-                                       if (diff > 1) {
-                                               unsigned char fill_data[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
-                                               switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
-                                               
-                                               while(diff > 1) {
-                                                       switch_size_t fill_len = len;
-                                                       switch_core_file_write(&rh->in_fh, fill_data, &fill_len);
-                                                       diff--;
-                                               }
+                                       while(diff > 1) {
+                                               switch_size_t fill_len = len;
+                                               switch_core_file_write(&rh->in_fh, fill_data, &fill_len);
+                                               diff--;
                                        }
                                }
                        }
@@ -1127,6 +1128,8 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
                break;
        case SWITCH_ABC_TYPE_TAP_NATIVE_WRITE:
                {
+                       switch_time_t now = switch_micro_time_now();
+                       switch_time_t diff;
                        rh->wready = 1;
                        
                        if (!rh->rready) {
@@ -1134,30 +1137,28 @@ static switch_bool_t record_callback(switch_media_bug_t *bug, void *user_data, s
                                switch_size_t fill_len = len;
                                switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
                                switch_core_file_write(&rh->in_fh, fill_data, &fill_len);
-                       } else {
-                               switch_time_t now = switch_micro_time_now();
-                               switch_time_t diff;
+                       }
 
-                               nframe = switch_core_media_bug_get_native_write_frame(bug);
-                               len = nframe->datalen;
 
+                       nframe = switch_core_media_bug_get_native_write_frame(bug);
+                       len = nframe->datalen;
+                       
 
-                               if (rh->last_write_time && rh->last_write_time < now) {
-                                       diff = ((now - rh->last_write_time) + 3000 ) / rh->read_impl.microseconds_per_packet;
+                       if (rh->last_write_time && rh->last_write_time < now) {
+                               diff = ((now - rh->last_write_time) + 3000 ) / rh->read_impl.microseconds_per_packet;
+                               
+                               if (diff > 1) {
+                                       unsigned char fill_data[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
+                                       switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
                                        
-                                       if (diff > 1) {
-                                               unsigned char fill_data[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
-                                               switch_core_gen_encoded_silence(fill_data, &rh->read_impl, len);
-                                               
-                                               while(diff > 1) {
-                                                       switch_size_t fill_len = len;
-                                                       switch_core_file_write(&rh->out_fh, fill_data, &fill_len);
-                                                       diff--;
-                                               }
+                                       while(diff > 1) {
+                                               switch_size_t fill_len = len;
+                                               switch_core_file_write(&rh->out_fh, fill_data, &fill_len);
+                                               diff--;
                                        }
                                }
                        }
-
+                       
                        switch_core_file_write(&rh->out_fh, mask ? null_data : nframe->data, &len);
                        rh->last_write_time = now;