diff options
author | Max Kellermann <max@duempel.org> | 2008-11-16 20:25:31 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-11-16 20:25:31 +0100 |
commit | 8882f062000ec6f86d932eee7c948d1369901c03 (patch) | |
tree | 3fead978c89f4a79775876012e6d077f7817a216 | |
parent | 9c4e97a61b59105c9b539faca272305bbb234c17 (diff) | |
download | mpd-8882f062000ec6f86d932eee7c948d1369901c03.tar.gz mpd-8882f062000ec6f86d932eee7c948d1369901c03.tar.xz mpd-8882f062000ec6f86d932eee7c948d1369901c03.zip |
ffmpeg: fixed AVSEEK_SIZE
With whence==AVSEEK_SIZE, the seek function should return the file
size, not the current offset. Check the return value of
input_stream_seek().
-rw-r--r-- | src/decoder/ffmpeg_plugin.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/decoder/ffmpeg_plugin.c b/src/decoder/ffmpeg_plugin.c index 46a11af59..e1505e884 100644 --- a/src/decoder/ffmpeg_plugin.c +++ b/src/decoder/ffmpeg_plugin.c @@ -89,9 +89,15 @@ static int mpd_ffmpeg_read(URLContext *h, unsigned char *buf, int size) static int64_t mpd_ffmpeg_seek(URLContext *h, int64_t pos, int whence) { struct ffmpeg_stream *stream = (struct ffmpeg_stream *) h->priv_data; - if (whence != AVSEEK_SIZE) { //only ftell - (void) input_stream_seek(stream->input, pos, whence); - } + bool ret; + + if (whence == AVSEEK_SIZE) + return stream->input->size; + + ret = input_stream_seek(stream->input, pos, whence); + if (!ret) + return -1; + return stream->input->offset; } |