diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index d60ffc1f35..575ce654be 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -928,7 +928,7 @@ static void set_bgcolor(bgcolor_yuv_t *bgcolor, char *bgcolor_str) bgcolor->v = v; } -#define SCALE_FACTOR 360 +#define SCALE_FACTOR 360.0f static void reset_layer(mcu_canvas_t *canvas, mcu_layer_t *layer) { @@ -938,8 +938,8 @@ static void reset_layer(mcu_canvas_t *canvas, mcu_layer_t *layer) layer->tagged = 0; - screen_w = canvas->img->d_w * layer->geometry.scale / SCALE_FACTOR; - screen_h = canvas->img->d_h * layer->geometry.scale / SCALE_FACTOR; + screen_w = ceil(canvas->img->d_w * layer->geometry.scale / SCALE_FACTOR); + screen_h = ceil(canvas->img->d_h * layer->geometry.scale / SCALE_FACTOR); x = canvas->img->d_w * layer->geometry.x / SCALE_FACTOR; y = canvas->img->d_h * layer->geometry.y / SCALE_FACTOR; @@ -951,7 +951,7 @@ static void reset_layer(mcu_canvas_t *canvas, mcu_layer_t *layer) if (!layer->img) { layer->img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, screen_w, screen_h, 1); } - + switch_assert(layer->img); reset_image(layer->img, &canvas->bgcolor); @@ -971,8 +971,8 @@ static void scale_and_patch(conference_obj_t *conference, mcu_layer_t *layer) int screen_w = 0, screen_h = 0, img_w = 0, img_h = 0; double screen_aspect = 0, img_aspect = 0; - img_w = screen_w = IMG->d_w * layer->geometry.scale / SCALE_FACTOR; - img_h = screen_h = IMG->d_h * layer->geometry.scale / SCALE_FACTOR; + img_w = screen_w = ceil(IMG->d_w * layer->geometry.scale / SCALE_FACTOR); + img_h = screen_h = ceil(IMG->d_h * layer->geometry.scale / SCALE_FACTOR); x = IMG->d_w * layer->geometry.x / SCALE_FACTOR; y = IMG->d_h * layer->geometry.y / SCALE_FACTOR; @@ -981,10 +981,10 @@ static void scale_and_patch(conference_obj_t *conference, mcu_layer_t *layer) img_aspect = (double) img->d_w / img->d_h; if (screen_aspect > img_aspect) { - img_w = img_aspect * screen_h; + img_w = ceil(img_aspect * screen_h); x += (screen_w - img_w) / 2; } else if (screen_aspect < img_aspect) { - img_h = screen_w / img_aspect; + img_h = ceil(screen_w / img_aspect); y += (screen_h - img_h) / 2; } @@ -1010,8 +1010,8 @@ static void scale_and_patch(conference_obj_t *conference, mcu_layer_t *layer) switch_assert(layer->img); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG10, "RESIZE %dx%d to %dx%d to fit in %dx%d and insert at %d,%d\n", - img->d_w, img->d_h, img_w, img_h, screen_w, screen_h, x, y); + //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "RESIZE %dx%d to %dx%d to fit in %dx%d and insert at %d,%d\n", + // img->d_w, img->d_h, img_w, img_h, screen_w, screen_h, x, y); ret = I420Scale(img->planes[0], img->stride[0], img->planes[1], img->stride[1],