summaryrefslogtreecommitdiffstats
path: root/gst/overlay/gstoverlay.c
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2004-03-14 22:34:33 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2004-03-14 22:34:33 +0000
commit7a778ee4b7ec09a1f5b2185c9cceee3910dfbdf2 (patch)
treef863b467dea9559a6ec9c48affbfae11f8104164 /gst/overlay/gstoverlay.c
parenta19db4bbdc4a15ea0d8f4d28e9a1302c9c3d1657 (diff)
downloadgst-plugins-bad-7a778ee4b7ec09a1f5b2185c9cceee3910dfbdf2.tar.gz
gst-plugins-bad-7a778ee4b7ec09a1f5b2185c9cceee3910dfbdf2.tar.bz2
gst-plugins-bad-7a778ee4b7ec09a1f5b2185c9cceee3910dfbdf2.zip
gst-indent
Original commit message from CVS: gst-indent
Diffstat (limited to 'gst/overlay/gstoverlay.c')
-rw-r--r--gst/overlay/gstoverlay.c268
1 files changed, 136 insertions, 132 deletions
diff --git a/gst/overlay/gstoverlay.c b/gst/overlay/gstoverlay.c
index fccd88b9..cf787e87 100644
--- a/gst/overlay/gstoverlay.c
+++ b/gst/overlay/gstoverlay.c
@@ -33,60 +33,59 @@ static GstElementDetails overlay_details = {
};
static GstStaticPadTemplate overlay_src_factory =
-GST_STATIC_PAD_TEMPLATE (
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV("I420"))
-);
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
static GstStaticPadTemplate overlay_sink1_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink1",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV("I420"))
-);
+GST_STATIC_PAD_TEMPLATE ("sink1",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
static GstStaticPadTemplate overlay_sink2_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink2",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV("I420"))
-);
+GST_STATIC_PAD_TEMPLATE ("sink2",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
static GstStaticPadTemplate overlay_sink3_factory =
-GST_STATIC_PAD_TEMPLATE (
- "sink3",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV("I420"))
-);
+GST_STATIC_PAD_TEMPLATE ("sink3",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("I420"))
+ );
/* OVERLAY signals and args */
-enum {
+enum
+{
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
};
-static void gst_overlay_class_init (GstOverlayClass *klass);
-static void gst_overlay_base_init (GstOverlayClass *klass);
-static void gst_overlay_init (GstOverlay *overlay);
+static void gst_overlay_class_init (GstOverlayClass * klass);
+static void gst_overlay_base_init (GstOverlayClass * klass);
+static void gst_overlay_init (GstOverlay * overlay);
-static void gst_overlay_loop (GstElement *element);
+static void gst_overlay_loop (GstElement * element);
-static void gst_overlay_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_overlay_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static void gst_overlay_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_overlay_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_overlay_signals[LAST_SIGNAL] = { 0 }; */
static GType
@@ -96,47 +95,49 @@ gst_overlay_get_type (void)
if (!overlay_type) {
static const GTypeInfo overlay_info = {
- sizeof(GstOverlayClass),
- (GBaseInitFunc)gst_overlay_base_init,
+ sizeof (GstOverlayClass),
+ (GBaseInitFunc) gst_overlay_base_init,
NULL,
- (GClassInitFunc)gst_overlay_class_init,
+ (GClassInitFunc) gst_overlay_class_init,
NULL,
NULL,
- sizeof(GstOverlay),
+ sizeof (GstOverlay),
0,
- (GInstanceInitFunc)gst_overlay_init,
+ (GInstanceInitFunc) gst_overlay_init,
};
- overlay_type = g_type_register_static(GST_TYPE_ELEMENT, "GstOverlay", &overlay_info, 0);
+ overlay_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstOverlay", &overlay_info,
+ 0);
}
return overlay_type;
}
static void
-gst_overlay_base_init (GstOverlayClass *klass)
+gst_overlay_base_init (GstOverlayClass * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&overlay_sink1_factory));
+ gst_static_pad_template_get (&overlay_sink1_factory));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&overlay_sink2_factory));
+ gst_static_pad_template_get (&overlay_sink2_factory));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&overlay_sink3_factory));
+ gst_static_pad_template_get (&overlay_sink3_factory));
gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&overlay_src_factory));
+ gst_static_pad_template_get (&overlay_src_factory));
gst_element_class_set_details (element_class, &overlay_details);
}
static void
-gst_overlay_class_init (GstOverlayClass *klass)
+gst_overlay_class_init (GstOverlayClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
- parent_class = g_type_class_ref(GST_TYPE_ELEMENT);
+ parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_overlay_set_property;
gobject_class->get_property = gst_overlay_get_property;
@@ -144,29 +145,28 @@ gst_overlay_class_init (GstOverlayClass *klass)
}
#if 0
-static GstCaps *gst_overlay_getcaps(GstPad *pad)
+static GstCaps *
+gst_overlay_getcaps (GstPad * pad)
{
GstCaps *caps;
GstOverlay *overlay;
overlay = GST_OVERLAY (gst_pad_get_parent (pad));
- if(overlay->width && overlay->height){
- caps = GST_STATIC_CAPS (
- "overlay_sink2",
- "video/raw",
- "format", GST_TYPE_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')),
- "width", G_TYPE_INT (overlay->width),
- "height", G_TYPE_INT (overlay->height)
- );
- }else{
- caps = GST_STATIC_CAPS (
- "overlay_sink2",
- "video/raw",
- "format", GST_TYPE_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')),
- "width", G_TYPE_INT_RANGE (0, 4096),
- "height", G_TYPE_INT_RANGE (0, 4096)
- );
+ if (overlay->width && overlay->height) {
+ caps = GST_STATIC_CAPS ("overlay_sink2",
+ "video/raw",
+ "format", GST_TYPE_FOURCC (GST_MAKE_FOURCC ('I', '4', '2', '0')),
+ "width", G_TYPE_INT (overlay->width),
+ "height", G_TYPE_INT (overlay->height)
+ );
+ } else {
+ caps = GST_STATIC_CAPS ("overlay_sink2",
+ "video/raw",
+ "format", GST_TYPE_FOURCC (GST_MAKE_FOURCC ('I', '4', '2', '0')),
+ "width", G_TYPE_INT_RANGE (0, 4096),
+ "height", G_TYPE_INT_RANGE (0, 4096)
+ );
}
return caps;
@@ -174,7 +174,7 @@ static GstCaps *gst_overlay_getcaps(GstPad *pad)
#endif
static gboolean
-gst_overlay_sinkconnect (GstPad *pad, const GstCaps *caps)
+gst_overlay_sinkconnect (GstPad * pad, const GstCaps * caps)
{
GstOverlay *overlay;
GstStructure *structure;
@@ -183,80 +183,91 @@ gst_overlay_sinkconnect (GstPad *pad, const GstCaps *caps)
structure = gst_caps_get_structure (caps, 0);
- gst_structure_get_int (structure, "width", &overlay->width);
- gst_structure_get_int (structure, "height", &overlay->height);
- gst_structure_get_double (structure, "framerate", &overlay->framerate);
+ gst_structure_get_int (structure, "width", &overlay->width);
+ gst_structure_get_int (structure, "height", &overlay->height);
+ gst_structure_get_double (structure, "framerate", &overlay->framerate);
/* forward to the next plugin */
- return gst_pad_try_set_caps(overlay->srcpad, caps);
+ return gst_pad_try_set_caps (overlay->srcpad, caps);
}
-static void
-gst_overlay_init (GstOverlay *overlay)
+static void
+gst_overlay_init (GstOverlay * overlay)
{
- overlay->sinkpad1 = gst_pad_new_from_template (
- gst_static_pad_template_get (&overlay_sink1_factory), "sink1");
+ overlay->sinkpad1 =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&overlay_sink1_factory), "sink1");
gst_pad_set_link_function (overlay->sinkpad1, gst_overlay_sinkconnect);
gst_element_add_pad (GST_ELEMENT (overlay), overlay->sinkpad1);
- overlay->sinkpad2 = gst_pad_new_from_template (
- gst_static_pad_template_get (&overlay_sink2_factory), "sink2");
+ overlay->sinkpad2 =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&overlay_sink2_factory), "sink2");
gst_pad_set_link_function (overlay->sinkpad2, gst_overlay_sinkconnect);
gst_element_add_pad (GST_ELEMENT (overlay), overlay->sinkpad2);
- overlay->sinkpad3 = gst_pad_new_from_template (
- gst_static_pad_template_get (&overlay_sink3_factory), "sink3");
+ overlay->sinkpad3 =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&overlay_sink3_factory), "sink3");
gst_pad_set_link_function (overlay->sinkpad3, gst_overlay_sinkconnect);
gst_element_add_pad (GST_ELEMENT (overlay), overlay->sinkpad3);
- overlay->srcpad = gst_pad_new_from_template (
- gst_static_pad_template_get (&overlay_src_factory), "src");
+ overlay->srcpad =
+ gst_pad_new_from_template (gst_static_pad_template_get
+ (&overlay_src_factory), "src");
gst_element_add_pad (GST_ELEMENT (overlay), overlay->srcpad);
gst_element_set_loop_function (GST_ELEMENT (overlay), gst_overlay_loop);
}
static void
-gst_overlay_blend_i420 (guint8 *out, guint8 *in1, guint8 *in2, guint8 *in3,
- gint width, gint height)
+gst_overlay_blend_i420 (guint8 * out, guint8 * in1, guint8 * in2, guint8 * in3,
+ gint width, gint height)
{
int mask;
int i, j;
- guint8 *in1u, *in1v, *in2u, *in2v, *outu, *outv;
+ guint8 *in1u, *in1v, *in2u, *in2v, *outu, *outv;
int lumsize;
int chromsize;
- int width2 = width/2;
- int height2 = height/2;
+ int width2 = width / 2;
+ int height2 = height / 2;
lumsize = width * height;
chromsize = width2 * height2;
- in1u = in1 + lumsize; in1v = in1u + chromsize;
- in2u = in2 + lumsize; in2v = in2u + chromsize;
- outu = out + lumsize; outv = outu + chromsize;
-
+ in1u = in1 + lumsize;
+ in1v = in1u + chromsize;
+ in2u = in2 + lumsize;
+ in2v = in2u + chromsize;
+ outu = out + lumsize;
+ outv = outu + chromsize;
+
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
- mask = in3[i*width + j];
- out[i*width+j] = ((in1[i*width+j] * mask) +
- (in2[i*width+j] * (255 - mask))) >> 8;
+ mask = in3[i * width + j];
+ out[i * width + j] = ((in1[i * width + j] * mask) +
+ (in2[i * width + j] * (255 - mask))) >> 8;
}
}
- for (i = 0; i < height/2; i++) {
- for (j = 0; j < width/2; j++) {
- mask = (in3[(i*2)*width + (j*2)] + in3[(i*2 + 1)*width + (j*2)] +
- in3[(i*2)*width + (j*2 + 1)] + in3[(i*2 + 1)*width + (j*2 + 1)]) / 4;
- outu[i*width2 + j] = ((in1u[i*width2+j] * mask) +
- (in2u[i*width2 + j] * (255 - mask))) >> 8;
- outv[i*width2 + j] = ((in1v[i*width2+j] * mask) +
- (in2v[i*width2 + j] * (255 - mask))) >> 8;
+ for (i = 0; i < height / 2; i++) {
+ for (j = 0; j < width / 2; j++) {
+ mask =
+ (in3[(i * 2) * width + (j * 2)] + in3[(i * 2 + 1) * width + (j * 2)] +
+ in3[(i * 2) * width + (j * 2 + 1)] + in3[(i * 2 + 1) * width +
+ (j * 2 + 1)]) / 4;
+ outu[i * width2 + j] =
+ ((in1u[i * width2 + j] * mask) + (in2u[i * width2 + j] * (255 -
+ mask))) >> 8;
+ outv[i * width2 + j] =
+ ((in1v[i * width2 + j] * mask) + (in2v[i * width2 + j] * (255 -
+ mask))) >> 8;
}
}
}
static void
-gst_overlay_loop (GstElement *element)
+gst_overlay_loop (GstElement * element)
{
GstOverlay *overlay;
GstBuffer *out;
@@ -284,22 +295,21 @@ gst_overlay_loop (GstElement *element)
return;
}
- g_return_if_fail(in1 != NULL);
- g_return_if_fail(in2 != NULL);
- g_return_if_fail(in3 != NULL);
+ g_return_if_fail (in1 != NULL);
+ g_return_if_fail (in2 != NULL);
+ g_return_if_fail (in3 != NULL);
- size = (overlay->width * overlay->height * 3)/2;
- g_return_if_fail(GST_BUFFER_SIZE(in1) != size);
- g_return_if_fail(GST_BUFFER_SIZE(in2) != size);
- g_return_if_fail(GST_BUFFER_SIZE(in3) != size);
+ size = (overlay->width * overlay->height * 3) / 2;
+ g_return_if_fail (GST_BUFFER_SIZE (in1) != size);
+ g_return_if_fail (GST_BUFFER_SIZE (in2) != size);
+ g_return_if_fail (GST_BUFFER_SIZE (in3) != size);
out = gst_buffer_new_and_alloc (size);
gst_overlay_blend_i420 (GST_BUFFER_DATA (out),
- GST_BUFFER_DATA (in1),
- GST_BUFFER_DATA (in2),
- GST_BUFFER_DATA (in3),
- overlay->width, overlay->height);
+ GST_BUFFER_DATA (in1),
+ GST_BUFFER_DATA (in2),
+ GST_BUFFER_DATA (in3), overlay->width, overlay->height);
GST_BUFFER_TIMESTAMP (out) = GST_BUFFER_TIMESTAMP (in1);
GST_BUFFER_DURATION (out) = GST_BUFFER_DURATION (in1);
@@ -312,12 +322,12 @@ gst_overlay_loop (GstElement *element)
}
static void
-gst_overlay_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec)
+gst_overlay_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
{
GstOverlay *overlay;
- overlay = GST_OVERLAY(object);
+ overlay = GST_OVERLAY (object);
switch (prop_id) {
default:
@@ -327,12 +337,12 @@ gst_overlay_set_property (GObject *object, guint prop_id,
}
static void
-gst_overlay_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec)
+gst_overlay_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
{
GstOverlay *overlay;
- overlay = GST_OVERLAY(object);
+ overlay = GST_OVERLAY (object);
switch (prop_id) {
default:
@@ -343,20 +353,14 @@ gst_overlay_get_property (GObject *object, guint prop_id,
static gboolean
-plugin_init (GstPlugin *plugin)
+plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "overlay",
- GST_RANK_NONE, GST_TYPE_OVERLAY);
+ GST_RANK_NONE, GST_TYPE_OVERLAY);
}
-GST_PLUGIN_DEFINE (
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "overlay",
- "Overlay multiple video streams",
- plugin_init,
- VERSION,
- "LGPL",
- GST_PACKAGE,
- GST_ORIGIN
-)
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "overlay",
+ "Overlay multiple video streams",
+ plugin_init, VERSION, "LGPL", GST_PACKAGE, GST_ORIGIN)