diff options
author | Johannes Schickel | 2010-01-06 16:11:21 +0000 |
---|---|---|
committer | Johannes Schickel | 2010-01-06 16:11:21 +0000 |
commit | 8c79b6f6ee2cb11e1352df5fa4faf70903eca364 (patch) | |
tree | 88477b6483124eed9637f9f321d91009057119d5 /sound | |
parent | c58c870159fb1b337fd10d154381222eb5557294 (diff) | |
download | scummvm-rg350-8c79b6f6ee2cb11e1352df5fa4faf70903eca364.tar.gz scummvm-rg350-8c79b6f6ee2cb11e1352df5fa4faf70903eca364.tar.bz2 scummvm-rg350-8c79b6f6ee2cb11e1352df5fa4faf70903eca364.zip |
Adapt FLAC and Vorbis to use calculateSampleOffset in their seek implementation.
svn-id: r47085
Diffstat (limited to 'sound')
-rw-r--r-- | sound/flac.cpp | 4 | ||||
-rw-r--r-- | sound/vorbis.cpp | 10 |
2 files changed, 3 insertions, 11 deletions
diff --git a/sound/flac.cpp b/sound/flac.cpp index 28db39f9f3..b592468baf 100644 --- a/sound/flac.cpp +++ b/sound/flac.cpp @@ -335,9 +335,7 @@ bool FlacInputStream::seekAbsolute(FLAC__uint64 sample) { bool FlacInputStream::seek(const Timestamp &where) { _sampleCache.bufFill = 0; _sampleCache.bufReadPos = NULL; - // Compute the start/end sample (we use floating point arithmetics here to - // avoid overflows). - return seekAbsolute((FLAC__uint64)(where.msecs() * (_streaminfo.sample_rate / 1000.0))); + return seekAbsolute((FLAC__uint64)calculateSampleOffset(where, _streaminfo.sample_rate)); } int FlacInputStream::readBuffer(int16 *buffer, const int numSamples) { diff --git a/sound/vorbis.cpp b/sound/vorbis.cpp index 2fd7c978be..1ed608c0b5 100644 --- a/sound/vorbis.cpp +++ b/sound/vorbis.cpp @@ -240,14 +240,8 @@ int VorbisInputStream::readBuffer(int16 *buffer, const int numSamples) { } bool VorbisInputStream::seek(const Timestamp &where) { -#ifdef USE_TREMOR - ogg_int64_t pos = where.msecs(); -#else - double pos = where.msecs() / 1000.0; -#endif - - int res = ov_time_seek(&_ovFile, pos); - if (res < 0) { + int res = ov_pcm_seek(&_ovFile, calculateSampleOffset(where, getRate())); + if (res) { warning("Error seeking in Vorbis stream (%d)", res); _pos = _bufferEnd; return false; |