switch_image_t *img;
switch_image_t *cur_img;
switch_image_t *banner_img;
+ switch_image_t *logo_img;
switch_img_txt_handle_t *txthandle;
} mcu_layer_t;
layer->tagged = 0;
switch_img_free(&layer->banner_img);
+ switch_img_free(&layer->logo_img);
+
layer->banner_patched = 0;
switch_img_free(&layer->img);
switch_img_set_rect(layer->img, 0, 0, layer->img->d_w, layer->img->d_h - layer->banner_img->d_h);
layer->banner_patched = 1;
}
+
+ if (layer->logo_img) {
+ switch_img_patch(img, layer->logo_img, img->d_w - layer->logo_img->d_w, 0);
+ }
+
switch_assert(layer->img);
const char *bg = "#142e55";
char *parsed = NULL;
switch_event_t *params = NULL;
- const char *font_face = "/usr/share/fonts/truetype/freefont/FreeSansOblique.ttf";
- const char *var;
+ const char *font_face = "/usr/share/fonts/truetype/freefont/FreeSansOblique.ttf", *logo_png = NULL;
+ const char *var, *tmp = NULL;
char *dup = NULL;
-
+
switch_mutex_lock(member->conference->canvas->mutex);
goto end;
}
- if (!strcasecmp(text, "reset")) {
- text = switch_channel_get_variable_dup(member->channel, "video_banner_text", SWITCH_FALSE, -1);
+ if (*text == '{') {
+ dup = strdup(text);
+ text = dup;
+
+ if (switch_event_create_brackets((char *)text, '{', '}', ',', ¶ms, &parsed, SWITCH_FALSE) != SWITCH_STATUS_SUCCESS || !parsed) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error!\n");
+ } else {
+ text = parsed;
+ }
}
+ if (zstr(text) || !strcasecmp(text, "reset")) {
+ text = switch_channel_get_variable_dup(member->channel, "video_banner_text", SWITCH_FALSE, -1);
+ }
+
if (zstr(text) || !strcasecmp(text, "clear")) {
switch_rgb_color_t color;
switch_img_free(&layer->banner_img);
+ switch_img_free(&layer->logo_img);
layer->banner_patched = 0;
switch_color_set_rgb(&color, member->conference->video_layout_bgcolor);
goto end;
}
-
- if (*text == '{') {
- dup = strdup(text);
- text = dup;
-
- if (switch_event_create_brackets((char *)text, '{', '}', ',', ¶ms, &parsed, SWITCH_FALSE) != SWITCH_STATUS_SUCCESS || !parsed) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error!\n");
- } else {
- text = parsed;
- }
+ if ((tmp = strchr(text, '}'))) {
+ text = tmp + 1;
}
+
if (params) {
if ((var = switch_event_get_header(params, "fg"))) {
fg = var;
font_face = var;
}
+ if ((var = switch_event_get_header(params, "logo_png"))) {
+ logo_png = var;
+ }
+
if ((var = switch_event_get_header(params, "font_scale"))) {
int tmp = atoi(var);
switch_color_set_rgb(&bgcolor, bg);
switch_img_free(&layer->banner_img);
+ switch_img_free(&layer->logo_img);
layer->banner_img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, layer->screen_w, font_size * 2, 1);
+ if (logo_png) {
+ layer->logo_img = switch_img_read_png(logo_png);
+ }
if (layer->txthandle) {
switch_img_txt_handle_destroy(&layer->txthandle);
switch_img_free(&layer->img);
layer->banner_patched = 0;
switch_img_free(&layer->banner_img);
+ switch_img_free(&layer->logo_img);
if (layer->txthandle) {
switch_img_txt_handle_destroy(&layer->txthandle);
layer = &member->conference->canvas->layers[member->video_layer_id];
member->video_banner_text = switch_core_strdup(member->pool, text);
+
layer_set_banner(member, layer, NULL);
stream->write_function(stream, "+OK\n");