Mercurial > hg > xmms-sid
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; |