[commit] r9197 - freeswitch/trunk/src/mod/formats/mod_tone_stream
Author: anthm Date: Tue Jul 29 11:18:28 2008 New Revision: 9197 Modified: freeswitch/trunk/src/mod/formats/mod_tone_stream/mod_tone_stream.c Log: let silence_stream://0 indicate perpetual silence Modified: freeswitch/trunk/src/mod/formats/mod_tone_stream/mod_tone_stream.c ============================================================================== --- freeswitch/trunk/src/mod/formats/mod_tone_stream/mod_tone_stream.c (original) +++ freeswitch/trunk/src/mod/formats/mod_tone_stream/mod_tone_stream.c Tue Jul 29 11:18:28 2008 @@ -38,6 +38,7 @@ struct silence_handle { int32_t samples; int silence; + int forever; }; static switch_status_t silence_stream_file_open(switch_file_handle_t *handle, const char *path) @@ -45,31 +46,30 @@ struct silence_handle *sh; int ms; + char *p; sh = switch_core_alloc(handle->memory_pool, sizeof(*sh)); ms = atoi(path); if (ms > 0) { - char *p; - sh->samples = (handle->samplerate / 1000) * ms; + } else { + sh->samples = 0; + sh->forever = 1; + } - if ((p = strchr(path, ','))) { - p++; - ms = atoi(p); - if (ms > 0) { - sh->silence = ms; - } + if ((p = strchr(path, ','))) { + p++; + ms = atoi(p); + if (ms > 0) { + sh->silence = ms; } - - handle->private_info = sh; - return SWITCH_STATUS_SUCCESS; } - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "invalid format!\n"); - - return SWITCH_STATUS_GENERR; + handle->private_info = sh; + + return SWITCH_STATUS_SUCCESS; } static switch_status_t silence_stream_file_close(switch_file_handle_t *handle) @@ -81,15 +81,17 @@ { struct silence_handle *sh = handle->private_info; - if (sh->samples <= 0) { - return SWITCH_STATUS_FALSE; - } + if (!sh->forever) { + if (sh->samples <= 0) { + return SWITCH_STATUS_FALSE; + } - if (*len > (size_t)sh->samples) { - *len = sh->samples; - } + if (*len > (size_t)sh->samples) { + *len = sh->samples; + } - sh->samples -= *len; + sh->samples -= *len; + } if (sh->silence) { switch_generate_sln_silence((int16_t *) data, *len, sh->silence);
participants (1)
-
Freeswitch SVN