if (session->read_impl.codec_id) {
*impp = session->read_impl;
return SWITCH_STATUS_SUCCESS;
+ } else {
+ memset(impp, 0, sizeof(*impp));
+ impp->number_of_channels = 1;
}
return SWITCH_STATUS_FALSE;
if (session->real_read_impl.codec_id) {
*impp = session->real_read_impl;
return SWITCH_STATUS_SUCCESS;
+ } else {
+ memset(impp, 0, sizeof(*impp));
+ impp->number_of_channels = 1;
}
return SWITCH_STATUS_FALSE;
if (session->write_impl.codec_id) {
*impp = session->write_impl;
return SWITCH_STATUS_SUCCESS;
+ } else {
+ memset(impp, 0, sizeof(*impp));
+ impp->number_of_channels = 1;
}
return SWITCH_STATUS_FALSE;
if (session->video_read_impl.codec_id) {
*impp = session->video_read_impl;
return SWITCH_STATUS_SUCCESS;
+ } else {
+ memset(impp, 0, sizeof(*impp));
+ impp->number_of_channels = 1;
}
return SWITCH_STATUS_FALSE;
if (session->video_write_impl.codec_id) {
*impp = session->video_write_impl;
return SWITCH_STATUS_SUCCESS;
+ } else {
+ memset(impp, 0, sizeof(*impp));
+ impp->number_of_channels = 1;
}
return SWITCH_STATUS_FALSE;
switch_channel_t *channel = switch_core_session_get_channel(session);
struct record_helper *rh;
switch_size_t bsize = SWITCH_RECOMMENDED_BUFFER_SIZE, samples = 0, inuse = 0;
- unsigned char *data = switch_core_session_alloc(session, bsize);
- int channels = switch_core_media_bug_test_flag(bug, SMBF_STEREO) ? 2 : rh->read_impl.number_of_channels;
+ unsigned char *data;
+ int channels = 1;
if (switch_core_session_read_lock(session) != SWITCH_STATUS_SUCCESS) {
return NULL;
switch_buffer_create_dynamic(&rh->thread_buffer, 1024 * 512, 1024 * 64, 0);
rh->thread_ready = 1;
+ channels = switch_core_media_bug_test_flag(bug, SMBF_STEREO) ? 2 : rh->read_impl.number_of_channels;
+ data = switch_core_session_alloc(session, bsize);
+
while(switch_test_flag(rh->fh, SWITCH_FILE_OPEN)) {
switch_mutex_lock(rh->buffer_mutex);
inuse = switch_buffer_inuse(rh->thread_buffer);
switch_mutex_unlock(rh->buffer_mutex);
break;
}
-
+
samples = switch_buffer_read(rh->thread_buffer, data, bsize) / 2 / channels;
switch_mutex_unlock(rh->buffer_mutex);