gst-indent
[platform/upstream/gst-plugins-good.git] / ext / mikmod / drv_gst.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdlib.h>
6
7 #include "gstmikmod.h"
8
9 static int buffer_size;
10 static SBYTE *audiobuffer = NULL;
11 extern int need_sync;
12
13 static BOOL
14 mikmod_IsThere (void)
15 {
16   return 1;
17 }
18
19 static BOOL
20 mikmod_Init (void)
21 {
22   buffer_size = 32768;
23   if (!(audiobuffer = (SBYTE *) g_malloc (buffer_size)))
24     return 1;
25
26   return VC_Init ();
27 }
28
29 static void
30 mikmod_Exit (void)
31 {
32   VC_Exit ();
33
34   if (audiobuffer) {
35     g_free (audiobuffer);
36     audiobuffer = NULL;
37   }
38 }
39
40
41 static void
42 mikmod_Update (void)
43 {
44   gint length;
45   GstBuffer *outdata;
46
47   length = VC_WriteBytes ((SBYTE *) audiobuffer, buffer_size);
48
49   outdata = gst_buffer_new ();
50
51   GST_BUFFER_DATA (outdata) = g_memdup (audiobuffer, length);
52   GST_BUFFER_SIZE (outdata) = length;
53
54   GST_BUFFER_TIMESTAMP (outdata) = timestamp;
55
56   if (need_sync == 1) {
57     /* FIXME, send a flush event or something */
58     need_sync = 0;
59   }
60   gst_pad_push (srcpad, GST_DATA (outdata));
61
62 }
63
64 static BOOL
65 mikmod_Reset (void)
66 {
67   VC_Exit ();
68   return VC_Init ();
69 }
70
71
72 MDRIVER drv_gst = {
73   NULL,
74   "mikmod",
75   "mikmod output driver v1.0",
76   0, 255,
77 #if (LIBMIKMOD_VERSION > 0x030106)
78   "mikmod",
79   NULL,
80 #endif
81   mikmod_IsThere,
82   VC_SampleLoad,
83   VC_SampleUnload,
84   VC_SampleSpace,
85   VC_SampleLength,
86   mikmod_Init,
87   mikmod_Exit,
88   mikmod_Reset,
89   VC_SetNumVoices,
90   VC_PlayStart,
91   VC_PlayStop,
92   mikmod_Update,
93   NULL,
94   VC_VoiceSetVolume,
95   VC_VoiceGetVolume,
96   VC_VoiceSetFrequency,
97   VC_VoiceGetFrequency,
98   VC_VoiceSetPanning,
99   VC_VoiceGetPanning,
100   VC_VoicePlay,
101   VC_VoiceStop,
102   VC_VoiceStopped,
103   VC_VoiceGetPosition,
104   VC_VoiceRealVolume
105 };