]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10050: [core] chromakey optimization
authorMike Jerris <mike@jerris.com>
Fri, 3 Mar 2017 20:58:52 +0000 (14:58 -0600)
committerMike Jerris <mike@jerris.com>
Fri, 3 Mar 2017 20:58:56 +0000 (14:58 -0600)
src/switch_core_video.c

index 94bdc22530ddab7267ad8f1e804d8723e667cc01..003e4a91b561f9e221cc381c0092bfc3b8639327 100644 (file)
@@ -346,6 +346,16 @@ SWITCH_DECLARE(void) switch_img_patch_rgb(switch_image_t *IMG, switch_image_t *i
                switch_img_patch_rgb_noalpha(IMG, img, x, y);
                return;
        }
+       if (IMG->d_w == img->d_w && IMG->d_h == img->d_h) {
+               ARGBAttenuate(img->planes[SWITCH_PLANE_PACKED], img->stride[SWITCH_PLANE_PACKED],
+                                         img->planes[SWITCH_PLANE_PACKED], img->stride[SWITCH_PLANE_PACKED],
+                                         img->d_w, img->d_h);
+               ARGBBlend(img->planes[SWITCH_PLANE_PACKED], img->stride[SWITCH_PLANE_PACKED],
+                                 IMG->planes[SWITCH_PLANE_PACKED], IMG->stride[SWITCH_PLANE_PACKED],
+                                 IMG->planes[SWITCH_PLANE_PACKED], IMG->stride[SWITCH_PLANE_PACKED],
+                                 IMG->d_w, IMG->d_h);
+               return;
+       }
 
        if (img->fmt == SWITCH_IMG_FMT_ARGB && IMG->fmt == SWITCH_IMG_FMT_ARGB) {
                int max_w = MIN(img->d_w, IMG->d_w - abs(x));