[Scummvm-cvs-logs] SF.net SVN: scummvm: [26065] scummvm/trunk/engines/sky/music
eriktorbjorn at users.sourceforge.net
eriktorbjorn at users.sourceforge.net
Sat Mar 10 18:39:29 CET 2007
Revision: 26065
http://scummvm.svn.sourceforge.net/scummvm/?rev=26065&view=rev
Author: eriktorbjorn
Date: 2007-03-10 09:39:27 -0800 (Sat, 10 Mar 2007)
Log Message:
-----------
Let the mixer worry about converting mono to stereo.
Modified Paths:
--------------
scummvm/trunk/engines/sky/music/adlibmusic.cpp
scummvm/trunk/engines/sky/music/adlibmusic.h
Modified: scummvm/trunk/engines/sky/music/adlibmusic.cpp
===================================================================
--- scummvm/trunk/engines/sky/music/adlibmusic.cpp 2007-03-10 15:27:27 UTC (rev 26064)
+++ scummvm/trunk/engines/sky/music/adlibmusic.cpp 2007-03-10 17:39:27 UTC (rev 26065)
@@ -47,38 +47,33 @@
_mixer->stopHandle(_soundHandle);
}
-void AdlibMusic::premixerCall(int16 *data, uint len) {
+int AdlibMusic::readBuffer(int16 *data, const int numSamples) {
if (_musicData == NULL) {
// no music loaded
- memset(data, 0, 2 * len * sizeof(int16));
+ memset(data, 0, numSamples * sizeof(int16));
} else if ((_currentMusic == 0) || (_numberOfChannels == 0)) {
// music loaded but not played as of yet
- memset(data, 0, 2 * len * sizeof(int16));
+ memset(data, 0, numSamples * sizeof(int16));
// poll anyways as pollMusic() can activate the music
pollMusic();
- _nextMusicPoll = _sampleRate/50;
+ _nextMusicPoll = _sampleRate / 50;
} else {
uint32 render;
- int16 *origData = data;
- uint origLen = len;
- while (len) {
- render = (len > _nextMusicPoll) ? (_nextMusicPoll) : (len);
- len -= render;
+ int remaining = numSamples;
+ while (remaining) {
+ render = (remaining > _nextMusicPoll) ? (_nextMusicPoll) : (remaining);
+ remaining -= render;
_nextMusicPoll -= render;
YM3812UpdateOne(_opl, data, render);
data += render;
if (_nextMusicPoll == 0) {
pollMusic();
- _nextMusicPoll = _sampleRate/50;
+ _nextMusicPoll = _sampleRate / 50;
}
}
-
- // Convert mono data to stereo
- for (int i = (origLen - 1); i >= 0; i--) {
- origData[2 * i] = origData[2 * i + 1] = origData[i];
- }
}
+ return numSamples;
}
void AdlibMusic::setupPointers(void) {
Modified: scummvm/trunk/engines/sky/music/adlibmusic.h
===================================================================
--- scummvm/trunk/engines/sky/music/adlibmusic.h 2007-03-10 15:27:27 UTC (rev 26064)
+++ scummvm/trunk/engines/sky/music/adlibmusic.h 2007-03-10 17:39:27 UTC (rev 26065)
@@ -36,11 +36,8 @@
~AdlibMusic(void);
// AudioStream API
- int readBuffer(int16 *buffer, const int numSamples) {
- premixerCall(buffer, numSamples / 2);
- return numSamples;
- }
- bool isStereo() const { return true; }
+ int readBuffer(int16 *buffer, const int numSamples);
+ bool isStereo() const { return false; }
bool endOfData() const { return false; }
int getRate() const { return _sampleRate; }
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list