Mercurial > hg > xmms-sid
diff 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 |
line wrap: on
line diff
--- a/src/xs_sidplay1.cc Wed Jan 14 03:57:04 2004 +0000 +++ b/src/xs_sidplay1.cc Wed Jan 14 21:45:05 2004 +0000 @@ -181,7 +181,7 @@ myPlayer->currEng->getConfig(myPlayer->currConfig); /* Configure channels and stuff */ - switch (xs_cfg.fmtChannels) { + switch (myStatus->audioChannels) { case XS_CHN_AUTOPAN: myPlayer->currConfig.channels = SIDEMU_STEREO; @@ -238,19 +238,48 @@ /* Configure rest of the emulation */ - myPlayer->currConfig.bitsPerSample = xs_cfg.fmtBitsPerSample; - myPlayer->currConfig.frequency = xs_cfg.fmtFrequency; -#ifdef HAVE_UNSIGNEDPCM - myPlayer->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM; -#else - myPlayer->currConfig.sampleFormat = SIDEMU_SIGNED_PCM; -#endif myPlayer->currConfig.mos8580 = xs_cfg.mos8580; myPlayer->currConfig.emulateFilter = xs_cfg.emulateFilters; myPlayer->currConfig.filterFs = xs_cfg.filterFs; myPlayer->currConfig.filterFm = xs_cfg.filterFm; myPlayer->currConfig.filterFt = xs_cfg.filterFt; + myPlayer->currConfig.bitsPerSample = myStatus->audioBitsPerSample; + myPlayer->currConfig.frequency = myStatus->audioFrequency; + + switch (myStatus->audioBitsPerSample) { + case XS_RES_8BIT: + switch (myStatus->audioFormat) { + case FMT_U8: + myPlayer->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM; + break; + + case FMT_S8: + myPlayer->currConfig.sampleFormat = SIDEMU_SIGNED_PCM; + break; + } + break; + + case XS_RES_16BIT: + switch (myStatus->audioFormat) { + case FMT_U16_NE: + case FMT_U16_LE: + case FMT_U16_BE: + myStatus->audioFormat = FMT_U16_NE; + myPlayer->currConfig.sampleFormat = SIDEMU_UNSIGNED_PCM; + break; + + case FMT_S16_NE: + case FMT_S16_LE: + case FMT_S16_BE: + myStatus->audioFormat = FMT_S16_NE; + myPlayer->currConfig.sampleFormat = SIDEMU_SIGNED_PCM; + break; + } + break; + } + + /* Now set the emulator configuration */ if (!myPlayer->currEng->setConfig(myPlayer->currConfig)) {