#include void _blend_images_cy_impl( const float* mask_warped, const float* frame_warped, const unsigned char* frame_rgb, const int height, const int width, unsigned char* result) { const float* mask_pointer = mask_warped; const float* frame_warped_pointer = frame_warped; const unsigned char* frame_rgb_pointer = frame_rgb; unsigned char* result_pointer = result; for(int i = 0; i < height; i++) { for(int j = 0; j < width; j++) { float mask = *mask_pointer; float mask_inv = 1.0f - mask; float blended1 = mask * (*frame_warped_pointer) + mask_inv * (*frame_rgb_pointer); float blended2 = mask * (*(frame_warped_pointer+1)) + mask_inv * (*(frame_rgb_pointer+1)); float blended3 = mask * (*(frame_warped_pointer+2)) + mask_inv * (*(frame_rgb_pointer+2)); *(result_pointer++) = blended1 > 255 ? 255 : (blended1 < 0) ? 0 : (unsigned char)blended1; *(result_pointer++) = blended2 > 255 ? 255 : (blended2 < 0) ? 0 : (unsigned char)blended2; *(result_pointer++) = blended3 > 255 ? 255 : (blended3 < 0) ? 0 : (unsigned char)blended3; frame_warped_pointer+=3; frame_rgb_pointer+=3; mask_pointer++; } } }