Commit a1b430cb authored by Max Kellermann's avatar Max Kellermann

oggvorbis: don't detect OGG header if stream is not seekable

If the input stream is not seekable, the try_decode() function consumes valuable data, which is not available to the decode() function anymore. This means that the decode() function does not parse the header correctly. Better skip the detection if we cannot seek. Or implement better buffering, something like unread() or buffered rewind().
parent 7bbca084
......@@ -328,6 +328,11 @@ static MpdTag *oggflac_TagDup(char *file)
static unsigned int oggflac_try_decode(InputStream * inStream)
{
if (!inStream->seekable)
/* we cannot seek after the detection, so don't bother
checking */
return 1;
return (ogg_stream_type_detect(inStream) == FLAC) ? 1 : 0;
}
......
......@@ -372,6 +372,11 @@ static MpdTag *oggvorbis_TagDup(char *file)
static unsigned int oggvorbis_try_decode(InputStream * inStream)
{
if (!inStream->seekable)
/* we cannot seek after the detection, so don't bother
checking */
return 1;
return (ogg_stream_type_detect(inStream) == VORBIS) ? 1 : 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment