+#if defined(BAYER_BGGR) || defined(BAYER_RGGB)
+#define BAYER_TO_RGB48_COPY \
+ R(0, 0) = \
+ R(0, 1) = \
+ R(1, 1) = \
+ R(1, 0) = S(1, 1); \
+ \
+ G(0, 1) = S(0, 1); \
+ G(0, 0) = \
+ G(1, 1) = (T(0, 1) + T(1, 0)) >> 1; \
+ G(1, 0) = S(1, 0); \
+ \
+ B(1, 1) = \
+ B(0, 0) = \
+ B(0, 1) = \
+ B(1, 0) = S(0, 0);
+#define BAYER_TO_RGB48_INTERPOLATE \
+ R(0, 0) = (T(-1, -1) + T(-1, 1) + T(1, -1) + T(1, 1)) >> 2; \
+ G(0, 0) = (T(-1, 0) + T( 0, -1) + T(0, 1) + T(1, 0)) >> 2; \
+ B(0, 0) = S(0, 0); \
+ \
+ R(0, 1) = (T(-1, 1) + T(1, 1)) >> 1; \
+ G(0, 1) = S(0, 1); \
+ B(0, 1) = (T(0, 0) + T(0, 2)) >> 1; \
+ \
+ R(1, 0) = (T(1, -1) + T(1, 1)) >> 1; \
+ G(1, 0) = S(1, 0); \
+ B(1, 0) = (T(0, 0) + T(2, 0)) >> 1; \
+ \
+ R(1, 1) = S(1, 1); \
+ G(1, 1) = (T(0, 1) + T(1, 0) + T(1, 2) + T(2, 1)) >> 2; \
+ B(1, 1) = (T(0, 0) + T(0, 2) + T(2, 0) + T(2, 2)) >> 2;
+#else
+#define BAYER_TO_RGB48_COPY \
+ R(0, 0) = \
+ R(0, 1) = \
+ R(1, 1) = \
+ R(1, 0) = S(1, 0); \
+ \
+ G(0, 0) = S(0, 0); \
+ G(1, 1) = S(1, 1); \
+ G(0, 1) = \
+ G(1, 0) = (T(0, 0) + T(1, 1)) >> 1; \
+ \
+ B(1, 1) = \
+ B(0, 0) = \
+ B(0, 1) = \
+ B(1, 0) = S(0, 1);
+#define BAYER_TO_RGB48_INTERPOLATE \
+ R(0, 0) = (T(-1, 0) + T(1, 0)) >> 1; \
+ G(0, 0) = S(0, 0); \
+ B(0, 0) = (T(0, -1) + T(0, 1)) >> 1; \
+ \
+ R(0, 1) = (T(-1, 0) + T(-1, 2) + T(1, 0) + T(1, 2)) >> 2; \
+ G(0, 1) = (T(-1, 1) + T(0, 0) + T(0, 2) + T(1, 1)) >> 2; \
+ B(0, 1) = S(0, 1); \
+ \
+ R(1, 0) = S(1, 0); \
+ G(1, 0) = (T(0, 0) + T(1, -1) + T(1, 1) + T(2, 0)) >> 2; \
+ B(1, 0) = (T(0, -1) + T(0, 1) + T(2, -1) + T(2, 1)) >> 2; \
+ \
+ R(1, 1) = (T(1, 0) + T(1, 2)) >> 1; \
+ G(1, 1) = S(1, 1); \
+ B(1, 1) = (T(0, 1) + T(2, 1)) >> 1;
+#endif
+