]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7500: really fix image copy
authorSeven Du <dujinfang@gmail.com>
Wed, 28 Jan 2015 08:41:36 +0000 (16:41 +0800)
committerMichael Jerris <mike@jerris.com>
Thu, 28 May 2015 17:46:55 +0000 (12:46 -0500)
src/switch_core_video.c

index 7695d748d92de94f43b05d9976989da6bde200ee..00b0a94bb954880ec25052898b8e6c7dc34965ae 100644 (file)
@@ -91,12 +91,16 @@ SWITCH_DECLARE(void) switch_img_copy(switch_image_t *img, switch_image_t **new_i
        if (*new_img == NULL) {
                *new_img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, img->d_w, img->d_h, 1);
        }
-       
+
        switch_assert(*new_img);
 
-       for (i = 0; i < 3; i++) {
-               (*new_img)->stride[i] = img->stride[i];
-               (*new_img)->planes[i] = img->planes[i];
+       for (i = 0; i < (*new_img)->h; i++) {
+               memcpy((*new_img)->planes[SWITCH_PLANE_Y] + (*new_img)->stride[SWITCH_PLANE_Y] * i, img->planes[SWITCH_PLANE_Y] + img->stride[SWITCH_PLANE_Y] * i, img->d_w);
+       }
+
+       for (i = 0; i < (*new_img)->h / 2; i++) {
+               memcpy((*new_img)->planes[SWITCH_PLANE_U] + (*new_img)->stride[SWITCH_PLANE_U] * i, img->planes[SWITCH_PLANE_U] + img->stride[SWITCH_PLANE_U] * i, img->d_w);
+               memcpy((*new_img)->planes[SWITCH_PLANE_V] + (*new_img)->stride[SWITCH_PLANE_V] * i, img->planes[SWITCH_PLANE_V] + img->stride[SWITCH_PLANE_V] * i, img->d_w);
        }
 }