mirror of
https://github.com/libretro/scummvm.git
synced 2025-05-13 09:36:21 +00:00
cleanup
svn-id: r12116
This commit is contained in:
parent
ee3558b748
commit
cf6a5c0a04
@ -175,64 +175,58 @@ void MusicHandle::stop(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int MusicHandle::readBuffer(int16 *buffer, const int numSamples) {
|
int MusicHandle::readBuffer(int16 *buffer, const int numSamples) {
|
||||||
|
assert(numSamples > 0);
|
||||||
int samples;
|
int samples;
|
||||||
for (samples = 0; samples < numSamples && !endOfData(); samples++)
|
|
||||||
*buffer++ = read();
|
|
||||||
return samples;
|
|
||||||
}
|
|
||||||
|
|
||||||
int16 MusicHandle::read(void) {
|
|
||||||
uint8 in;
|
|
||||||
uint16 delta;
|
|
||||||
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.
|
// Assume the file handle has been correctly positioned already.
|
||||||
|
|
||||||
in = fpMus.readByte();
|
for (samples = 0; samples < numSamples && !endOfData(); samples++) {
|
||||||
delta = GetCompressedAmplitude(in) << GetCompressedShift(in);
|
int16 out;
|
||||||
|
if (_firstTime) {
|
||||||
if (GetCompressedSign(in))
|
_lastSample = fpMus.readUint16LE();
|
||||||
out = _lastSample - delta;
|
_filePos += 2;
|
||||||
else
|
_firstTime = false;
|
||||||
out = _lastSample + delta;
|
out = _lastSample;
|
||||||
|
} else {
|
||||||
_filePos++;
|
uint8 in = fpMus.readByte();
|
||||||
_lastSample = out;
|
uint16 delta = GetCompressedAmplitude(in) << GetCompressedShift(in);
|
||||||
|
|
||||||
if (_looping) {
|
if (GetCompressedSign(in))
|
||||||
if (_filePos >= _fileEnd) {
|
out = _lastSample - delta;
|
||||||
_firstTime = true;
|
else
|
||||||
_filePos = _fileStart;
|
out = _lastSample + delta;
|
||||||
fpMus.seek(_filePos, SEEK_SET);
|
|
||||||
|
_filePos++;
|
||||||
|
_lastSample = out;
|
||||||
|
|
||||||
|
if (_looping) {
|
||||||
|
if (_filePos >= _fileEnd) {
|
||||||
|
_firstTime = true;
|
||||||
|
_filePos = _fileStart;
|
||||||
|
fpMus.seek(_filePos, SEEK_SET);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Fade out at the end of the music, unless it already is.
|
||||||
|
if (_fileEnd - _filePos <= FADE_SAMPLES && _fading <= 0)
|
||||||
|
fadeDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_fading > 0) {
|
||||||
|
if (--_fading == 0) {
|
||||||
|
_streaming = false;
|
||||||
|
_looping = false;
|
||||||
|
}
|
||||||
|
out = (out * _fading) / FADE_SAMPLES;
|
||||||
|
} else if (_fading < 0) {
|
||||||
|
_fading++;
|
||||||
|
out = (out * (FADE_SAMPLES + _fading)) / FADE_SAMPLES;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
// Fade out at the end of the music, unless it already is.
|
*buffer++ = out;
|
||||||
if (_fileEnd - _filePos <= FADE_SAMPLES && _fading <= 0)
|
|
||||||
fadeDown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_fading > 0) {
|
return samples;
|
||||||
if (--_fading == 0) {
|
|
||||||
_streaming = false;
|
|
||||||
_looping = false;
|
|
||||||
}
|
|
||||||
out = (out * _fading) / FADE_SAMPLES;
|
|
||||||
} else if (_fading < 0) {
|
|
||||||
_fading++;
|
|
||||||
out = (out * (FADE_SAMPLES + _fading)) / FADE_SAMPLES;
|
|
||||||
}
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MusicHandle::endOfData(void) const {
|
bool MusicHandle::endOfData(void) const {
|
||||||
|
@ -63,8 +63,7 @@ public:
|
|||||||
void fadeUp(void);
|
void fadeUp(void);
|
||||||
int32 play(const char *filename, uint32 musicId, bool looping);
|
int32 play(const char *filename, uint32 musicId, bool looping);
|
||||||
void stop(void);
|
void stop(void);
|
||||||
virtual int readBuffer(int16 *buffer, const int numSamples);
|
int readBuffer(int16 *buffer, const int numSamples);
|
||||||
int16 read(void);
|
|
||||||
bool endOfData(void) const;
|
bool endOfData(void) const;
|
||||||
// This stream never 'ends'
|
// This stream never 'ends'
|
||||||
bool endOfStream(void) const { return false; }
|
bool endOfStream(void) const { return false; }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user