#include "mp3decoder.h"
#include "cda_play.h"
#include "memory.h"
+#include "audio.h"
#ifdef RETROPLATFORM
#include "rp.h"
#endif
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;
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) {
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) {
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) {
}
}
-cda_audio::cda_audio(int num_sectors, int sectorsize)
+cda_audio::cda_audio(int num_sectors, int sectorsize, int samplerate)
{
active = false;
playing = false;
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;
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) {
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);