From: Toni Wilen Date: Thu, 1 Jan 2015 11:21:22 +0000 (+0200) Subject: Added frequency parameter. X-Git-Tag: 3100~149 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=ba3cf5896b3ea3a947687053c8b7bfb0b9c46b5a;p=francis%2Fwinuae.git Added frequency parameter. --- diff --git a/blkdev_cdimage.cpp b/blkdev_cdimage.cpp index 6ca7e2dc..b4f062bb 100644 --- a/blkdev_cdimage.cpp +++ b/blkdev_cdimage.cpp @@ -26,6 +26,7 @@ #include "mp3decoder.h" #include "cda_play.h" #include "memory.h" +#include "audio.h" #ifdef RETROPLATFORM #include "rp.h" #endif @@ -424,6 +425,11 @@ static void audio_unpack (struct cdunit *cdu, struct cdtoc *t) Sleep (10); } +void audio_state_cda(int ch) +{ + audio_state_cda_state(ch, 0, 0); +} + static void *cdda_play_func (void *v) { int cdda_pos; @@ -446,7 +452,7 @@ static void *cdda_play_func (void *v) bufon[0] = bufon[1] = 0; bufnum = 0; - cda_audio *cda = new cda_audio (num_sectors, 2352); + cda_audio *cda = new cda_audio (num_sectors, 2352, 44100); while (cdu->cdda_play > 0) { diff --git a/cd32_fmv.cpp b/cd32_fmv.cpp index 1aa2bba2..8afa6dff 100644 --- a/cd32_fmv.cpp +++ b/cd32_fmv.cpp @@ -1538,7 +1538,7 @@ addrbank *cd32_fmv_init (uaecptr start) kjmp2_init(&mp2); if (!cda) { - cda = new cda_audio(PCM_SECTORS, KJMP2_SAMPLES_PER_FRAME * 4); + cda = new cda_audio(PCM_SECTORS, KJMP2_SAMPLES_PER_FRAME * 4, 44100); l64111_setvolume(); } if (!mpeg_decoder) { diff --git a/od-win32/blkdev_win32_ioctl.cpp b/od-win32/blkdev_win32_ioctl.cpp index f1f741bb..393c8764 100644 --- a/od-win32/blkdev_win32_ioctl.cpp +++ b/od-win32/blkdev_win32_ioctl.cpp @@ -502,7 +502,7 @@ static void *cdda_play (void *v) bufnum = 0; buffered = 0; - cda_audio *cda = new cda_audio (num_sectors, 2352); + cda_audio *cda = new cda_audio (num_sectors, 2352, 44100); while (ciw->cdda_play > 0) { diff --git a/od-win32/cda_play.cpp b/od-win32/cda_play.cpp index c2fe1d82..7ff511ba 100644 --- a/od-win32/cda_play.cpp +++ b/od-win32/cda_play.cpp @@ -52,7 +52,7 @@ cda_audio::~cda_audio() } } -cda_audio::cda_audio(int num_sectors, int sectorsize) +cda_audio::cda_audio(int num_sectors, int sectorsize, int samplerate) { active = false; playing = false; @@ -69,7 +69,7 @@ cda_audio::cda_audio(int num_sectors, int sectorsize) wav.cbSize = 0; wav.nChannels = 2; - wav.nSamplesPerSec = 44100; + wav.nSamplesPerSec = samplerate; wav.wBitsPerSample = 16; wav.nBlockAlign = wav.wBitsPerSample / 8 * wav.nChannels; wav.nAvgBytesPerSec = wav.nBlockAlign * wav.nSamplesPerSec; @@ -216,9 +216,11 @@ bool cda_audio::play(int bufnum) return true; #else uae_s16 *p = (uae_s16*)(buffers[bufnum]); - for (int i = 0; i < num_sectors * sectorsize / 4; i++) { - p[i * 2 + 0] = p[i * 2 + 0] * volume[0] / 32768; - p[i * 2 + 1] = p[i * 2 + 1] * volume[1] / 32768; + if (volume[0] != 32768 || volume[1] != 32768) { + for (int i = 0; i < num_sectors * sectorsize / 4; i++) { + p[i * 2 + 0] = p[i * 2 + 0] * volume[0] / 32768; + p[i * 2 + 1] = p[i * 2 + 1] * volume[1] / 32768; + } } MMRESULT mmr = waveOutWrite (wavehandle, &whdr[bufnum], sizeof (WAVEHDR)); if (mmr != MMSYSERR_NOERROR) { diff --git a/od-win32/cda_play.h b/od-win32/cda_play.h index 32039414..384243ce 100644 --- a/od-win32/cda_play.h +++ b/od-win32/cda_play.h @@ -24,7 +24,7 @@ private: public: uae_u8 *buffers[2]; - cda_audio(int num_sectors, int sectorsize); + cda_audio(int num_sectors, int sectorsize, int samplerate); ~cda_audio(); void setvolume(int master, int left, int right); bool play(int bufnum);