From 805187b0eb075d1c5fe5f9f958df5c694ba684b0 Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Mon, 23 Aug 2004 09:22:23 +0000 Subject: [PATCH] Use new mixer code for cd image audio Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@1915 --- src/dos/cdrom.h | 4 ++-- src/dos/cdrom_image.cpp | 14 ++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/dos/cdrom.h b/src/dos/cdrom.h index bd81474d..c4382092 100644 --- a/src/dos/cdrom.h +++ b/src/dos/cdrom.h @@ -170,12 +170,12 @@ static CDROM_Interface_Image* images[26]; private: // player -static void CDAudioCallBack(Bit8u *stream, Bit32u len); +static void CDAudioCallBack(Bitu len); int GetTrack(int sector); static struct imagePlayer { CDROM_Interface_Image *cd; - MIXER_Channel *channel; + MixerChannel *channel; SDL_mutex *mutex; Bit8u buffer[8192]; int bufLen; diff --git a/src/dos/cdrom_image.cpp b/src/dos/cdrom_image.cpp index ce2a6f0a..a68ede99 100644 --- a/src/dos/cdrom_image.cpp +++ b/src/dos/cdrom_image.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: cdrom_image.cpp,v 1.1 2004-08-13 19:43:02 qbix79 Exp $ */ +/* $Id: cdrom_image.cpp,v 1.2 2004-08-23 09:22:23 harekiet Exp $ */ #include #include @@ -139,9 +139,8 @@ CDROM_Interface_Image::CDROM_Interface_Image(Bit8u subUnit) player.mutex = SDL_CreateMutex(); if (!player.channel) { player.channel = MIXER_AddChannel(&CDAudioCallBack, 44100, "CDAUDIO"); - MIXER_SetMode(player.channel, MIXER_16STEREO); } - MIXER_Enable(player.channel, true); + player.channel->Enable(true); } refCount++; } @@ -156,7 +155,7 @@ CDROM_Interface_Image::~CDROM_Interface_Image() Sound_Quit(); #endif SDL_DestroyMutex(player.mutex); - MIXER_Enable(player.channel, false); + player.channel->Enable(false); } } @@ -302,12 +301,12 @@ bool CDROM_Interface_Image::ReadSector(Bit8u *buffer, bool raw, unsigned long se return tracks[track].file->read(buffer, seek, length); } -void CDROM_Interface_Image::CDAudioCallBack(Bit8u *stream, Bit32u len) +void CDROM_Interface_Image::CDAudioCallBack(Bitu len) { len *= 4; // 16 bit, stereo if (!len) return; if (!player.isPlaying || player.isPaused) { - memset(stream, 0, len); + player.channel->AddSilence(); return; } @@ -328,8 +327,7 @@ void CDROM_Interface_Image::CDAudioCallBack(Bit8u *stream, Bit32u len) } } SDL_mutexV(player.mutex); - - memcpy(stream, player.buffer, len); + player.channel->AddSamples_s16(len/4,(Bit16s *)player.buffer); memmove(player.buffer, &player.buffer[len], player.bufLen - len); player.bufLen -= len; }