}
}
+static void check_flush(conference_member_t *member)
+{
+ int flushed;
+
+ if (!member->channel || !switch_channel_test_flag(member->channel, CF_VIDEO)) {
+ return;
+ }
+
+ flushed = flush_video_queue(member->video_queue);
+
+ if (flushed && member->auto_avatar) {
+ switch_channel_video_sync(member->channel);
+
+ switch_img_free(&member->avatar_png_img);
+ member->avatar_patched = 0;
+ reset_video_bitrate_counters(member);
+ member->blanks = 0;
+ member->auto_avatar = 0;
+ }
+}
static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thread, void *obj)
{
size = switch_queue_size(imember->video_queue);
} while(size > 0);
- if (switch_test_flag(imember, MFLAG_CAN_BE_SEEN) && imember->video_flow != SWITCH_MEDIA_FLOW_SENDONLY) {
+ if (switch_test_flag(imember, MFLAG_CAN_BE_SEEN) && imember->video_layer_id > -1 && imember->video_flow != SWITCH_MEDIA_FLOW_SENDONLY) {
if (img) {
imember->good_img++;
if ((imember->good_img % (int)(conference->video_fps.fps * 10)) == 0) {
//if (layer) {
//layer->is_avatar = 1;
//}
-
+
imember->auto_avatar = 1;
}
}
}
}
} else {
- int flushed = flush_video_queue(imember->video_queue);
-
- if (flushed && imember->auto_avatar) {
- switch_channel_video_sync(imember->channel);
-
- switch_img_free(&imember->avatar_png_img);
- imember->avatar_patched = 0;
- reset_video_bitrate_counters(imember);
-
- if (layer) {
- layer->is_avatar = 0;
- imember->auto_avatar = 0;
- }
-
- imember->blanks = 0;
- } else {
-
- }
+ check_flush(imember);
}
layer = NULL;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "Adding video floor %s\n",
switch_channel_get_name(member->channel));
+ check_flush(member);
switch_core_session_video_reinit(member->session);
conference->video_floor_holder = member->id;
member_update_status_field(member);