[FFmpeg-cvslog] avformat/matroskadec: Fix probing of unknown-length headers
Andreas Rheinhardt
git at videolan.org
Tue Jul 16 22:50:04 EEST 2019
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Fri May 17 00:30:17 2019 +0200| [9c6d14ab84e424bdb99a1a4b499311ecf8687ceb] | committer: James Almer
avformat/matroskadec: Fix probing of unknown-length headers
matroska_probe did not support the case of an unknown-length EBML header
at all; given that libavformat's Matroska muxer used to produce such
files in the streaming case, support for them has been added.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9c6d14ab84e424bdb99a1a4b499311ecf8687ceb
---
libavformat/matroskadec.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 6eab076538..24d3ef2b74 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1519,9 +1519,14 @@ static int matroska_probe(const AVProbeData *p)
while (n < size)
total = (total << 8) | p->buf[4 + n++];
- /* Does the probe data contain the whole header? */
- if (p->buf_size < 4 + size + total)
- return 0;
+ if (total + 1 == 1ULL << (7 * size)){
+ /* Unknown-length header - simply parse the whole buffer. */
+ total = p->buf_size - 4 - size;
+ } else {
+ /* Does the probe data contain the whole header? */
+ if (p->buf_size < 4 + size + total)
+ return 0;
+ }
/* The header should contain a known document type. For now,
* we don't parse the whole header but simply check for the
More information about the ffmpeg-cvslog
mailing list