goto do_continue;
}
+ if (!switch_channel_test_flag(channel, CF_AUDIO)) {
+ goto do_continue;
+ }
+
/* if the member can speak, compute the audio energy level and */
/* generate events when the level crosses the threshold */
if (((conference_utils_member_test_flag(member, MFLAG_CAN_SPEAK) && !conference_utils_member_test_flag(member, MFLAG_HOLD)) ||
if (datalen) {
switch_size_t ok = 1;
-
+
/* Write the audio into the input buffer */
switch_mutex_lock(member->audio_in_mutex);
if (switch_buffer_inuse(member->audio_buffer) > flush_len) {
for (omember = conference->members; omember; omember = omember->next) {
switch_size_t ok = 1;
- if (!conference_utils_member_test_flag(omember, MFLAG_RUNNING)) {
+ if (!conference_utils_member_test_flag(omember, MFLAG_RUNNING) ||
+ (!conference_utils_member_test_flag(omember, MFLAG_NOCHANNEL) && !switch_channel_test_flag(omember->channel, CF_AUDIO))) {
continue;
}
-
+
if (!conference_utils_member_test_flag(omember, MFLAG_CAN_HEAR)) {
switch_mutex_lock(omember->audio_out_mutex);
memset(write_frame, 255, bytes);
write_frame[x] = (int16_t) z;
}
- switch_mutex_lock(omember->audio_out_mutex);
- ok = switch_buffer_write(omember->mux_buffer, write_frame, bytes);
- switch_mutex_unlock(omember->audio_out_mutex);
-
- if (!ok) {
- switch_mutex_unlock(conference->mutex);
- goto end;
+ if (!omember->channel || switch_channel_test_flag(omember->channel, CF_AUDIO)) {
+ switch_mutex_lock(omember->audio_out_mutex);
+ ok = switch_buffer_write(omember->mux_buffer, write_frame, bytes);
+ switch_mutex_unlock(omember->audio_out_mutex);
+ if (!ok) {
+ switch_mutex_unlock(conference->mutex);
+ goto end;
+ }
}
}
} else { /* There is no source audio. Push silence into all of the buffers */
for (omember = conference->members; omember; omember = omember->next) {
switch_size_t ok = 1;
- if (!conference_utils_member_test_flag(omember, MFLAG_RUNNING)) {
+ if (!conference_utils_member_test_flag(omember, MFLAG_RUNNING) ||
+ (!conference_utils_member_test_flag(omember, MFLAG_NOCHANNEL) && !switch_channel_test_flag(omember->channel, CF_AUDIO))) {
continue;
}