From: Anthony Minessale Date: Wed, 15 Mar 2017 23:02:46 +0000 (-0500) Subject: FS-10138: [freeswitch-core,mod_conference] Add alpha video to conference X-Git-Tag: v1.8.0~721 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2e71cfd5360e5e47ee6940b291054ee79b192e50;p=thirdparty%2Ffreeswitch.git FS-10138: [freeswitch-core,mod_conference] Add alpha video to conference --- diff --git a/src/mod/applications/mod_conference/conference_member.c b/src/mod/applications/mod_conference/conference_member.c index 03ff78f42d..cf73621b63 100644 --- a/src/mod/applications/mod_conference/conference_member.c +++ b/src/mod/applications/mod_conference/conference_member.c @@ -1120,6 +1120,10 @@ switch_status_t conference_member_del(conference_obj_t *conference, conference_m switch_thread_rwlock_wrlock(member->rwlock); + if (member->video_queue) { + conference_video_flush_queue(member->video_queue, 0); + } + if (member->session && (exit_sound = switch_channel_get_variable(switch_core_session_get_channel(member->session), "conference_exit_sound"))) { conference_file_play(conference, (char *)exit_sound, CONF_DEFAULT_LEADIN, switch_core_session_get_channel(member->session), 0); diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 8d8e493503..6c708450fe 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -3658,11 +3658,15 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr switch_img_free(&file_img); switch_img_fit(&write_frame.img, canvas->img->d_w, canvas->img->d_h, SWITCH_FIT_SIZE); file_img = write_frame.img; - + if (file_img->fmt == SWITCH_IMG_FMT_ARGB) { + switch_image_t *overlay_img = NULL; + switch_img_copy(canvas->img, &overlay_img); + + write_img = overlay_img; switch_img_patch(write_img, file_img, 0, 0); switch_img_free(&file_img); - switch_img_copy(write_img, &file_img); + file_img = overlay_img; } else { write_img = file_img; } diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h index 1b3fcc2623..cd5feebeea 100644 --- a/src/mod/applications/mod_conference/mod_conference.h +++ b/src/mod/applications/mod_conference/mod_conference.h @@ -1149,6 +1149,7 @@ void conference_event_mod_channel_handler(const char *event_channel, cJSON *json void conference_event_chat_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id); void conference_member_itterator(conference_obj_t *conference, switch_stream_handle_t *stream, uint8_t non_mod, conference_api_member_cmd_t pfncallback, void *data); +int conference_video_flush_queue(switch_queue_t *q, int min); switch_status_t conference_api_sub_mute(conference_member_t *member, switch_stream_handle_t *stream, void *data); switch_status_t conference_api_sub_tmute(conference_member_t *member, switch_stream_handle_t *stream, void *data);