Pre-emptively work around an issue in libvorbis 1.3.4 and older when rewinding some Ogg Theora videos.

May (or may not) also fix crash issues when rewinding Ogg files on some systems...
This commit is contained in:
Alex Szpakowski
2015-08-27 21:00:18 -03:00
parent d3d970b925
commit 1c0870ee29
+11 -2
View File
@@ -210,7 +210,14 @@ int VorbisDecoder::decode()
bool VorbisDecoder::seek(float s)
{
int result = ov_time_seek(&handle, s);
int result = 0;
// Avoid ov_time_seek (which calls ov_pcm_seek) when seeking to 0, to avoid
// a bug in libvorbis <= 1.3.4 when seeking to PCM 0 in multiplexed streams.
if (s <= 0.000001)
result = ov_raw_seek(&handle, 0);
else
result = ov_time_seek(&handle, s);
if (result == 0)
{
@@ -223,7 +230,9 @@ bool VorbisDecoder::seek(float s)
bool VorbisDecoder::rewind()
{
int result = ov_pcm_seek(&handle, 0);
// Avoid ov_time_seek to avoid a bug in libvorbis <= 1.3.4 when seeking to
// PCM 0 in multiplexed streams.
int result = ov_raw_seek(&handle, 0);
if (result == 0)
{