if (switch_channel_test_flag(channel, CF_VIDEO)) {
if (switch_test_flag(conference, CFLAG_VIDEO_BRIDGE)) {
switch_channel_set_flag(channel, CF_VIDEO_ECHO);
+ switch_channel_clear_flag(channel, CF_VIDEO_PASSIVE);
} else {
switch_channel_clear_flag(channel, CF_VIDEO_ECHO);
}
if (member) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "Adding video floor %s\n",
switch_channel_get_name(member->channel));
- switch_channel_set_flag(member->channel, CF_VIDEO_PASSIVE);
+ //switch_channel_set_flag(member->channel, CF_VIDEO_PASSIVE);
switch_core_session_refresh_video(member->session);
conference->video_floor_holder = member;
} else {
if (old_member) {
old_id = old_member->id;
- switch_channel_clear_flag(old_member->channel, CF_VIDEO_PASSIVE);
+ //switch_channel_clear_flag(old_member->channel, CF_VIDEO_PASSIVE);
}
switch_set_flag(conference, CFLAG_FLOOR_CHANGE);
switch_core_session_video_reset(session);
switch_channel_set_flag(channel, CF_CONFERENCE);
+ switch_channel_set_flag(channel, CF_VIDEO_PASSIVE);
if (switch_channel_answer(channel) != SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Channel answer failed.\n");
end:
switch_channel_clear_flag(channel, CF_CONFERENCE);
+ switch_channel_clear_flag(channel, CF_VIDEO_PASSIVE);
switch_core_session_video_reset(session);
}
}
}
+ if (status == SWITCH_STATUS_INUSE) {
+ *frame = &runtime.dummy_cng_frame;
+ switch_yield(20000);
+ return SWITCH_STATUS_SUCCESS;
+ }
+
if (!SWITCH_READ_ACCEPTABLE(status) || !session->read_codec || !switch_core_codec_ready(session->read_codec)) {
*frame = NULL;
return SWITCH_STATUS_FALSE;
if (switch_mutex_trylock(engine->read_mutex) != SWITCH_STATUS_SUCCESS) {
/* return CNG, another thread is already reading */
- *frame = &engine->read_frame;
- switch_set_flag((*frame), SFF_CNG);
- (*frame)->datalen = engine->read_impl.encoded_bytes_per_packet;
- memset((*frame)->data, 0, (*frame)->datalen);
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG1, "%s is already being read for %s\n",
switch_channel_get_name(session->channel), type2str(type));
- switch_yield(10000);
- return SWITCH_STATUS_SUCCESS;
+ return SWITCH_STATUS_INUSE;
}