Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1486>
BLEND_HIGH (u12), 12);
PLANAR_YUV_BLEND (i422_12be, GST_ROUND_UP_2, GST_ROUND_UP_1, memcpy,
BLEND_HIGH (u12_swap), 12);
+
+PLANAR_YUV_BLEND (y444_10le, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u10), 10);
+PLANAR_YUV_BLEND (y444_10be, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u10_swap), 10);
+
+PLANAR_YUV_BLEND (y444_12le, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u12), 12);
+PLANAR_YUV_BLEND (y444_12be, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u12_swap), 12);
+
+PLANAR_YUV_BLEND (y444_16le, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u16), 16);
+PLANAR_YUV_BLEND (y444_16be, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u16_swap), 16);
#else /* G_BYTE_ORDER == G_LITTLE_ENDIAN */
PLANAR_YUV_BLEND (i420_10le, GST_ROUND_UP_2, GST_ROUND_UP_2, memcpy,
BLEND_HIGH (u10_swap), 10);
BLEND_HIGH (u12_swap), 12);
PLANAR_YUV_BLEND (i422_12be, GST_ROUND_UP_2, GST_ROUND_UP_1, memcpy,
BLEND_HIGH (u12), 12);
+
+PLANAR_YUV_BLEND (y444_10le, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u10_swap), 10);
+PLANAR_YUV_BLEND (y444_10be, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u10), 10);
+
+PLANAR_YUV_BLEND (y444_12le, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u12_swap), 12);
+PLANAR_YUV_BLEND (y444_12be, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u12), 12);
+
+PLANAR_YUV_BLEND (y444_16le, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u16_swap), 16);
+PLANAR_YUV_BLEND (y444_16be, GST_ROUND_UP_1, GST_ROUND_UP_1, memcpy,
+ BLEND_HIGH (u16), 16);
#endif /* G_BYTE_ORDER == G_LITTLE_ENDIAN */
PLANAR_YUV_HIGH_FILL_CHECKER (i420_10le, 10, LE, compositor_orc_memset_u16_2d);
PLANAR_YUV_HIGH_FILL_CHECKER (i420_12be, 12, BE, compositor_orc_memset_u16_2d);
PLANAR_YUV_HIGH_FILL_COLOR (i420_12be, BE, compositor_orc_memset_u16_2d);
+PLANAR_YUV_HIGH_FILL_CHECKER (y444_16le, 16, LE, compositor_orc_memset_u16_2d);
+PLANAR_YUV_HIGH_FILL_COLOR (y444_16le, LE, compositor_orc_memset_u16_2d);
+PLANAR_YUV_HIGH_FILL_CHECKER (y444_16be, 16, BE, compositor_orc_memset_u16_2d);
+PLANAR_YUV_HIGH_FILL_COLOR (y444_16be, BE, compositor_orc_memset_u16_2d);
+
/* NV12, NV21 */
#define NV_YUV_BLEND(format_name,MEMCPY,BLENDLOOP) \
inline static void \
BlendFunction gst_compositor_blend_i422_10be;
BlendFunction gst_compositor_blend_i422_12le;
BlendFunction gst_compositor_blend_i422_12be;
+BlendFunction gst_compositor_blend_y444_10le;
+BlendFunction gst_compositor_blend_y444_10be;
+BlendFunction gst_compositor_blend_y444_12le;
+BlendFunction gst_compositor_blend_y444_12be;
+BlendFunction gst_compositor_blend_y444_16le;
+BlendFunction gst_compositor_blend_y444_16be;
FillCheckerFunction gst_compositor_fill_checker_argb;
FillCheckerFunction gst_compositor_fill_checker_bgra;
FillCheckerFunction gst_compositor_fill_checker_i420_10be;
FillCheckerFunction gst_compositor_fill_checker_i420_12le;
FillCheckerFunction gst_compositor_fill_checker_i420_12be;
+FillCheckerFunction gst_compositor_fill_checker_y444_16le;
+FillCheckerFunction gst_compositor_fill_checker_y444_16be;
FillColorFunction gst_compositor_fill_color_argb;
FillColorFunction gst_compositor_fill_color_bgra;
FillColorFunction gst_compositor_fill_color_i420_10be;
FillColorFunction gst_compositor_fill_color_i420_12le;
FillColorFunction gst_compositor_fill_color_i420_12be;
+FillColorFunction gst_compositor_fill_color_y444_16le;
+FillColorFunction gst_compositor_fill_color_y444_16be;
void
gst_compositor_init_blend (void)
gst_compositor_blend_i422_10be = GST_DEBUG_FUNCPTR (blend_i422_10be);
gst_compositor_blend_i422_12le = GST_DEBUG_FUNCPTR (blend_i422_12le);
gst_compositor_blend_i422_12be = GST_DEBUG_FUNCPTR (blend_i422_12be);
+ gst_compositor_blend_y444_10le = GST_DEBUG_FUNCPTR (blend_y444_10le);
+ gst_compositor_blend_y444_10be = GST_DEBUG_FUNCPTR (blend_y444_10be);
+ gst_compositor_blend_y444_12le = GST_DEBUG_FUNCPTR (blend_y444_12le);
+ gst_compositor_blend_y444_12be = GST_DEBUG_FUNCPTR (blend_y444_12be);
+ gst_compositor_blend_y444_16le = GST_DEBUG_FUNCPTR (blend_y444_16le);
+ gst_compositor_blend_y444_16be = GST_DEBUG_FUNCPTR (blend_y444_16be);
gst_compositor_fill_checker_argb = GST_DEBUG_FUNCPTR (fill_checker_argb_c);
gst_compositor_fill_checker_bgra = GST_DEBUG_FUNCPTR (fill_checker_bgra_c);
GST_DEBUG_FUNCPTR (fill_checker_i420_12le);
gst_compositor_fill_checker_i420_12be =
GST_DEBUG_FUNCPTR (fill_checker_i420_12be);
+ gst_compositor_fill_checker_y444_16le =
+ GST_DEBUG_FUNCPTR (fill_checker_y444_16le);
+ gst_compositor_fill_checker_y444_16be =
+ GST_DEBUG_FUNCPTR (fill_checker_y444_16be);
gst_compositor_fill_color_argb = GST_DEBUG_FUNCPTR (fill_color_argb);
gst_compositor_fill_color_bgra = GST_DEBUG_FUNCPTR (fill_color_bgra);
GST_DEBUG_FUNCPTR (fill_color_i420_12le);
gst_compositor_fill_color_i420_12be =
GST_DEBUG_FUNCPTR (fill_color_i420_12be);
+ gst_compositor_fill_color_y444_16le =
+ GST_DEBUG_FUNCPTR (fill_color_y444_16le);
+ gst_compositor_fill_color_y444_16be =
+ GST_DEBUG_FUNCPTR (fill_color_y444_16be);
}
extern BlendFunction gst_compositor_blend_i422_10be;
extern BlendFunction gst_compositor_blend_i422_12le;
extern BlendFunction gst_compositor_blend_i422_12be;
+extern BlendFunction gst_compositor_blend_y444_10le;
+extern BlendFunction gst_compositor_blend_y444_10be;
+extern BlendFunction gst_compositor_blend_y444_12le;
+extern BlendFunction gst_compositor_blend_y444_12be;
+extern BlendFunction gst_compositor_blend_y444_16le;
+extern BlendFunction gst_compositor_blend_y444_16be;
extern FillCheckerFunction gst_compositor_fill_checker_argb;
#define gst_compositor_fill_checker_abgr gst_compositor_fill_checker_argb
extern FillCheckerFunction gst_compositor_fill_checker_uyvy;
extern FillCheckerFunction gst_compositor_fill_checker_i420_10le;
#define gst_compositor_fill_checker_i422_10le gst_compositor_fill_checker_i420_10le
+#define gst_compositor_fill_checker_y444_10le gst_compositor_fill_checker_i420_10le
extern FillCheckerFunction gst_compositor_fill_checker_i420_10be;
#define gst_compositor_fill_checker_i422_10be gst_compositor_fill_checker_i420_10be
+#define gst_compositor_fill_checker_y444_10be gst_compositor_fill_checker_i420_10be
extern FillCheckerFunction gst_compositor_fill_checker_i420_12le;
#define gst_compositor_fill_checker_i422_12le gst_compositor_fill_checker_i420_12le
+#define gst_compositor_fill_checker_y444_12le gst_compositor_fill_checker_i420_12le
extern FillCheckerFunction gst_compositor_fill_checker_i420_12be;
#define gst_compositor_fill_checker_i422_12be gst_compositor_fill_checker_i420_12be
+#define gst_compositor_fill_checker_y444_12be gst_compositor_fill_checker_i420_12be
+extern FillCheckerFunction gst_compositor_fill_checker_y444_16le;
+extern FillCheckerFunction gst_compositor_fill_checker_y444_16be;
extern FillColorFunction gst_compositor_fill_color_argb;
extern FillColorFunction gst_compositor_fill_color_abgr;
extern FillColorFunction gst_compositor_fill_color_uyvy;
extern FillColorFunction gst_compositor_fill_color_i420_10le;
#define gst_compositor_fill_color_i422_10le gst_compositor_fill_color_i420_10le
+#define gst_compositor_fill_color_y444_10le gst_compositor_fill_color_i420_10le
extern FillColorFunction gst_compositor_fill_color_i420_10be;
#define gst_compositor_fill_color_i422_10be gst_compositor_fill_color_i420_10be
+#define gst_compositor_fill_color_y444_10be gst_compositor_fill_color_i420_10be
extern FillColorFunction gst_compositor_fill_color_i420_12le;
#define gst_compositor_fill_color_i422_12le gst_compositor_fill_color_i420_12le
+#define gst_compositor_fill_color_y444_12le gst_compositor_fill_color_i420_12le
extern FillColorFunction gst_compositor_fill_color_i420_12be;
#define gst_compositor_fill_color_i422_12be gst_compositor_fill_color_i420_12be
+#define gst_compositor_fill_color_y444_12be gst_compositor_fill_color_i420_12be
+extern FillColorFunction gst_compositor_fill_color_y444_16le;
+extern FillColorFunction gst_compositor_fill_color_y444_16be;
void gst_compositor_init_blend (void);
#define GST_CAT_DEFAULT gst_compositor_debug
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-#define FORMATS " { AYUV, VUYA, BGRA, ARGB, RGBA, ABGR, Y444, Y42B, YUY2, UYVY, "\
- " YVYU, I422_12LE, I422_12BE, I422_10LE, I422_10BE, "\
+#define FORMATS " { AYUV, VUYA, BGRA, ARGB, RGBA, ABGR, " \
+ " Y444_16LE, Y444_16BE, Y444_12LE, Y444_12BE, Y444_10LE, Y444_10BE, " \
+ " Y444, Y42B, YUY2, UYVY, YVYU, "\
+ " I422_12LE, I422_12BE, I422_10LE, I422_10BE, "\
" I420_12LE, I420_12BE, I420_10LE, I420_10BE, " \
" I420, YV12, NV12, NV21, Y41B, RGB, BGR, xRGB, xBGR, "\
" RGBx, BGRx } "
#else
-#define FORMATS " { AYUV, VUYA, BGRA, ARGB, RGBA, ABGR, Y444, Y42B, YUY2, UYVY, "\
- " YVYU, I422_12BE, I422_12LE, I422_10BE, I422_10LE, "\
+#define FORMATS " { AYUV, VUYA, BGRA, ARGB, RGBA, ABGR, "\
+ " Y444_16BE, Y444_16LE, Y444_12BE, Y444_12LE, Y444_10BE, Y444_10LE, " \
+ " Y444, Y42B, YUY2, UYVY, YVYU, "\
+ " I422_12BE, I422_12LE, I422_10BE, I422_10LE, "\
" I420_12BE, I420_12LE, I420_10BE, I420_10LE, "\
" I420, YV12, NV12, NV21, Y41B, RGB, BGR, xRGB, xBGR, "\
" RGBx, BGRx } "
self->fill_checker = gst_compositor_fill_checker_rgba;
self->fill_color = gst_compositor_fill_color_rgba;
break;
+ case GST_VIDEO_FORMAT_Y444_16LE:
+ self->blend = gst_compositor_blend_y444_16le;
+ self->overlay = self->blend;
+ self->fill_checker = gst_compositor_fill_checker_y444_16le;
+ self->fill_color = gst_compositor_fill_color_y444_16le;
+ break;
+ case GST_VIDEO_FORMAT_Y444_16BE:
+ self->blend = gst_compositor_blend_y444_16be;
+ self->overlay = self->blend;
+ self->fill_checker = gst_compositor_fill_checker_y444_16be;
+ self->fill_color = gst_compositor_fill_color_y444_16be;
+ break;
+ case GST_VIDEO_FORMAT_Y444_12LE:
+ self->blend = gst_compositor_blend_y444_12le;
+ self->overlay = self->blend;
+ self->fill_checker = gst_compositor_fill_checker_y444_12le;
+ self->fill_color = gst_compositor_fill_color_y444_12le;
+ break;
+ case GST_VIDEO_FORMAT_Y444_12BE:
+ self->blend = gst_compositor_blend_y444_12be;
+ self->overlay = self->blend;
+ self->fill_checker = gst_compositor_fill_checker_y444_12be;
+ self->fill_color = gst_compositor_fill_color_y444_12be;
+ break;
+ case GST_VIDEO_FORMAT_Y444_10LE:
+ self->blend = gst_compositor_blend_y444_10le;
+ self->overlay = self->blend;
+ self->fill_checker = gst_compositor_fill_checker_y444_10le;
+ self->fill_color = gst_compositor_fill_color_y444_10le;
+ break;
+ case GST_VIDEO_FORMAT_Y444_10BE:
+ self->blend = gst_compositor_blend_y444_10be;
+ self->overlay = self->blend;
+ self->fill_checker = gst_compositor_fill_checker_y444_10be;
+ self->fill_color = gst_compositor_fill_color_y444_10be;
+ break;
case GST_VIDEO_FORMAT_Y444:
self->blend = gst_compositor_blend_y444;
self->overlay = self->blend;