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);
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--;
}
}
}
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) {
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;