Daily Archives: January 4, 2015

MKVToolNix v7.5.0 released

Hey,

I’ve released MKVToolNix v7.5.0. It contains a lot of new features dealing with h.265/HEVC video & AAC audio, some minor assorted enhancements and quite a number of bug fixes – especially some which prevent invalid memory access.

One important change for everyone building the packages: libEBML v1.3.1 and libMatroska v1.4.2 are now required. Both have been released today. Note that both libraries have been switched to use an autoconf/automake based build system and provide pkg-config files.

MKVToolNix’ own configure script has therefore been changed to look for the libraries via their respective pkg-config files. This means that the configure options --with-extra-includes and --with-extra-libs don’t affect the detection of libEBML/libMatroska anymore. Instead you can set the environment variable PKG_CONFIG_PATH to where the pkg-config scripts of libEBML and libMatroska are located.

You can download the source code or one of the binaries.

Here’s the full ChangeLog since the previous release:

  • 2015-01-04 Moritz Bunkus <moritz@bunkus.org>
    • Released v7.5.0.
    • mkvmerge: bug fix: If the target drive is full then a nicer error message is output instead of simply crashing due to an uncaught exception.
    • mkvmerge: bug fix: Fixed reading MPEG transport streams in which all PATs and/or PMTs have CRC errors. Fixes #1100.
  • 2015-01-03 Moritz Bunkus <moritz@bunkus.org>
    • all: bug fix: Re-wrote the whole checksum calculation code. This lead to a fix for the Adler32 checksum algorithm that was triggered under certain circumstances. Adler32 is used in mkvinfo’s output (e.g. in summary mode or if checksums are activated), in the h.265/HEVC bitstream and TrueAudio (TTA) file headers.
  • 2015-01-01 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: fixed handling of HE-AACv2 with object type »parametric stereo«.
    • mkvmerge: new feature: implemented support for MP4 DASH files. Implements #1038.
  • 2014-12-31 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: new feature: implemented reading MPEG-H p2/HEVC video tracks from MP4 files. Implements #996.
  • 2014-12-30 Moritz Bunkus <moritz@bunkus.org>
    • mkvinfo: bug fix: track statistics: the duration (and therefore the estimated bitrate) was wrong for files in which the frame with the maximum timecode wasn’t the last frame in the file. Fixes #1092.
    • mkvmerge: new feature: implemented support for AAC in LOAS/LATM multiplex if read from MPEG transport streams or raw LOAS/LATM AAC files. Implements #877 and fixes the underlying issue in #832.
  • 2014-12-21 Moritz Bunkus <moritz@bunkus.org>
    • build system: libEBML and libMatroska have been changed to provide pkg-config configuration files. Therefore MKVToolNix’ build system has been switched to look for both libraries via pkg-config.
  • 2014-12-20 Moritz Bunkus <moritz@bunkus.org>
    • all: bug fix: several fixes have gone into libEBML and libMatroska that prevent illegal memory access (both reading from and writing to unallocated addresses). The bugs #1089 and #1096 have thus been fixed.
  • 2014-12-19 Moritz Bunkus <moritz@bunkus.org>
    • build system: libMatroska v1.4.2 is now required as part of a fix for #1096.
  • 2014-12-18 Moritz Bunkus <moritz@bunkus.org>
    • build system: libEBML v1.3.1 is now required as a part of a fix for #1089.
    • mkvinfo: bug fix: mkvinfo will abort with a proper error message if the first element found is not an EBML head element. See #1089.
    • all: enhancement: improved exception messages that can occur when reading damaged Matroska files to make it clearer for the user what’s happening. See #1089.
  • 2014-12-16 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: new feature: Added support for reading h.265/HEVC video tracks from MPEG transport streams. Implements #995.
    • mkvinfo: bug fix: Timecodes output with ms resolution are now rounded to ms instead of simply cut off. Fixes #1093.

Have fun.

libEBML v1.3.1 & libMatroska v1.4.2 released

I’ve released new versions of libEBML (v1.3.1) and libMatroska (v1.4.2). Download links for the impatient:

Important news about the changes below; so please continue to read:

Both are binary-compatible to their respective previous releases and did not have their .so version bumped.

In both libraries several instances of out-of-bounds memory accesses have been fixed. libEBML will also not catch exceptions thrown by an IOCallback instance anymore.

The build system of both libraries has been switched to use autoconf, automake and libtool. Now you can (or have to) use the normal three-point procedure of »configure && make && make install«. The upside is that this should make cross-compilation easier.

In addition both libraries now come with pkg-config files. These are called »libebml« and »libmatroska« respectively (all lower-case). libMatroska’s configure script already uses pkg-config for determining libEBML’s location. Here the usual environment variables used for pkg-config are used as well (most notably PKG_CONFIG_PATH).

The upcoming release of MKVToolNix will require both of these two new versions.

Here’s libEBML’s ChangeLog since the previous release (v1.3.0):

  • 2015-01-04 Moritz Bunkus <moritz@bunkus.org>
    • Released v1.3.1.
    • EbmlElement::Render(): doesn’t catch exceptions anymore. Instead exceptions generated from the IOCallback class (e.g. if a write failed) are propagated to the caller.
  • 2014-12-21 Moritz Bunkus <moritz@bunkus.org>
    • build system: switched the build system from hand-crafted Makefiles to an autoconf/automake-based system. A pkg-config file will be installed as well; its name is »libebml«. Patch by Jan Engelhardt <jengelh@inai.de>.
  • 2014-12-20 Moritz Bunkus <moritz@bunkus.org>
    • EbmlMaster::Read(): when reading with SCOPE_ALL_DATA only those elements that could successfully be read will be kept (e.g. defective block groups will be dropped).
  • 2014-12-19 Moritz Bunkus <moritz@bunkus.org>
    • EbmlMemoryStream: add a new class for safe memory access that throws exception on failures.
  • 2014-12-18 Moritz Bunkus <moritz@bunkus.org>
    • EbmlMaster: Fixed read() trying to calculate the end position of elements with an unknown size. This avoids endless loops and assertions in certain cases. See https://trac.bunkus.org/ticket/1089

Here’s libMatroska’s ChangeLog since the previous release (v1.3.0):

  • 2015-01-04 Moritz Bunkus <moritz@bunkus.org>
    • Released v1.4.2.
  • 2014-12-21 Moritz Bunkus <moritz@bunkus.org>
    • build system: switched the build system from hand-crafted Makefiles to an autoconf/automake-based system. A pkg-config file will be installed as well; its name is »libmatroska«. Based on a similar patch for libEBML by Jan Engelhardt <jengelh@inai.de>.
  • 2014-12-20 Moritz Bunkus <moritz@bunkus.org>
    • KaxBlock::ReadData(): fixed several instances of unchecked memory access leading to invalid memory access/segmentation faults with invalid or broken data inside block groups/simple blocks.
  • 2014-12-19 Moritz Bunkus <moritz@bunkus.org>
    • KaxBlock::ReadInternalHead(): fixed a off-by-one buffer overflow if with EBML lacing and exactly one frame in the lace.

Have fun.