add interval to file handles for streams
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6473 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
701feee9a1
commit
b093ec1e53
|
@ -279,6 +279,7 @@ struct switch_file_handle {
|
||||||
/*! pre-buffer x bytes for streams */
|
/*! pre-buffer x bytes for streams */
|
||||||
uint32_t prebuf;
|
uint32_t prebuf;
|
||||||
/*! private data for the format module to store handle specific info */
|
/*! private data for the format module to store handle specific info */
|
||||||
|
uint32_t interval;
|
||||||
void *private_info;
|
void *private_info;
|
||||||
char *handler;
|
char *handler;
|
||||||
int64_t pos;
|
int64_t pos;
|
||||||
|
|
|
@ -174,13 +174,14 @@ static switch_status_t local_stream_file_open(switch_file_handle_t *handle, cons
|
||||||
handle->seekable = 0;
|
handle->seekable = 0;
|
||||||
handle->speed = 0;
|
handle->speed = 0;
|
||||||
handle->private_info = context;
|
handle->private_info = context;
|
||||||
|
handle->interval = source->interval;
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Opening Stream [%s] %dhz\n", path, handle->samplerate);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Opening Stream [%s] %dhz\n", path, handle->samplerate);
|
||||||
|
|
||||||
switch_mutex_init(&context->audio_mutex, SWITCH_MUTEX_NESTED, handle->memory_pool);
|
switch_mutex_init(&context->audio_mutex, SWITCH_MUTEX_NESTED, handle->memory_pool);
|
||||||
if (switch_buffer_create_dynamic(&context->audio_buffer, 512, 1024, 0) != SWITCH_STATUS_SUCCESS) {
|
if (switch_buffer_create_dynamic(&context->audio_buffer, 512, 1024, 0) != SWITCH_STATUS_SUCCESS) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n");
|
||||||
return SWITCH_STATUS_MEMERR;
|
return SWITCH_STATUS_MEMERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
context->source = source;
|
context->source = source;
|
||||||
|
|
||||||
|
|
|
@ -1123,6 +1123,7 @@ void do_broadcast(switch_stream_handle_t *stream)
|
||||||
uint8_t buf[1024];
|
uint8_t buf[1024];
|
||||||
int rlen;
|
int rlen;
|
||||||
int is_local = 0;
|
int is_local = 0;
|
||||||
|
uint32_t interval = 20000;
|
||||||
|
|
||||||
if (strstr(path_info + 7, "://")) {
|
if (strstr(path_info + 7, "://")) {
|
||||||
file = strdup(path_info + 7);
|
file = strdup(path_info + 7);
|
||||||
|
@ -1171,14 +1172,17 @@ void do_broadcast(switch_stream_handle_t *stream)
|
||||||
path_info + 7);
|
path_info + 7);
|
||||||
|
|
||||||
|
|
||||||
|
if (fh.interval) {
|
||||||
|
interval = fh.interval;
|
||||||
|
}
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
switch_size_t samples = sizeof(buf) / 2;
|
switch_size_t samples = sizeof(buf) / 2;
|
||||||
|
|
||||||
switch_core_file_read(&fh, buf, &samples);
|
switch_core_file_read(&fh, buf, &samples);
|
||||||
|
|
||||||
if (is_local) {
|
if (is_local) {
|
||||||
switch_yield(20000);
|
switch_yield(interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!samples) {
|
if (!samples) {
|
||||||
|
|
Loading…
Reference in New Issue