summaryrefslogtreecommitdiffstats
path: root/ext/mikmod/drv_gst.c
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2001-12-23 16:13:33 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2001-12-23 16:13:33 +0000
commit6dfbea50019f4e6e6cd51603ff761862c1a61bea (patch)
treee07df2af9f0a908ab1dad23ed59a870697c68ce0 /ext/mikmod/drv_gst.c
parent754f9a350c13ecbb6df39634d329612db597952e (diff)
adding mikmod
Original commit message from CVS: adding mikmod
Diffstat (limited to 'ext/mikmod/drv_gst.c')
-rw-r--r--ext/mikmod/drv_gst.c97
1 files changed, 97 insertions, 0 deletions
diff --git a/ext/mikmod/drv_gst.c b/ext/mikmod/drv_gst.c
new file mode 100644
index 00000000..1869c8c6
--- /dev/null
+++ b/ext/mikmod/drv_gst.c
@@ -0,0 +1,97 @@
+#include <stdlib.h>
+
+#include "gstmikmod.h"
+
+static int buffer_size;
+static SBYTE *audiobuffer = NULL;
+extern int need_sync;
+
+static BOOL mikmod_IsThere( void )
+{
+ return 1;
+}
+
+static BOOL mikmod_Init( void )
+{
+ buffer_size = 32768;
+ if (!( audiobuffer = ( SBYTE * ) g_malloc( buffer_size ) ))
+ return 1;
+
+ return VC_Init();
+}
+
+static void mikmod_Exit( void )
+{
+ VC_Exit();
+
+ if ( audiobuffer )
+ {
+ g_free(audiobuffer);
+ audiobuffer = NULL;
+ }
+}
+
+
+static void mikmod_Update( void )
+{
+gint length;
+GstBuffer *outdata;
+
+ length = VC_WriteBytes((SBYTE *) audiobuffer, buffer_size);
+
+ outdata = gst_buffer_new();
+
+ GST_BUFFER_DATA( outdata ) = g_memdup( audiobuffer, length );
+ GST_BUFFER_SIZE( outdata ) = length;
+
+ if ( need_sync == 1 )
+ {
+ GST_BUFFER_FLAG_SET (outdata, GST_BUFFER_FLUSH);
+ need_sync = 0 ;
+ }
+ gst_pad_push( srcpad, outdata );
+
+}
+
+static BOOL mikmod_Reset( void )
+{
+ VC_Exit();
+ return VC_Init();
+}
+
+
+MDRIVER drv_gst =
+{
+ NULL,
+ "mikmod",
+ "mikmod output driver v1.0",
+ 0, 255,
+#if (LIBMIKMOD_VERSION > 0x030106)
+ "mikmod",
+ NULL,
+#endif
+ mikmod_IsThere,
+ VC_SampleLoad,
+ VC_SampleUnload,
+ VC_SampleSpace,
+ VC_SampleLength,
+ mikmod_Init,
+ mikmod_Exit,
+ mikmod_Reset,
+ VC_SetNumVoices,
+ VC_PlayStart,
+ VC_PlayStop,
+ mikmod_Update,
+ NULL,
+ VC_VoiceSetVolume,
+ VC_VoiceGetVolume,
+ VC_VoiceSetFrequency,
+ VC_VoiceGetFrequency,
+ VC_VoiceSetPanning,
+ VC_VoiceGetPanning,
+ VC_VoicePlay,
+ VC_VoiceStop,
+ VC_VoiceStopped,
+ VC_VoiceGetPosition,
+ VC_VoiceRealVolume
+};