From 62c2ffe709c84bed65051e2b40f0322e79db8af8 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 18 Mar 2002 04:41:35 +0000 Subject: s/gst_element_install_std_props/gst_element_class_install_std_props/ -- it just makes more sense that way added jack ... Original commit message from CVS: * s/gst_element_install_std_props/gst_element_class_install_std_props/ -- it just makes more sense that way * added jack element, doesn't quite work right yet but i didn't want to lose the work -- it does build, register, and attempt to run though * imposed some restrictions on the naming of request pads to better allow for reverse parsing * added '%s' to reverse parsing * added new bin flag to indicate that it is self-iterating, and some lame code in gst-launch to test it out * fixen on launch-gui * added pkg-config stuff for the editor's libs --- ext/jack/gstjack.h | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 ext/jack/gstjack.h (limited to 'ext/jack/gstjack.h') diff --git a/ext/jack/gstjack.h b/ext/jack/gstjack.h new file mode 100644 index 00000000..da6940f2 --- /dev/null +++ b/ext/jack/gstjack.h @@ -0,0 +1,115 @@ +/* + Copyright (C) 2002 Andy Wingo + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library 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 Library General Public + License along with this library; if not, write to the Free + Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __GST_JACK_H__ +#define __GST_JACK_H__ + +#include +#include +#include + + +#define GST_JACK(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, GST_TYPE_JACK, GstJack) +#define GST_JACK_CLASS(klass) G_TYPE_CHECK_CLASS_CAST(klass, GST_TYPE_JACK, GstJackClass) +#define GST_IS_JACK(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, GST_TYPE_JACK) +#define GST_IS_JACK_CLASS(klass) G_TYPE_CHECK_CLASS_TYPE(klass, GST_TYPE_JACK) +#define GST_TYPE_JACK gst_jack_get_type() + +#define GST_JACK_SINK(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, GST_TYPE_JACK_SINK, GstJack) +#define GST_JACK_SINK_CLASS(klass) G_TYPE_CHECK_CLASS_CAST(klass, GST_TYPE_JACK_SINK, GstJackClass) +#define GST_IS_JACK_SINK(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, GST_TYPE_JACK_SINK) +#define GST_IS_JACK_SINK_CLASS(klass) G_TYPE_CHECK_CLASS_TYPE(klass, GST_TYPE_JACK_SINK) +#define GST_TYPE_JACK_SINK gst_jack_sink_get_type() + +#define GST_JACK_SRC(obj) G_TYPE_CHECK_INSTANCE_CAST(obj, GST_TYPE_JACK_SRC, GstJack) +#define GST_JACK_SRC_CLASS(klass) G_TYPE_CHECK_CLASS_CAST(klass, GST_TYPE_JACK_SRC, GstJackClass) +#define GST_IS_JACK_SRC(obj) G_TYPE_CHECK_INSTANCE_TYPE(obj, GST_TYPE_JACK_SRC) +#define GST_IS_JACK_SRC_CLASS(klass) G_TYPE_CHECK_CLASS_TYPE(klass, GST_TYPE_JACK_SRC) +#define GST_TYPE_JACK_SRC gst_jack_src_get_type() + +#define GST_JACK_PAD(l) ((GstJackPad*)l->data) /* l is a GList */ + + +typedef struct _GstJack GstJack; +typedef struct _GstJackClass GstJackClass; +typedef GstJack GstJackSink; +typedef GstJackClass GstJackSinkClass; +typedef GstJack GstJackSrc; +typedef GstJackClass GstJackSrcClass; + + +enum { + GST_JACK_OPEN = GST_ELEMENT_FLAG_LAST, + GST_JACK_ACTIVE, + GST_JACK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 3, +}; + + +typedef struct { + GstPad *pad; + void *data; + const gchar *name; + const gchar *peer_name; + GstByteStream *bs; + jack_port_t *port; +} GstJackPad; + +typedef struct { + GstBin *manager; + + jack_client_t *client; + gint default_new_port_number; + + /* lists of GstJackPads */ + GList *sink_pads; + GList *src_pads; + + gchar *client_name; + + guint rate; + nframes_t nframes; + + guint refcount; +} GstJackClient; + +struct _GstJack { + GstElement element; + + /* list of GstJackPads */ + GList *pads; + + /* for convenience */ + GstPadDirection direction; + + gchar *port_name_prefix; + + /* there is exactly one client per managing bin */ + GstJackClient *client; +}; + +struct _GstJackClass { + GstElementClass parent_class; +}; + + +GType gst_jack_get_type (void); +GType gst_jack_sink_get_type (void); +GType gst_jack_src_get_type (void); + + +#endif /* __GST_JACK_H__ */ -- cgit v1.2.1