summaryrefslogtreecommitdiffstats
path: root/ext/timidity/gsttimidity.h
diff options
context:
space:
mode:
authorWouter Paesen <wouter@blue-gate.be>2007-02-08 15:00:00 +0000
committerStefan Kost <ensonic@users.sourceforge.net>2007-02-08 15:00:00 +0000
commitb74d9a063fe36645a86d873d0350e92861ac33a7 (patch)
tree1c70e723e6fa55fbdb46d577063f387dd9b2ac61 /ext/timidity/gsttimidity.h
parent1ec203993dbe255d83f1c984aa42fc5c858ecaed (diff)
downloadgst-plugins-bad-b74d9a063fe36645a86d873d0350e92861ac33a7.tar.gz
gst-plugins-bad-b74d9a063fe36645a86d873d0350e92861ac33a7.tar.bz2
gst-plugins-bad-b74d9a063fe36645a86d873d0350e92861ac33a7.zip
Add timitity midi render plugin (#403992)
Original commit message from CVS: Patch by: Wouter Paesen <wouter@blue-gate.be> * configure.ac: * ext/Makefile.am: * ext/timidity/Makefile.am: * ext/timidity/gsttimidity.c: (gst_timidity_base_init), (gst_timidity_class_init), (gst_timidity_init), (gst_timidity_set_song_options), (gst_timidity_src_convert), (gst_timidity_src_query), (gst_timidity_get_upstream_size), (gst_timidity_get_segment), (gst_timidity_get_new_segment_event), (gst_timidity_src_event), (gst_timidity_activate), (gst_timidity_activatepull), (gst_timidity_allocate_buffer), (gst_timidity_clip_buffer), (gst_timidity_fill_buffer), (gst_timidity_get_buffer), (gst_timidity_loop), (gst_timidity_change_state), (gst_timidity_typefind), (plugin_init): * ext/timidity/gsttimidity.h: Add timitity midi render plugin (#403992)
Diffstat (limited to 'ext/timidity/gsttimidity.h')
-rw-r--r--ext/timidity/gsttimidity.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/ext/timidity/gsttimidity.h b/ext/timidity/gsttimidity.h
new file mode 100644
index 00000000..0e58b3b6
--- /dev/null
+++ b/ext/timidity/gsttimidity.h
@@ -0,0 +1,82 @@
+/*
+ * gsttimdity - timidity plugin for gstreamer
+ *
+ * Copyright 2007 Wouter Paesen <wouter@blue-gate.be>
+ *
+ * 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ *
+ * Wrapper element for libtimidity. This element works in pull
+ * based mode because that's essentially how libtimidity works.
+ * We create a libtimidity stream that operates on the srcpad.
+ * The sinkpad is in pull mode.
+ */
+
+#ifndef __GST_TIMIDITY_H__
+#define __GST_TIMIDITY_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+#include <timidity.h>
+
+G_BEGIN_DECLS
+#define GST_TYPE_TIMIDITY \
+ (gst_timidity_get_type())
+#define GST_TIMIDITY(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_TIMIDITY,GstTimidity))
+#define GST_TIMIDITY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_TIMIDITY,GstTimidityClass))
+#define GST_IS_TIMIDITY(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TIMIDITY))
+#define GST_IS_TIMIDITY_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TIMIDITY))
+typedef struct _GstTimidity GstTimidity;
+typedef struct _GstTimidityClass GstTimidityClass;
+
+struct _GstTimidity
+{
+ GstElement element;
+
+ GstPad *sinkpad, *srcpad;
+
+ /* input stream properties */
+ gint64 mididata_size, mididata_offset;
+ gchar *mididata;
+ gboolean mididata_filled;
+
+ MidSong *song;
+
+ /* output data */
+ gboolean o_new_segment, o_segment_changed, o_seek;
+ GstSegment o_segment[1];
+ gint64 o_len;
+
+ /* format of the stream */
+ MidSongOptions song_options[1];
+ gint64 bytes_per_frame;
+ GstClockTime time_per_frame;
+
+ GstCaps *out_caps;
+};
+
+struct _GstTimidityClass
+{
+ GstElementClass parent_class;
+};
+
+GType gst_timidity_get_type (void);
+
+G_END_DECLS
+#endif /* __GST_TIMIDITY_H__ */