ffmpeg | branch: release/4.2 | Andreas Rheinhardt 
<andreas.rheinha...@gmail.com> | Sat Aug 17 02:27:51 2019 +0200| 
[299e0dff1fbc3594eca9e67e18a28331892c23fb] | committer: James Almer

avformat/matroskadec: Fix seeking

matroska_reset_status (a function that is used during seeking (among
other things)) used an int for the return value of avio_seek which
returns an int64_t. Checking the return value then indicated an error
even though the seek was successfull for targets in the range of
2GB-4GB, 6GB-8GB, ... This error implied that the status hasn't been
reset and in particular, the old level was still considered to be in
force, so that ebml_parse returned errors because the newly parsed
elements were of course not contained in the previously active and still
wrongly considered active master element any more.

Addresses ticket #8084.

Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@gmail.com>
Signed-off-by: James Almer <jamr...@gmail.com>
(cherry picked from commit c294f38c91f440880ffd28fda0eeb1154431ab7e)

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

 libavformat/matroskadec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 4e20f15792..1ea9b807e6 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -757,7 +757,7 @@ static int matroska_reset_status(MatroskaDemuxContext 
*matroska,
                                  uint32_t id, int64_t position)
 {
     if (position >= 0) {
-        int err = avio_seek(matroska->ctx->pb, position, SEEK_SET);
+        int64_t err = avio_seek(matroska->ctx->pb, position, SEEK_SET);
         if (err < 0)
             return err;
     }

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to