diff options
author | Thomas Vander Stichele <thomas@apestaart.org> | 2001-12-23 16:13:33 +0000 |
---|---|---|
committer | Thomas Vander Stichele <thomas@apestaart.org> | 2001-12-23 16:13:33 +0000 |
commit | 6dfbea50019f4e6e6cd51603ff761862c1a61bea (patch) | |
tree | e07df2af9f0a908ab1dad23ed59a870697c68ce0 /ext/mikmod/drv_gst.c | |
parent | 754f9a350c13ecbb6df39634d329612db597952e (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.c | 97 |
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 +}; |