diff options
Diffstat (limited to 'gst/videomixer/videomixer.c')
-rw-r--r-- | gst/videomixer/videomixer.c | 83 |
1 files changed, 81 insertions, 2 deletions
diff --git a/gst/videomixer/videomixer.c b/gst/videomixer/videomixer.c index cd4631488..61409bf00 100644 --- a/gst/videomixer/videomixer.c +++ b/gst/videomixer/videomixer.c @@ -116,6 +116,43 @@ void gst_videomixer_blend_argb_argb (guint8 * src, gint xpos, gint ypos, void gst_videomixer_fill_argb_checker (guint8 * dest, gint width, gint height); void gst_videomixer_fill_argb_color (guint8 * dest, gint width, gint height, gint colY, gint colU, gint colV); +/* RGB function definitions see file: blend_rgb.c */ +void gst_videomixer_blend_rgb_rgb (guint8 * src, gint xpos, gint ypos, + gint src_width, gint src_height, gdouble src_alpha, + guint8 * dest, gint dest_width, gint dest_height); +void gst_videomixer_fill_rgb_checker (guint8 * dest, gint width, gint height); +void gst_videomixer_fill_rgb_color (guint8 * dest, gint width, gint height, + gint colY, gint colU, gint colV); +void gst_videomixer_blend_bgr_bgr (guint8 * src, gint xpos, gint ypos, + gint src_width, gint src_height, gdouble src_alpha, + guint8 * dest, gint dest_width, gint dest_height); +void gst_videomixer_fill_bgr_checker (guint8 * dest, gint width, gint height); +void gst_videomixer_fill_bgr_color (guint8 * dest, gint width, gint height, + gint colY, gint colU, gint colV); +void gst_videomixer_blend_xrgb_xrgb (guint8 * src, gint xpos, gint ypos, + gint src_width, gint src_height, gdouble src_alpha, + guint8 * dest, gint dest_width, gint dest_height); +void gst_videomixer_fill_xrgb_checker (guint8 * dest, gint width, gint height); +void gst_videomixer_fill_xrgb_color (guint8 * dest, gint width, gint height, + gint colY, gint colU, gint colV); +void gst_videomixer_blend_xbgr_xbgr (guint8 * src, gint xpos, gint ypos, + gint src_width, gint src_height, gdouble src_alpha, + guint8 * dest, gint dest_width, gint dest_height); +void gst_videomixer_fill_xbgr_checker (guint8 * dest, gint width, gint height); +void gst_videomixer_fill_xbgr_color (guint8 * dest, gint width, gint height, + gint colY, gint colU, gint colV); +void gst_videomixer_blend_rgbx_rgbx (guint8 * src, gint xpos, gint ypos, + gint src_width, gint src_height, gdouble src_alpha, + guint8 * dest, gint dest_width, gint dest_height); +void gst_videomixer_fill_rgbx_checker (guint8 * dest, gint width, gint height); +void gst_videomixer_fill_rgbx_color (guint8 * dest, gint width, gint height, + gint colY, gint colU, gint colV); +void gst_videomixer_blend_bgrx_bgrx (guint8 * src, gint xpos, gint ypos, + gint src_width, gint src_height, gdouble src_alpha, + guint8 * dest, gint dest_width, gint dest_height); +void gst_videomixer_fill_bgrx_checker (guint8 * dest, gint width, gint height); +void gst_videomixer_fill_bgrx_color (guint8 * dest, gint width, gint height, + gint colY, gint colU, gint colV); /*I420 function definitions see file: blend_i420.c*/ void gst_videomixer_blend_i420_i420 (guint8 * src, gint xpos, gint ypos, gint src_width, gint src_height, gdouble src_alpha, @@ -450,14 +487,20 @@ static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("AYUV") ";" GST_VIDEO_CAPS_BGRA ";" - GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_YUV ("I420")) + GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_YUV ("I420") + ";" GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR + ";" GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR + ";" GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx) ); static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink_%d", GST_PAD_SINK, GST_PAD_REQUEST, GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("AYUV") ";" GST_VIDEO_CAPS_BGRA ";" - GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_YUV ("I420")) + GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_YUV ("I420") + ";" GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR + ";" GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR + ";" GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx) ); static void gst_videomixer_finalize (GObject * object); @@ -940,6 +983,42 @@ gst_videomixer_setcaps (GstPad * pad, GstCaps * caps) mixer->fill_color = gst_videomixer_fill_argb_color; ret = TRUE; break; + case GST_VIDEO_FORMAT_RGB: + mixer->blend = gst_videomixer_blend_rgb_rgb; + mixer->fill_checker = gst_videomixer_fill_rgb_checker; + mixer->fill_color = gst_videomixer_fill_rgb_color; + ret = TRUE; + break; + case GST_VIDEO_FORMAT_BGR: + mixer->blend = gst_videomixer_blend_bgr_bgr; + mixer->fill_checker = gst_videomixer_fill_bgr_checker; + mixer->fill_color = gst_videomixer_fill_bgr_color; + ret = TRUE; + break; + case GST_VIDEO_FORMAT_xRGB: + mixer->blend = gst_videomixer_blend_xrgb_xrgb; + mixer->fill_checker = gst_videomixer_fill_xrgb_checker; + mixer->fill_color = gst_videomixer_fill_xrgb_color; + ret = TRUE; + break; + case GST_VIDEO_FORMAT_xBGR: + mixer->blend = gst_videomixer_blend_xbgr_xbgr; + mixer->fill_checker = gst_videomixer_fill_xbgr_checker; + mixer->fill_color = gst_videomixer_fill_xbgr_color; + ret = TRUE; + break; + case GST_VIDEO_FORMAT_RGBx: + mixer->blend = gst_videomixer_blend_rgbx_rgbx; + mixer->fill_checker = gst_videomixer_fill_rgbx_checker; + mixer->fill_color = gst_videomixer_fill_rgbx_color; + ret = TRUE; + break; + case GST_VIDEO_FORMAT_BGRx: + mixer->blend = gst_videomixer_blend_bgrx_bgrx; + mixer->fill_checker = gst_videomixer_fill_bgrx_checker; + mixer->fill_color = gst_videomixer_fill_bgrx_color; + ret = TRUE; + break; default: break; } |