-}
-
-#define APPLY_MASK_MULTIPLY_ALPHA(type, max, components, do_yuv) \
-{ \
- type *output_row = (type*)engine->output->get_rows()[i]; \
- type *mask_row = (type*)engine->mask->get_rows()[i]; \
- int chroma_offset = (int)(max + 1) / 2; \
- \
- for(int j = 0; j < mask_w; j++) \
- { \
- if(components == 4) \
- { \
- output_row[j * 4 + 3] = output_row[j * 4 + 3] * mask_row[j] / max; \
- } \
- else \
- { \
- output_row[j * 3] = output_row[j * 3] * mask_row[j] / max; \
- \
- output_row[j * 3 + 1] = output_row[j * 3 + 1] * mask_row[j] / max; \
- output_row[j * 3 + 2] = output_row[j * 3 + 2] * mask_row[j] / max; \
- \
- if(do_yuv) \
- { \
- output_row[j * 3 + 1] += chroma_offset * (max - mask_row[j]) / max; \
- output_row[j * 3 + 2] += chroma_offset * (max - mask_row[j]) / max; \
- } \
- } \
- } \
-}
-
-
-
-
-//printf("MaskUnit::process_package 1 %d\n", engine->mode);
- for(int i = ptr->start_y; i < ptr->end_y; i++)
- {
- switch(engine->mode)
- {
- case MASK_MULTIPLY_ALPHA:
- switch(engine->output->get_color_model())
- {
- case BC_RGB888:
- APPLY_MASK_MULTIPLY_ALPHA(unsigned char, 0xff, 3, 0);
- break;
- case BC_RGB_FLOAT:
- APPLY_MASK_MULTIPLY_ALPHA(float, 1.0, 3, 0);
- break;
- case BC_YUV888:
- APPLY_MASK_MULTIPLY_ALPHA(unsigned char, 0xff, 3, 1);
- break;
- case BC_RGBA_FLOAT:
- APPLY_MASK_MULTIPLY_ALPHA(float, 1.0, 4, 0);
- break;
- case BC_YUVA8888:
- APPLY_MASK_MULTIPLY_ALPHA(unsigned char, 0xff, 4, 1);
- break;
- case BC_RGBA8888:
- APPLY_MASK_MULTIPLY_ALPHA(unsigned char, 0xff, 4, 0);
- break;
- case BC_RGB161616:
- APPLY_MASK_MULTIPLY_ALPHA(uint16_t, 0xffff, 3, 0);
- break;
- case BC_YUV161616:
- APPLY_MASK_MULTIPLY_ALPHA(uint16_t, 0xffff, 3, 1);
- break;
- case BC_YUVA16161616:
- APPLY_MASK_MULTIPLY_ALPHA(uint16_t, 0xffff, 4, 1);
- break;
- case BC_RGBA16161616:
- APPLY_MASK_MULTIPLY_ALPHA(uint16_t, 0xffff, 4, 0);
- break;
- }
- break;
-
- case MASK_SUBTRACT_ALPHA:
- switch(engine->output->get_color_model())
- {
- case BC_RGB888:
- APPLY_MASK_SUBTRACT_ALPHA(unsigned char, 0xff, 3, 0);
- break;
- case BC_RGB_FLOAT:
- APPLY_MASK_SUBTRACT_ALPHA(float, 1.0, 3, 0);
- break;
- case BC_RGBA_FLOAT:
- APPLY_MASK_SUBTRACT_ALPHA(float, 1.0, 4, 0);
- break;
- case BC_RGBA8888:
- APPLY_MASK_SUBTRACT_ALPHA(unsigned char, 0xff, 4, 0);
- break;
- case BC_YUV888:
- APPLY_MASK_SUBTRACT_ALPHA(unsigned char, 0xff, 3, 1);
- break;
- case BC_YUVA8888:
- APPLY_MASK_SUBTRACT_ALPHA(unsigned char, 0xff, 4, 1);
- break;
- case BC_RGB161616:
- APPLY_MASK_SUBTRACT_ALPHA(uint16_t, 0xffff, 3, 0);
- break;
- case BC_RGBA16161616:
- APPLY_MASK_SUBTRACT_ALPHA(uint16_t, 0xffff, 4, 0);
- break;
- case BC_YUV161616:
- APPLY_MASK_SUBTRACT_ALPHA(uint16_t, 0xffff, 3, 1);
- break;
- case BC_YUVA16161616:
- APPLY_MASK_SUBTRACT_ALPHA(uint16_t, 0xffff, 4, 1);
- break;
- }
- break;
- }
+} break
+
+ switch( engine->output->get_color_model() ) { \
+ APPLY_MASK_ALPHA(BC_RGB888, uint8_t, 0xff, 3, 0); \
+ APPLY_MASK_ALPHA(BC_RGB_FLOAT, float, 1.0, 3, 0); \
+ APPLY_MASK_ALPHA(BC_YUV888, uint8_t, 0xff, 3, 1); \
+ APPLY_MASK_ALPHA(BC_RGBA_FLOAT, float, 1.0, 4, 0); \
+ APPLY_MASK_ALPHA(BC_YUVA8888, uint8_t, 0xff, 4, 1); \
+ APPLY_MASK_ALPHA(BC_RGBA8888, uint8_t, 0xff, 4, 0); \
+ APPLY_MASK_ALPHA(BC_RGB161616, uint16_t, 0xffff, 3, 0); \
+ APPLY_MASK_ALPHA(BC_YUV161616, uint16_t, 0xffff, 3, 1); \
+ APPLY_MASK_ALPHA(BC_YUVA16161616, uint16_t, 0xffff, 4, 1); \
+ APPLY_MASK_ALPHA(BC_RGBA16161616, uint16_t, 0xffff, 4, 0); \