svn-id: r12116
This commit is contained in:
Max Horn 2004-01-03 19:12:23 +00:00
parent ee3558b748
commit cf6a5c0a04
2 changed files with 46 additions and 53 deletions

View File

@ -175,31 +175,21 @@ void MusicHandle::stop(void) {
}
int MusicHandle::readBuffer(int16 *buffer, const int numSamples) {
assert(numSamples > 0);
int samples;
for (samples = 0; samples < numSamples && !endOfData(); samples++)
*buffer++ = read();
return samples;
}
int16 MusicHandle::read(void) {
uint8 in;
uint16 delta;
// Assume the file handle has been correctly positioned already.
for (samples = 0; samples < numSamples && !endOfData(); samples++) {
int16 out;
if (!_streaming)
return 0;
if (_firstTime) {
_lastSample = fpMus.readUint16LE();
_filePos += 2;
_firstTime = false;
return _lastSample;
}
// Assume the file handle has been correctly positioned already.
in = fpMus.readByte();
delta = GetCompressedAmplitude(in) << GetCompressedShift(in);
out = _lastSample;
} else {
uint8 in = fpMus.readByte();
uint16 delta = GetCompressedAmplitude(in) << GetCompressedShift(in);
if (GetCompressedSign(in))
out = _lastSample - delta;
@ -231,8 +221,12 @@ int16 MusicHandle::read(void) {
_fading++;
out = (out * (FADE_SAMPLES + _fading)) / FADE_SAMPLES;
}
}
return out;
*buffer++ = out;
}
return samples;
}
bool MusicHandle::endOfData(void) const {

View File

@ -63,8 +63,7 @@ public:
void fadeUp(void);
int32 play(const char *filename, uint32 musicId, bool looping);
void stop(void);
virtual int readBuffer(int16 *buffer, const int numSamples);
int16 read(void);
int readBuffer(int16 *buffer, const int numSamples);
bool endOfData(void) const;
// This stream never 'ends'
bool endOfStream(void) const { return false; }