comparison src/xs_sidplay1.cc @ 127:ddb513bd2610

Improved audio format support, now supported formats are "queried" from emulator engines. Preparing for NanoSID-support, since it's the worst in this sense.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 14 Jan 2004 21:45:05 +0000
parents fe83646e6baa
children a3f522cbe787
comparison
equal deleted inserted replaced
126:4f4dba82011e 127:ddb513bd2610
179 179
180 /* Get current configuration */ 180 /* Get current configuration */
181 myPlayer->currEng->getConfig(myPlayer->currConfig); 181 myPlayer->currEng->getConfig(myPlayer->currConfig);
182 182
183 /* Configure channels and stuff */ 183 /* Configure channels and stuff */
184 switch (xs_cfg.fmtChannels) { 184 switch (myStatus->audioChannels) {
185 185
186 case XS_CHN_AUTOPAN: 186 case XS_CHN_AUTOPAN:
187 myPlayer->currConfig.channels = SIDEMU_STEREO; 187 myPlayer->currConfig.channels = SIDEMU_STEREO;
188 myPlayer->currConfig.autoPanning = SIDEMU_CENTEREDAUTOPANNING; 188 myPlayer->currConfig.autoPanning = SIDEMU_CENTEREDAUTOPANNING;
189 myPlayer->currConfig.volumeControl = SIDEMU_FULLPANNING; 189 myPlayer->currConfig.volumeControl = SIDEMU_FULLPANNING;
236 break; 236 break;
237 } 237 }
238 238
239 239
240 /* Configure rest of the emulation */ 240 /* Configure rest of the emulation */
241 myPlayer->currConfig.bitsPerSample = xs_cfg.fmtBitsPerSample;
242 myPlayer->currConfig.frequency = xs_cfg.fmtFrequency;
243 #ifdef HAVE_UNSIGNEDPCM
244 myPlayer->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM;
245 #else
246 myPlayer->currConfig.sampleFormat = SIDEMU_SIGNED_PCM;
247 #endif
248 myPlayer->currConfig.mos8580 = xs_cfg.mos8580; 241 myPlayer->currConfig.mos8580 = xs_cfg.mos8580;
249 myPlayer->currConfig.emulateFilter = xs_cfg.emulateFilters; 242 myPlayer->currConfig.emulateFilter = xs_cfg.emulateFilters;
250 myPlayer->currConfig.filterFs = xs_cfg.filterFs; 243 myPlayer->currConfig.filterFs = xs_cfg.filterFs;
251 myPlayer->currConfig.filterFm = xs_cfg.filterFm; 244 myPlayer->currConfig.filterFm = xs_cfg.filterFm;
252 myPlayer->currConfig.filterFt = xs_cfg.filterFt; 245 myPlayer->currConfig.filterFt = xs_cfg.filterFt;
253 246
247 myPlayer->currConfig.bitsPerSample = myStatus->audioBitsPerSample;
248 myPlayer->currConfig.frequency = myStatus->audioFrequency;
249
250 switch (myStatus->audioBitsPerSample) {
251 case XS_RES_8BIT:
252 switch (myStatus->audioFormat) {
253 case FMT_U8:
254 myPlayer->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM;
255 break;
256
257 case FMT_S8:
258 myPlayer->currConfig.sampleFormat = SIDEMU_SIGNED_PCM;
259 break;
260 }
261 break;
262
263 case XS_RES_16BIT:
264 switch (myStatus->audioFormat) {
265 case FMT_U16_NE:
266 case FMT_U16_LE:
267 case FMT_U16_BE:
268 myStatus->audioFormat = FMT_U16_NE;
269 myPlayer->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM;
270 break;
271
272 case FMT_S16_NE:
273 case FMT_S16_LE:
274 case FMT_S16_BE:
275 myStatus->audioFormat = FMT_S16_NE;
276 myPlayer->currConfig.sampleFormat = SIDEMU_SIGNED_PCM;
277 break;
278 }
279 break;
280 }
281
282
254 /* Now set the emulator configuration */ 283 /* Now set the emulator configuration */
255 if (!myPlayer->currEng->setConfig(myPlayer->currConfig)) 284 if (!myPlayer->currEng->setConfig(myPlayer->currConfig))
256 { 285 {
257 XSERR("Emulator engine configuration failed!\n"); 286 XSERR("Emulator engine configuration failed!\n");
258 return FALSE; 287 return FALSE;