diff options
author | John Stebbins <[email protected]> | 2019-08-22 08:27:33 -0700 |
---|---|---|
committer | John Stebbins <[email protected]> | 2019-08-22 08:28:27 -0700 |
commit | 744cab1ab11132f923df047bf432ccf5ec599364 (patch) | |
tree | a1cadf5ce6c314d377e300610cf23bf8371ef513 /contrib | |
parent | caa02925dee43a7dd3cd14e8facb75c7580693a6 (diff) |
ffmpeg: fix seeking in mkv > 2GB
maybe fixes https://github.com/HandBrake/HandBrake/issues/2248
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/ffmpeg/A09-avformat-matroskadec-Fix-seeking.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/ffmpeg/A09-avformat-matroskadec-Fix-seeking.patch b/contrib/ffmpeg/A09-avformat-matroskadec-Fix-seeking.patch new file mode 100644 index 000000000..0fba7fbbd --- /dev/null +++ b/contrib/ffmpeg/A09-avformat-matroskadec-Fix-seeking.patch @@ -0,0 +1,39 @@ +From c294f38c91f440880ffd28fda0eeb1154431ab7e Mon Sep 17 00:00:00 2001 +From: Andreas Rheinhardt <[email protected]> +Date: Sat, 17 Aug 2019 02:27:51 +0200 +Subject: [PATCH] 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 <[email protected]> +Signed-off-by: James Almer <[email protected]> +--- + 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; + } +-- +2.21.0 + |