From 9b3862a1949c9cc73e5ab0ef79253bb109c6035f Mon Sep 17 00:00:00 2001 From: Julien Moutte Date: Sun, 14 Sep 2003 12:21:06 +0000 Subject: Adding GstVideoSink object which will be used for video sink's subclassing. Original commit message from CVS: Adding GstVideoSink object which will be used for video sink's subclassing. --- gst-libs/gst/video/videosink.h | 102 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 gst-libs/gst/video/videosink.h (limited to 'gst-libs/gst/video/videosink.h') diff --git a/gst-libs/gst/video/videosink.h b/gst-libs/gst/video/videosink.h new file mode 100644 index 00000000..9f82bb1f --- /dev/null +++ b/gst-libs/gst/video/videosink.h @@ -0,0 +1,102 @@ +/* + * GStreamer Video sink. + * + * Copyright (C) <2003> Julien Moutte + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef __GST_VIDEOSINK_H__ +#define __GST_VIDEOSINK_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define GST_TYPE_VIDEOSINK (gst_videosink_get_type()) +#define GST_VIDEOSINK(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_VIDEOSINK, GstVideoSink)) +#define GST_VIDEOSINK_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_VIDEOSINK, GstVideoSink)) +#define GST_IS_VIDEOSINK(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_VIDEOSINK)) +#define GST_IS_VIDEOSINK_CLASS(obj) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_VIDEOSINK)) +#define GST_VIDEOSINK_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_VIDEOSINK, GstVideoSinkClass)) + +#define GST_VIDEOSINK_PAD(obj) (GST_VIDEOSINK (obj)->sinkpad) +#define GST_VIDEOSINK_WIDTH(obj) (GST_VIDEOSINK (obj)->width) +#define GST_VIDEOSINK_HEIGHT(obj) (GST_VIDEOSINK (obj)->height) +#define GST_VIDEOSINK_CLOCK(obj) (GST_VIDEOSINK (obj)->clock) + +typedef struct _GstVideoSink GstVideoSink; +typedef struct _GstVideoSinkClass GstVideoSinkClass; + +struct _GstVideoSink { + GstElement element; + + GstPad *sinkpad; + + gpointer video_out; + + gint width, height; + gint frames_displayed; + guint64 frame_time; + + GstClock *clock; + + GstCaps *formats; +}; + +struct _GstVideoSinkClass { + GstElementClass parent_class; + + /* public virtual methods */ + void (*set_video_out) (GstVideoSink *videosink, gpointer video_out); + void (*push_ui_event) (GstVideoSink *videosink, GstEvent *event); + void (*set_geometry) (GstVideoSink *videosink, gint width, gint height); + + /* signals */ + void (*have_video_out) (GstVideoSink *element, gpointer video_out); + void (*have_size) (GstVideoSink *element, gint width, gint height); + void (*frame_displayed) (GstVideoSink *element); +}; + +GType gst_videosink_get_type (void); + +/* public virtual methods */ +void gst_video_sink_set_video_out (GstVideoSink *videosink, gpointer video_out); +void gst_video_sink_push_ui_event (GstVideoSink *videosink, GstEvent *event); +void gst_video_sink_set_geometry (GstVideoSink *videosink, gint width, + gint height); + +/* public methods to fire signals */ +void gst_video_sink_got_video_out (GstVideoSink *videosink, gpointer video_out); +void gst_video_sink_got_video_size (GstVideoSink *videosink, + gint width, gint height); +void gst_video_sink_frame_displayed (GstVideoSink *videosink); + +/* public methods */ +void gst_video_sink_get_geometry (GstVideoSink *videosink, + gint *width, gint *height); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __GST_VIDEOSINK_H__ */ -- cgit v1.2.1