diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2003-09-13 10:17:49 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2003-09-13 10:17:49 +0000 |
commit | 2434fa9ebfe4854923eafde69a2b9686dbe62d69 (patch) | |
tree | 7ba5f4806ce2549bfb08acdd40280de1268a8b69 | |
parent | 5d76a2e9b378b86190a5ab8f2567ef3ecc7c0847 (diff) | |
download | gstreamer-2434fa9ebfe4854923eafde69a2b9686dbe62d69.tar.gz |
Update, now that I understand interfaces a bit better...
Original commit message from CVS:
Update, now that I understand interfaces a bit better...
-rw-r--r-- | docs/random/interfaces | 76 |
1 files changed, 6 insertions, 70 deletions
diff --git a/docs/random/interfaces b/docs/random/interfaces index a0542a2939..5632c5d3a2 100644 --- a/docs/random/interfaces +++ b/docs/random/interfaces @@ -99,14 +99,6 @@ I'll give two examples. 4) Examples =========== -typedef struct _GstInterface { - /* note: this struct indeed has no parent. That's normal. */ - - /* since we will mostly need a pointer to the element, - * we put it here! */ - GstElement *element; -} GstInterface; - /* This small extra virtual function is here to provide an * interface functionality on a per-instance basis rather * than a per-class basis, which is the case for glib. @@ -263,12 +255,8 @@ typedef struct _GstMixerChannel { flags; } GstMixerChannel; -typedef struct _GstMixer { - GstInterface interface; -} GstMixer; - typedef struct _GstMixerClass { - GstInterfaceClass klass; + GTypeInterface klass; /* virtual functions */ GList * (* list_channels) (GstMixer *mixer); @@ -288,37 +276,13 @@ typedef struct _GstMixerClass { gboolean record); } GstMixerClass; -Name for in the element list: "mixer". Gstaudio provides wrapper -functions for each of the class' virtual functions. Possibly also -some macros for GST_MIXER_CHANNEL_HAS_FLAG () or _get_channel (). - -How to register these? Let's say that we use osssrc as an example. - -typedef struct _GstOssMixer { - GstMixer mixer; - - [.. more? ..] -} GstOssMixer; - -typedef struct _GstOssMixerClass { - GstMixerClass klass; -} GstOssMixerClass; - -[..] - -static void -gst_osssrc_init (GstOssSrc *osssrc) -{ - GstOssMixer *mixer = GST_OSS_MIXER (osssrc); -[..] - gst_interface_set_element (GST_INTERFACE (mixer), - GST_ELEMENT (osssrc)); -[..] -} +libgstmixer.la/so provides wrapper functions for each of the +class' virtual functions. Possibly also some macros for +GST_MIXER_CHANNEL_HAS_FLAG () or _get_channel (). The rest is done automatically, as described in the already- mentioned glib documentation for GInterface. This includes -things like the class_init () function of the GstOssMixerClass, +things like the base_init () function of the GstMixerClass, which fills all the virtual functions for the mixer, and the actual function implementations. The mixer, basically, operates as an element on its own. It gets the file descriptor from @@ -345,38 +309,10 @@ simple as one function. Possible extendible by providing inputs (like in the mixer) and norms, although that only applies to input-to-analog, not to-digital... Others simply return NULL. -#define GST_OVERLAY_CHANNEL_INPUT (1<<0) -#define GST_OVERLAY_CHANNEL_OUTPUT (1<<1) -#define GST_OVERLAY_CHANNEL_TUNER (1<<2) - -typedef struct _GstOverlayChannel { - gchar *label; - gint flags; -} GstOverlayChannel; - -typedef struct _GstOverlayNorm { - gchar *label; - gfloat framerate; -} GstOverlayNorm; - -typedef struct _GstOverlay { - GstInterface interface; -} GstOverlay; - typedef struct _GstOverlayClass { - GstInterfaceClass klass; + GTypeInterface klass; /* virtual functions */ - GList * (* list_channels) (GstOverlay *overlay); - void (* set_channel) (GstOverlay *overlay, - gint index); - gint (* get_channel) (GstOverlay *overlay); - - GList * (* list_norms) (GstOverlay *overlay); - void (* set_norm) (GstOverlay *overlay, - gint index); - gint (* get_norm) (GstOverlay *overlay); - void (* set_xwindowid) (GstOverlay *overlay, XID xid); } GstOverlayClass; |