[FFmpeg-cvslog] libavformat/subfile: Fix SEEK_CUR and SEEK_END seeking

Andreas Rheinhardt git at videolan.org
Tue Aug 13 17:39:58 EEST 2019


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Mon Jul 15 19:48:35 2019 +0200| [de010d229a18fec9af0052af51615b0831945ae0] | committer: Nicolas George

libavformat/subfile: Fix SEEK_CUR and SEEK_END seeking

Up until now, when performing a SEEK_END seek, the subfile protocol
ignored the desired position (relative to EOF) and used the current
absolute offset in the input file instead.

And when performing a SEEK_CUR seek, the current position has been
ignored.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=de010d229a18fec9af0052af51615b0831945ae0
---

 libavformat/subfile.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavformat/subfile.c b/libavformat/subfile.c
index 2f162e0a34..5d8659c8c4 100644
--- a/libavformat/subfile.c
+++ b/libavformat/subfile.c
@@ -116,7 +116,7 @@ static int subfile_read(URLContext *h, unsigned char *buf, int size)
 static int64_t subfile_seek(URLContext *h, int64_t pos, int whence)
 {
     SubfileContext *c = h->priv_data;
-    int64_t new_pos = -1, end;
+    int64_t new_pos, end;
     int ret;
 
     if (whence == AVSEEK_SIZE || whence == SEEK_END) {
@@ -132,10 +132,10 @@ static int64_t subfile_seek(URLContext *h, int64_t pos, int whence)
         new_pos = c->start + pos;
         break;
     case SEEK_CUR:
-        new_pos += pos;
+        new_pos = c->pos + pos;
         break;
     case SEEK_END:
-        new_pos = end + c->pos;
+        new_pos = end + pos;
         break;
     }
     if (new_pos < c->start)



More information about the ffmpeg-cvslog mailing list