summaryrefslogtreecommitdiff
path: root/libavformat/matroskadec.c
Commit message (Collapse)AuthorAge
* matroskadec: introduce resync function.Sean McGovern2013-06-10
| | | | | | | | | | This allows handling matroska files with errors. Fixes test4.mkv and test7.mkv from the official Matroska test suite, and by extension Bugzilla #62. Based on a patch by Reimar Doffinger <Reimar.Doeffinger@gmx.de> Signed-off-by: Anton Khirnov <anton@khirnov.net>
* matroskadec: export full wavpack blocks.Anton Khirnov2013-05-28
| | | | | This allows us to get rid of demuxer-specific hacks in the decoder and will allow streamcopy from matroska once we have a wavpack muxer.
* matroskadec: silently skip CodecState element.Anton Khirnov2013-05-27
| | | | | mkvmerge apparrently uses it for mpeg1/2 video, but it contains the same information as CodecPrivate, so it can be ignored.
* avformat: Add AVPROBE_SCORE_EXTENSION define and use where appropriateDiego Biurrun2013-05-04
|
* matroska: pass the lace size to the matroska_parse_rm_audioLuca Barbato2013-04-03
| | | | | | | | | | | Each lace must be independent according to the specification. Fix heap-buffer-overflow in matroska_parse_block for corrupted real media in mkv files. Stricter check than fc43c19a567aa945398dccb491d972c11ec2a065 CC: libav-stable@libav.org
* matroska: fix a corner case in ebml-lace parsingLuca Barbato2013-04-03
| | | | | | Make sure we notice when the lace_size[n] is a negative value. CC: libav-stable@libav.org
* matroska: Update the available size after lace parsingDale Curtis2013-04-03
| | | | | | | | | Fix heap-buffer-overflow in matroska_parse_block for corrupted real media in mkv files. CC: libav-stable@libav.org Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* matroskadec: request a read buffer for the wav headerLuca Barbato2013-03-12
| | | | | | Solve an infiniloop. CC: libav-stable@libav.org
* lavf: remove disabled FF_API_R_FRAME_RATE cruftAnton Khirnov2013-03-11
|
* avpacket: use AVBuffer to allow refcounting the packets.Anton Khirnov2013-03-08
| | | | | | This will allow us to avoid copying the packets in many cases. This breaks ABI.
* matroska: Fix use after freeDale Curtis2013-01-11
| | | | | Signed-off-by: Dale Curtis <dalecurtis@chromium.org> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* matroskadec: do not use avpacket internalsAnton Khirnov2012-11-02
|
* avutil: Make LZO decoder code configure-time selectableDiego Biurrun2012-10-25
|
* rmdec: Move SIPR code shared with Matroska demuxer to a separate fileDiego Biurrun2012-10-15
|
* matroskadec: fix a sanity check.Anton Khirnov2012-09-21
|
* matroskadec: only return corrupt packets that actually contain dataAnton Khirnov2012-09-21
| | | | Fixes bug 372.
* matroskadec: properly support BlockDurationLuca Barbato2012-09-19
|
* matroskadec: split frame parsingLuca Barbato2012-09-19
|
* matroskadec: split laces parsingLuca Barbato2012-09-19
|
* matroska: implement support for ProResLuca Barbato2012-09-19
| | | | | | | | Support Matroska native formatting. On demuxing prepend a Frame container atom (32bit big endian encoded frame size and 'icpf' string). On muxing remove it.
* matroska: implement support for ALACMoritz Bunkus2012-09-19
| | | | | | | | | | | | | | | | | | Support Matroska native formatting. On demuxing reconstruct the 36-bytes QuickTime atom that the ALAC decoder expects by prepending the "atom size", "tag" and "tag version" fields missing from the Matroska's CodecPrivate element. On muxing remove the initial 12 bytes Sample files are available: http://www.bunkus.org/videotools/mkvtoolnix/samples/alac/alac-in-matroska.mka and the CoreAudio file it was created from with today's mkvmerge: http://www.bunkus.org/videotools/mkvtoolnix/samples/alac/alac-in-matroska-source.caf Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* matroskadec: validate lace_size when parsedLuca Barbato2012-09-19
| | | | | Stricter validation, explicitly exit on misparsing and some error forwarding from the ebml parsing functions used.
* matroskadec: return meaningful errors in matroska_decode_bufferLuca Barbato2012-09-19
|
* matroskadec: fix incorrect unsigned->signed conversionDale Curtis2012-09-19
|
* matroskadec: refactor matroska_decode_bufferLuca Barbato2012-09-19
| | | | | Make MATROSKA_TRACK_ENCODING_COMP_HEADERSTRIP behave like the other encodings and spare few lines of boilerplate code.
* matroskadec: check realloc in lzo encodingLuca Barbato2012-09-19
| | | | Make all the compression encodings behave the same way.
* matroska: honor error_recognition on unknown doctypesLuca Barbato2012-09-19
|
* Replace all CODEC_ID_* with AV_CODEC_ID_*Anton Khirnov2012-08-07
|
* avformat: Drop pointless "format" from container long namesDiego Biurrun2012-07-30
|
* lavf: deprecate r_frame_rate.Anton Khirnov2012-07-29
| | | | | | | | | | | | | | | | | | | | According to its description, it is supposed to be the LCM of all the frame durations. The usability of such a thing is vanishingly small, especially since we cannot determine it with any amount of reliability. Therefore get rid of it after the next bump. Replace it with the average framerate where it makes sense. FATE results for the wtv and xmv demux tests change. In the wtv case this is caused by the file being corrupted (or possibly badly cut) and containing invalid timestamps. This results in lavf estimating the framerate wrong and making up wrong frame durations. In the xmv case the file contains pts jumps, so again the estimated framerate is far from anything sane and lavf again makes up different frame durations. In some other tests lavf starts making up frame durations from different frame.
* matroskadec: return more correct error code on read error.Anton Khirnov2012-07-22
|
* matroskadec: honor error_recognition when encountering unknown elements.Anton Khirnov2012-07-09
|
* mkv: mark corrupted packets and return themLuca Barbato2012-04-29
| | | | Do return error if memory allocation or I/O fails.
* mkv: forward EMBL block data errorLuca Barbato2012-04-29
| | | | Do not return 0 on error.
* matroska: Clear prev_pkt between seeks.Dale Curtis2012-04-23
| | | | | | | | | | | The new incremental parser doesn't always clear prev_pkt, however the packet queue is cleared when seeking. Which leads to a use-after-free. Verified using Valgrind. Signed-off-by: Dale Curtis <dalecurtis@chromium.org> Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
* matroska: Add incremental parsing of clusters.Dale Curtis2012-04-22
| | | | | | | | | | | | | | | | | | | | | | Reduces the amount of upfront data required for cluster parsing thus decreasing latency on seek and startup. The change in the seek-lavf_mkv FATE test is due to incremental parsing no longer reading as much data as the old parser and thus not having that additional data to generate index entries based on keyframes. Index entries are added correctly as the file is parsed. All FATE tests pass and Chrome has been using this patch for ~6 months without issue. Currently incremental parsing is not supported for files with SSA tracks since they require merging packets between clusters. In this case the code falls back to non-incremental parsing. Signed-off-by: Aaron Colwell <acolwell@chromium.org> Signed-off-by: Dale Curtis <dalecurtis@chromium.org> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* matroska: do not set invalid default duration if frame rate is zeroMans Rullgard2012-04-18
| | | | | | | | | If a video track specifies a zero frame rate (invalid but occurs), this results in a division by zero and subsequent undefined conversion to integer. Setting the default duration from the frame rate only if the latter is greater than zero avoids such problems. Signed-off-by: Mans Rullgard <mans@mansr.com>
* mkv: use av_reduce instead of av_d2q for framerate estimationLuca Barbato2012-04-17
| | | | It avoids some rounding errors.
* mkv: report average framerate as minimal as wellLuca Barbato2012-04-17
| | | | | This is in line with other demuxers and overall seems more correct than assuming codec time base.
* matroska: Fix leaking memory allocated for laces.Dale Curtis2012-04-12
| | | | | | | | | | During error conditions matroska_parse_block may exit without freeing the memory allocated for laces. Found via valgrind: http://pastebin.com/E54k8QFU Signed-off-by: Dale Curtis <dalecurtis@chromium.org> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* matroska: check buffer size for RM-style byte reordering.Ronald S. Bultje2012-03-02
| | | | | Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org
* matroska: don't overwrite string values until read/alloc was succesful.Ronald S. Bultje2012-02-25
| | | | | | | | | | | | This prevents certain tags with a default value assigned to them (as per the EBML syntax elements) from ever being assigned a NULL value. Other parts of the code rely on these being non-NULL (i.e. they don't check for NULL before e.g. using the string in strcmp() or similar), and thus in effect this prevents crashes when reading of such specific tags fails, either because of low memory or because of targeted file corruption. Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org
* Mark mutable static data const where appropriate.Alex Converse2012-02-21
|
* libavformat: Add an ff_ prefix to some lavf internal symbolsMartin Storsjö2012-02-15
| | | | | | | | | | Prefix the functions/tables brktimegm, pcm_read_seek, dv_offset_reset, voc_get_packet, codec_movaudio_tags, codec_movvideo_tags. After this, lavf has no global symbols without the proper prefix. Signed-off-by: Martin Storsjö <martin@martin.st>
* matroskadec: Mark variable as av_unused.Diego Biurrun2012-02-13
| | | | This avoids unused variable warnings when zlib/bzlib are not available.
* lavf: remove AVFormatParameters from AVFormatContext.read_header signatureAnton Khirnov2012-01-27
|
* matroskadec: Pad AAC extradata.Alex Converse2012-01-25
| | | | | | Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org
* matroskadec: Fix a bug where a pointer was cached to an array that might ↵Chris Evans2012-01-05
| | | | | | | | | | later move due to a realloc() Fixes bug #190 Chromium bug #100492 related to CVE-2011-3893 Signed-off-by: Reinhard Tartler <siretart@tauware.de>
* lavu: replace int/float punning functionsMans Rullgard2011-12-11
| | | | | | | | | | | | | | | | | | The existing functions defined in intfloat_readwrite.[ch] are both slow and incorrect (infinities are not handled). This introduces a new header with fast, inline conversion functions using direct union punning assuming an IEEE-754 system, an assumption already made throughout the code. The one use of Intel/Motorola extended 80-bit format is replaced by simpler code sufficient under the present constraints (positive normal values). The old functions are marked deprecated and retained for compatibility. Signed-off-by: Mans Rullgard <mans@mansr.com>
* misc Doxygen markup improvementsDiego Biurrun2011-12-05
|