This commit is contained in:
kanjitalk755
2025-01-07 17:28:41 +09:00
parent f39b6e8e62
commit d59278dd96
2 changed files with 16 additions and 2 deletions

View File

@@ -243,7 +243,14 @@ static void stream_func(void *arg, uint8 *stream, int stream_len)
goto silence;
// Send data to audio device
Mac2Host_memcpy(audio_mix_buf, ReadMacInt32(apple_stream_info + scd_buffer), work_size);
bool dbl = AudioStatus.channels == 2 &&
ReadMacInt16(apple_stream_info + scd_numChannels) == 1 &&
ReadMacInt16(apple_stream_info + scd_sampleSize) == 8;
uint8 *src = Mac2HostAddr(ReadMacInt32(apple_stream_info + scd_buffer));
if (dbl)
for (int i = 0; i < work_size; i += 2)
audio_mix_buf[i] = audio_mix_buf[i + 1] = src[i >> 1];
else memcpy(audio_mix_buf, src, work_size);
memset((uint8 *)stream, silence_byte, stream_len);
SDL_MixAudio(stream, audio_mix_buf, work_size, get_audio_volume());

View File

@@ -276,7 +276,14 @@ static void SDLCALL stream_func(void *, SDL_AudioStream *stream, int stream_len,
break;
uint8 buf[work_size];
if (!main_mute && !speaker_mute) {
Mac2Host_memcpy(buf, ReadMacInt32(apple_stream_info + scd_buffer), work_size);
bool dbl = AudioStatus.channels == 2 &&
ReadMacInt16(apple_stream_info + scd_numChannels) == 1 &&
ReadMacInt16(apple_stream_info + scd_sampleSize) == 8;
uint8 *src = Mac2HostAddr(ReadMacInt32(apple_stream_info + scd_buffer));
if (dbl)
for (int i = 0; i < work_size; i += 2)
buf[i] = buf[i + 1] = src[i >> 1];
else memcpy(buf, src, work_size);
} else {
memset(buf, silence_byte, work_size);
}