if (switch_channel_test_flag(session->channel, CF_VIDEO_READY) && smh->vid_params.width &&
switch_channel_test_flag(session->channel, CF_VIDEO_MIRROR_INPUT) &&
(smh->vid_params.width * smh->vid_params.height) < (img->d_w * img->d_h)) {
- switch_img_scale(img, &dup_img, smh->vid_params.width, smh->vid_params.height);
+
+ switch_img_copy(img, &dup_img);
+ switch_img_fit(&dup_img, smh->vid_params.width, smh->vid_params.height);
img = dup_img;
}
{
switch_image_t *src, *tmp = NULL;
int new_w = 0, new_h = 0;
- double img_aspect;
switch_assert(srcP);
switch_assert(width && height);
return SWITCH_STATUS_SUCCESS;
}
- img_aspect = (double) src->d_w / src->d_h;
new_w = src->d_w;
new_h = src->d_h;
while(new_w > width || new_h > height) {
- if (new_w >= new_h) {
+ if (new_w > width) {
double m = (double) width / new_w;
new_w = width;
- new_h = (int) (new_h * m * img_aspect);
+ new_h = (int) (new_h * m);
} else {
double m = (double) height / new_h;
new_h = height;
- new_w = (int) (new_w * m * img_aspect);
+ new_w = (int) (new_w * m);
}
}