Mercurial > hg > xmms-sid
annotate src/xmms-sid.cc @ 40:1788f4ce6a44
Numerous changes towards 0.8
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 19 Jun 2003 22:38:01 +0000 |
parents | 15250dd0c326 |
children | 0f00ebab063d |
rev | line source |
---|---|
1 | 1 /* |
5 | 2 XMMS-SID - SIDPlay input plugin for X MultiMedia System (XMMS) |
1 | 3 |
4 Main source file | |
5 | |
5 | 6 Written by Matti "ccr" Hamalainen <ccr@tnsp.org> |
1 | 7 |
8 This program is free software; you can redistribute it and/or modify | |
9 it under the terms of the GNU General Public License as published by | |
10 the Free Software Foundation; either version 2 of the License, or | |
11 (at your option) any later version. | |
12 | |
13 This program is distributed in the hope that it will be useful, | |
14 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 GNU General Public License for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with this program; if not, write to the Free Software | |
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
21 */ | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
22 extern "C" { |
28 | 23 #include <pthread.h> |
24 #include <stdlib.h> | |
25 #include <string.h> | |
26 #include <stdio.h> | |
27 #include <errno.h> | |
28 #include <xmms/plugin.h> | |
29 #include <xmms/util.h> | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
30 #include <xmms/titlestring.h> |
1 | 31 #include "xmms-sid.h" |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
32 #include "xs_support.h" |
22 | 33 #include "xs_config.h" |
34 #include "xs_length.h" | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
35 } |
28 | 36 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
37 #ifdef HAVE_SIDPLAY1 |
1 | 38 #include <sidplay/player.h> |
39 #include <sidplay/myendian.h> | |
40 #include <sidplay/fformat.h> | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
41 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
42 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
43 #ifdef HAVE_SIDPLAY2 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
44 #include <sidplay/sidplay2.h> |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
45 #endif |
1 | 46 |
47 | |
48 /* | |
28 | 49 * Global variables |
1 | 50 */ |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
51 #ifdef HAVE_SIDPLAY1 |
1 | 52 static struct emuConfig xs_emuConf; |
53 static emuEngine xs_emuEngine; | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
54 typedef sidTune t_xs_tune; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
55 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
56 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
57 #ifdef HAVE_SIDPLAY2 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
58 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
59 |
1 | 60 static pthread_t xs_decode_thread; |
5 | 61 struct t_xs_cfg xs_cfg; |
62 | |
63 struct { | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
64 gboolean isError, isPlaying, allowNext; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
65 gint currSong, nSongs; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
66 t_xs_tune *currTune; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
67 gchar *currFilename; |
5 | 68 } xs_status; |
69 | |
70 pthread_mutex_t xs_mutex = PTHREAD_MUTEX_INITIALIZER; | |
1 | 71 |
72 | |
73 /* | |
5 | 74 * Initialize XMMS-SID |
1 | 75 */ |
76 void xs_init(void) | |
77 { | |
5 | 78 XSDEBUG("xs_init()\n"); |
1 | 79 |
28 | 80 /* Initialize and get configuration */ |
81 memset(&xs_cfg, 0, sizeof(xs_cfg)); | |
82 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
83 xs_read_configuration(); |
28 | 84 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
85 xs_status.isError = FALSE; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
86 xs_status.isPlaying = FALSE; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
87 xs_status.nSongs = 0; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
88 xs_status.currSong = 0; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
89 xs_status.allowNext = TRUE; // Initialize to TRUE to allow first song |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
90 xs_status.currTune = NULL; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
91 xs_status.currFilename = NULL; |
28 | 92 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
93 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
94 /* Try to initialize libSIDPlay(s) */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
95 #ifdef HAVE_SIDPLAY1 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
96 if (!xs_emuEngine || !xs_emuEngine.verifyEndianess()) |
5 | 97 { |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
98 XSERR("Couldn't start SIDPlay1 emulator engine!\n"); |
5 | 99 return; |
1 | 100 } |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
101 #endif |
1 | 102 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
103 #ifdef HAVE_SIDPLAY2 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
104 #endif |
1 | 105 |
22 | 106 /* Read song-length database */ |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
107 if (xs_cfg.songlenDBEnable) |
22 | 108 if (xs_songlen_init() < 0) |
109 { | |
110 XSERR("Error initializing song-length database!\n"); | |
111 } | |
5 | 112 |
113 /* Initialize STIL structures */ | |
114 // FIXME FIXME FIx ME | |
1 | 115 |
5 | 116 /* Create sub-song control window */ |
117 // FIX ME FIXME | |
1 | 118 } |
119 | |
120 | |
121 /* | |
5 | 122 * Shut down XMMS-SID |
123 */ | |
124 void xs_close(void) | |
1 | 125 { |
5 | 126 XSDEBUG("shutting down...\n"); |
1 | 127 |
5 | 128 /* Stop playing */ |
22 | 129 xs_plugin_ip.stop(); |
1 | 130 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
131 /* Shutdown libSIDPlay(s) */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
132 #ifdef HAVE_SIDPLAY1 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
133 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
134 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
135 #ifdef HAVE_SIDPLAY2 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
136 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
137 |
28 | 138 /* Close sub-song control window */ |
139 | |
5 | 140 /* Free allocated memory */ |
22 | 141 xs_songlen_close(); |
1 | 142 |
28 | 143 // FIXME FIXME: STIL-entries |
1 | 144 } |
145 | |
146 | |
147 /* | |
28 | 148 * Check whether the given file is handled by this plugin |
1 | 149 */ |
5 | 150 gint xs_is_our_file(char *fileName) |
1 | 151 { |
5 | 152 char *pcExt; |
153 | |
154 /* Check the filename */ | |
155 if (fileName == NULL) | |
156 return FALSE; | |
157 | |
158 /* Try to detect via libSIDPlay's detection routine, if required */ | |
28 | 159 if (xs_cfg.detectMagic) |
160 { | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
161 #ifdef HAVE_SIDPLAY1 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
162 t_xs_tune *testTune = new sidTune(fileName); |
5 | 163 if (!testTune) return FALSE; |
164 if (!testTune->getStatus()) | |
165 { | |
166 delete testTune; | |
167 return FALSE; | |
168 } | |
169 | |
170 delete testTune; | |
171 return TRUE; | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
172 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
173 #ifdef HAVE_SIDPLAY2 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
174 #endif |
1 | 175 } |
176 | |
5 | 177 /* Detect just by checking filename extension */ |
178 pcExt = strrchr(fileName, '.'); | |
179 if (pcExt) | |
180 { | |
181 pcExt++; | |
182 if (!strcasecmp(pcExt, "psid")) return TRUE; | |
183 if (!strcasecmp(pcExt, "sid")) return TRUE; | |
184 if (!strcasecmp(pcExt, "dat")) return TRUE; | |
185 if (!strcasecmp(pcExt, "inf")) return TRUE; | |
186 if (!strcasecmp(pcExt, "info")) return TRUE; | |
1 | 187 } |
5 | 188 |
189 return FALSE; | |
1 | 190 } |
191 | |
192 | |
193 /* | |
28 | 194 * Main playing thread loop |
1 | 195 */ |
5 | 196 static void *xs_play_loop(void *argPointer) |
1 | 197 { |
5 | 198 /* Don't allow next song to be set yet */ |
199 pthread_mutex_lock(&xs_mutex); | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
200 xs_status.allowNext = FALSE; |
5 | 201 pthread_mutex_unlock(&xs_mutex); |
202 | |
203 | |
204 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
205 XSDEBUG("exiting thread, bye.\n"); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
206 return NULL; |
1 | 207 } |
208 | |
209 | |
210 /* | |
28 | 211 * Start playing the given file |
1 | 212 */ |
5 | 213 void xs_play_file(char *fileName) |
1 | 214 { |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
215 t_xs_tune *newTune; |
5 | 216 struct sidTuneInfo sidInf; |
217 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
218 XSDEBUG("request to load '%s'\n", fileName); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
219 |
5 | 220 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
221 /* Initialize audio output */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
222 XSDEBUG("opening audio output plugin...\n"); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
223 if (!xs_plugin_ip.output->open_audio( |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
224 ((xs_cfg.fmtBitsPerSample == 16) ? FMT_S16_NE : FMT_U8), xs_cfg.fmtFrequency, |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
225 ((xs_cfg.fmtChannels == XS_CHN_MONO) ? 1 : 2))) |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
226 { |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
227 XSERR("Couldn't open audio output plugin!\n"); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
228 delete newTune; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
229 return; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
230 } |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
231 |
1 | 232 |
5 | 233 /* Try to get the tune */ |
234 newTune = new sidTune(fileName); | |
235 if (newTune == NULL) return; | |
236 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
237 XSDEBUG("tune ok, configuring SIDPlay engine\n"); |
1 | 238 |
28 | 239 |
5 | 240 /* Get current configuration */ |
241 xs_emuEngine.getConfig(xs_emuConf); | |
242 | |
243 | |
244 /* Configure channels and stuff */ | |
245 switch (xs_cfg.fmtChannels) { | |
1 | 246 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
247 case XS_CHN_AUTOPAN: |
1 | 248 xs_emuConf.channels = SIDEMU_STEREO; |
249 xs_emuConf.autoPanning = SIDEMU_CENTEREDAUTOPANNING; | |
250 xs_emuConf.volumeControl = SIDEMU_FULLPANNING; | |
251 break; | |
252 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
253 case XS_CHN_STEREO: |
1 | 254 xs_emuConf.channels = SIDEMU_STEREO; |
255 xs_emuConf.autoPanning = SIDEMU_NONE; | |
256 xs_emuConf.volumeControl = SIDEMU_NONE; | |
257 break; | |
258 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
259 case XS_CHN_MONO: |
1 | 260 xs_emuConf.channels = SIDEMU_MONO; |
261 xs_emuConf.autoPanning = SIDEMU_NONE; | |
262 xs_emuConf.volumeControl = SIDEMU_NONE; | |
263 break; | |
264 | |
5 | 265 default: |
266 XSERR("Internal: Invalid channels setting. Possibly corrupted configuration file.\n"); | |
267 delete newTune; | |
268 return; | |
269 } | |
1 | 270 |
28 | 271 |
5 | 272 /* Memory mode settings */ |
273 switch (xs_cfg.memoryMode) { | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
274 case XS_MPU_BANK_SWITCHING: |
1 | 275 xs_emuConf.memoryMode = MPU_BANK_SWITCHING; |
276 break; | |
277 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
278 case XS_MPU_TRANSPARENT_ROM: |
1 | 279 xs_emuConf.memoryMode = MPU_TRANSPARENT_ROM; |
280 break; | |
281 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
282 case XS_MPU_PLAYSID_ENVIRONMENT: |
1 | 283 xs_emuConf.memoryMode = MPU_PLAYSID_ENVIRONMENT; |
284 break; | |
285 | |
5 | 286 default: |
287 XSERR("Internal: Invalid memoryMode setting. Possibly corrupted configuration file.\n"); | |
288 delete newTune; | |
289 return; | |
290 } | |
1 | 291 |
292 | |
5 | 293 /* Clockspeed settings */ |
294 switch (xs_cfg.clockSpeed) { | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
295 case XS_CLOCK_PAL: |
1 | 296 xs_emuConf.clockSpeed = SIDTUNE_CLOCK_PAL; |
297 break; | |
298 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
299 case XS_CLOCK_NTSC: |
1 | 300 xs_emuConf.clockSpeed = SIDTUNE_CLOCK_NTSC; |
301 break; | |
302 | |
5 | 303 default: |
304 XSERR("Internal: Invalid clockSpeed setting. Possibly corrupted configuration file.\n"); | |
305 delete newTune; | |
306 return; | |
307 } | |
308 | |
309 | |
310 /* Configure rest of the emulation */ | |
28 | 311 xs_emuConf.bitsPerSample = xs_cfg.fmtBitsPerSample; |
312 xs_emuConf.frequency = xs_cfg.fmtFrequency; | |
313 xs_emuConf.sampleFormat = SIDEMU_SIGNED_PCM; | |
314 xs_emuConf.mos8580 = xs_cfg.mos8580; | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
315 xs_emuConf.emulateFilter = xs_cfg.emulateFilters; |
28 | 316 xs_emuConf.filterFs = xs_cfg.filterFs; |
317 xs_emuConf.filterFm = xs_cfg.filterFm; | |
318 xs_emuConf.filterFt = xs_cfg.filterFt; | |
5 | 319 |
320 XSDEBUG("configuring engine..\n"); | |
321 | |
28 | 322 |
5 | 323 /* Now set the emulator configuration */ |
324 xs_emuEngine.setConfig(xs_emuConf); | |
325 newTune->getInfo(sidInf); | |
326 | |
28 | 327 |
328 /* Initialize status information */ | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
329 XSDEBUG("initializing and starting playing thread!\n"); |
28 | 330 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
331 xs_status.isError = FALSE; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
332 xs_status.isPlaying = TRUE; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
333 xs_status.allowNext = TRUE; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
334 xs_status.currSong = sidInf.startSong; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
335 xs_status.nSongs = sidInf.songs; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
336 xs_status.currTune = newTune; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
337 |
5 | 338 |
339 /* Start the playing thread! */ | |
340 if (pthread_create(&xs_decode_thread, NULL, xs_play_loop, NULL) < 0) | |
341 { | |
342 XSERR("Couldn't start playing thread! Possible reason reported by system: %s\n", strerror(errno)); | |
343 delete newTune; | |
1 | 344 } |
345 | |
5 | 346 /* Exit */ |
1 | 347 } |
348 | |
349 | |
350 /* | |
5 | 351 * Stop playing |
1 | 352 */ |
353 void xs_stop(void) | |
354 { | |
5 | 355 /* If playing, stop. */ |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
356 XSDEBUG("request to stop.\n"); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
357 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
358 if (xs_status.isPlaying) |
1 | 359 { |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
360 XSDEBUG("stopping...\n"); |
5 | 361 pthread_mutex_lock(&xs_mutex); |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
362 xs_status.isPlaying = 0; |
5 | 363 pthread_mutex_unlock(&xs_mutex); |
364 | |
365 pthread_join(xs_decode_thread, NULL); | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
366 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
367 xs_plugin_ip.output->close_audio(); |
1 | 368 } |
369 } | |
370 | |
371 | |
372 /* | |
5 | 373 * Pause the playing |
1 | 374 */ |
5 | 375 void xs_pause(short pauseState) |
1 | 376 { |
24 | 377 xs_plugin_ip.output->pause(pauseState); |
1 | 378 } |
379 | |
380 | |
381 /* | |
5 | 382 * Set the time-seek position |
383 * (the playing thread will do the "seeking" aka song-change) | |
1 | 384 */ |
5 | 385 void xs_seek(int iTime) |
1 | 386 { |
5 | 387 #ifdef HAVE_SONG_POSITION |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
388 pthread_mutex_lock(&xs_mutex); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
389 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
390 if ((iTime > 0) && (iTime <= xs_status.nSongs) && xs_status.isPlaying) |
5 | 391 { |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
392 xs_status.currSong = iTime; |
1 | 393 } |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
394 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
395 pthread_mutex_unlock(&xs_mutex); |
5 | 396 #endif |
1 | 397 } |
398 | |
399 | |
400 /* | |
5 | 401 * Return the playing "position/time" |
1 | 402 */ |
403 int xs_get_time(void) | |
404 { | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
405 pthread_mutex_lock(&xs_mutex); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
406 if (xs_status.isError) |
5 | 407 return -2; |
408 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
409 if (!xs_status.isPlaying) |
5 | 410 return -1; |
1 | 411 |
5 | 412 #ifdef HAVE_SONG_POSITION |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
413 set_song_position(xs_status.currSong, 1, xs_status.nSongs); |
5 | 414 #endif |
1 | 415 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
416 pthread_mutex_unlock(&xs_mutex); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
417 |
24 | 418 return xs_plugin_ip.output->output_time(); |
1 | 419 } |
420 | |
421 | |
5 | 422 /* |
423 * Return song information | |
424 */ | |
425 void xs_get_song_info(char *songFilename, char **songTitle, int *songLength) | |
426 { | |
427 struct sidTuneInfo sidInf; | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
428 t_xs_tune *testTune = new sidTune(songFilename); |
5 | 429 |
430 /* Check if the tune exists and is readable */ | |
431 if (!testTune) return; | |
432 if (!testTune->getStatus()) | |
433 { | |
434 delete testTune; | |
435 return; | |
436 } | |
437 | |
438 /* Get general tune information */ | |
439 testTune->getInfo(sidInf); | |
440 delete testTune; | |
441 | |
442 /* Get titlestring */ | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
443 *songTitle = NULL; |
5 | 444 |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
445 /* Get song length (in milliseconds), negative if no known length */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
446 *songLength = xs_songlen_get(songFilename, sidInf.startSong) * 1000; |
5 | 447 } |
448 | |
40
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
449 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
450 /* |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
451 * Create the SID-tune description string from the tune's information |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
452 * formatted by the user-specified format-string. |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
453 */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
454 gchar *xs_filetitle_get(gchar *pcFilename, void *pfInfo, gint iSubTune) |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
455 { |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
456 gint i, j, iLength; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
457 gchar *pcResult; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
458 struct sidTuneInfo *finfo = (struct sidTuneInfo *) pfInfo; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
459 #ifdef HAVE_XMMSEXTRA |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
460 TitleInput *ptInput; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
461 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
462 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
463 // FIXME FIXME: get STIL-info |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
464 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
465 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
466 #ifdef HAVE_XMMSEXTRA |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
467 /* Check if the titles are overridden or not */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
468 if (!xs_cfg.titleOverride) |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
469 { |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
470 /* Use generic XMMS titles */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
471 /* XMMS_NEW_TITLEINPUT(ptInput); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
472 * We duplicate and add typecast to the code here due to XMMS's braindead headers |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
473 */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
474 ptInput = (TitleInput *) g_malloc0(sizeof(TitleInput)); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
475 ptInput->__size = XMMS_TITLEINPUT_SIZE; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
476 ptInput->__version = XMMS_TITLEINPUT_VERSION; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
477 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
478 /* Create the input fields */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
479 ptInput->file_name = pcFilename; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
480 ptInput->file_ext = pcFilename; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
481 ptInput->file_path = pcFilename; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
482 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
483 ptInput->track_name = finfo->nameString; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
484 ptInput->track_number = iSubTune; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
485 ptInput->album_name = NULL; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
486 ptInput->performer = finfo->authorString; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
487 xs_strcalloc(&ptInput->date, ""); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
488 ptInput->year = 0; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
489 xs_strcalloc(&ptInput->genre, "SID-tune"); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
490 ptInput->comment = finfo->copyrightString; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
491 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
492 /* Create the string */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
493 pcResult = xmms_get_titlestring(xmms_get_gentitle_format(), ptInput); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
494 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
495 /* Dispose all allocated memory */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
496 g_free(ptInput->date); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
497 g_free(ptInput->genre); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
498 g_free(ptInput); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
499 } else { |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
500 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
501 /* Check the info strings */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
502 if (finfo->numberOfInfoStrings != 3) |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
503 { |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
504 if (finfo->numberOfInfoStrings < 1) |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
505 return 0; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
506 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
507 return g_strdup(finfo->infoString[0]); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
508 } |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
509 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
510 /* Check the format-string for NULL */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
511 if (xs_cfg.titleFormat == NULL) |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
512 return g_strdup_printf("%s - %s", finfo->nameString, finfo->authorString); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
513 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
514 /* Construct the final result info */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
515 for (j = i = 0; i < strlen(xs_cfg.titleFormat); i++) |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
516 { |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
517 if (xs_cfg.titleFormat[i] == '%') |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
518 { |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
519 switch (xs_cfg.titleFormat[++i]) { |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
520 case '1': |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
521 xs_strpcat(&pcResult, &j, finfo->authorString); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
522 break; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
523 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
524 case '2': |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
525 xs_strpcat(&pcResult, &j, finfo->nameString); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
526 break; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
527 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
528 case '3': |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
529 xs_strpcat(&pcResult, &j, finfo->copyrightString); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
530 break; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
531 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
532 case '4': |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
533 xs_strpcat(&pcResult, &j, finfo->formatString); |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
534 break; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
535 } /* case */ |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
536 } else |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
537 pcResult[j++] = xs_cfg.titleFormat[i]; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
538 } |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
539 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
540 pcResult[j] = 0; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
541 #ifdef HAVE_XMMSEXTRA |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
542 } |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
543 #endif |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
544 |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
545 return pcResult; |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
546 } |
1788f4ce6a44
Numerous changes towards 0.8
Matti Hamalainen <ccr@tnsp.org>
parents:
28
diff
changeset
|
547 |