mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-02-08 08:51:50 +00:00
FS-7500: fix image copy
This commit is contained in:
parent
387cbc9dda
commit
89c02eada9
@ -77,10 +77,10 @@ SWITCH_DECLARE(void) switch_img_copy(switch_image_t *img, switch_image_t **new_i
|
|||||||
{
|
{
|
||||||
switch_assert(img);
|
switch_assert(img);
|
||||||
switch_assert(new_img);
|
switch_assert(new_img);
|
||||||
|
int i, j, k = 1;
|
||||||
|
|
||||||
if (!img->fmt == SWITCH_IMG_FMT_I420) return;
|
if (!img->fmt == SWITCH_IMG_FMT_I420) return;
|
||||||
|
|
||||||
|
|
||||||
if (*new_img != NULL) {
|
if (*new_img != NULL) {
|
||||||
if (img->d_w != (*new_img)->d_w || img->d_h != (*new_img)->d_w) {
|
if (img->d_w != (*new_img)->d_w || img->d_h != (*new_img)->d_w) {
|
||||||
switch_img_free(new_img);
|
switch_img_free(new_img);
|
||||||
@ -88,11 +88,19 @@ SWITCH_DECLARE(void) switch_img_copy(switch_image_t *img, switch_image_t **new_i
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (*new_img == NULL) {
|
if (*new_img == NULL) {
|
||||||
*new_img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, img->d_w, img->d_h, 0);
|
*new_img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, img->d_w, img->d_h, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_assert(*new_img);
|
switch_assert(*new_img);
|
||||||
memcpy((*new_img)->img_data, img->img_data, (img->d_w * img->d_h * 3) / 2);
|
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
if (!img->planes[i] || !img->stride[i]) break;
|
||||||
|
if (i > 0) k = 2;
|
||||||
|
|
||||||
|
for (j = 0; j < (*new_img)->h; j++) {
|
||||||
|
memcpy((*new_img)->planes[i] + (*new_img)->stride[i] * j / k, img->planes[i] + img->stride[i] * j / k, img->d_w);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For Emacs:
|
/* For Emacs:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user