Tag Archives: Matroska

MKVToolNix v24.0.0 released

Hey.

time for MKVToolNix v24.0.0, a release that’s on the smaller side regarding the number of changes: nothing major, a number of smaller bugs squashed, a couple of enhancements.

AV1 support hasn’t changed as the bitstream format still hasn’t been finalized.

To my users on Debian and Ubuntu: just a friendly reminder that the layout of my APT repositories was changed in April. If you haven’t done so, you’ll have to update your sources.list entry accordingly. Read more about that in this blog post.

You can download the source code or one of the binaries. The Windows and macOS binaries are available already. The Linux binaries are stil being built and will be available of the course of the next couple of hours.

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: MP4 reader: improved the detection of edit lists consisting of two
    identical entries, each spanning the file’s duration as given in the movie
    header atom. The second entry is ignored in such cases. See #2306.
  • mkvmerge: JSON identification: the "display unit" video track property is
    now reported as display_unit. The JSON schema has been bumped to v11 for
    this change.
  • mkvmerge, mkvextract: AVC/h.264: empty NALUs will now be removed.
  • mkvextract: VobSub extraction: empty SPU packets will now be dropped during
    extraction as other tools such as MP4Box cannot handle them
    correctly. Implements #2293.

Bug fixes

  • mkvmerge: E-AC-3 parser: fixed determining the number of channels for
    streams that contain an AC-3 core with dependent E-AC-3 frames. Fixes #2283.
  • mkvmerge: Matroska reader: fixed mkvmerge buffering the whole file if a
    video track is multiplexed that consists of only one or a few frames. Fixes
    #2304.
  • mkvmerge: the "display unit" video track property will now be kept if it is
    set in the source file. Fixes #2317.
  • MKVToolNix GUI: multiplexer: when scanning playlists, all playlists were
    offered for selection regardless of the value of the "minimum playlist
    duration" setting. Fixes #2299.
  • MKVToolNix GUI: multiplexer: deriving track languages from file names: the
    regular sub-expressions for ISO 639-1 codes could match on empty strings,
    too, causing matches in wrong places and hence no language being recognized
    in certain situations. Fixes #2298.
  • MKVToolNix GUI: header editor: fixed a crash when saving the file fails
    (e.g. because it isn’t writable). Fixes #2319.
  • MKVToolNix GUI: header editor: the editor was wrongfully claiming that
    mandatory elements with default values cannot be removed in the "status"
    text. Fixes #2320.
  • MKVToolNix GUI: preferences: on macOS & Linux the setting "enable copying
    tracks by their type" wasn’t restored on program start. Fixes #2297.

Other changes

  • Niels Lohmann’s JSON library: the bundled version has been updated from
    v1.1.0 (git revision 54d3cab) to v3.1.1 (git revision g183390c1).
  • pugixml library: the bundled version has been updated from v1.8 to v1.9 (git
    revision e584ea3).

Have fun :)

MKVToolNix v23.0.0 released

Hey.

MKVToolNix v23.0.0 is out containing a moderate number of enhancements and bug fixes.

About AV1 support: even though the previous release was the first to support AV1, keep in mind that neither the bitstream format nor the method of storage in MP4, WebM and Matroska has been finalized yet. I’ve therefore decided to disable AV1 support by default. You have to enable it manually by passing --engage enable_av1 to mkvmerge. mkvmerge can still identify AV1 without that option, but it’ll refuse to multiplex it.

Note further that only supported bitstream format is the one that was active on 2018-05-02.

To my users on Debian and Ubuntu: the layout of my APT repositories was changed in April. You’ll have to update your sources.list entry accordingly. Read more about that in this blog post.

You can download the source code or one of the binaries. The Windows and macOS binaries are available already. The Linux binaries are stil being built and will be available of the course of the next couple of hours.

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: input: format detection uses file-extension to improve performance
    and to give preference when several formats match.
  • mkvmerge: AV1: added support for reading AV1 video from Open Bitstream Unit
    files.
  • mkvmerge: AV1: adjusted the code for the AV1 bitstream format changes made
    up to 2018-05-02 (git revision d14e878).
  • mkvmerge: MP4 reader: if a track has an edit list with two identical
    entries, each spanning the file’s duration as given in the movie header
    atom, then the second entry will now be ignored. Improves the handling of
    files with bogus data; see #2196 and #2270.
  • MKVToolNix GUI: multiplexer: added options to only enable tracks of certain
    types by default. Implements #2271.
  • MKVToolNix GUI: multiplexer: added an option to enable dialog normalization
    gain removal by default for all audio tracks for which the operation is
    supported. Implements #2272.
  • MKVToolNix GUI: multiplexer: when deriving track languages from the file
    names is active and the file name contains the usual season/episode pattern
    (e.g. "S02E14"), then only the part after the season/episode pattern will be
    used for detecting the language. Part of the improvements for #2267.
  • MKVToolNix GUI: multiplexer: the regular expression used for deriving track
    languages from the file names can now be customized in the preferences. Part
    of the improvements for #2267.
  • MKVToolNix GUI: multiplexer: the user can now customize the list of track
    languages the GUI recognizes in file names. This list defaults to a handful
    of common languages instead of the full list of supported languages. Part of
    the improvements for #2267.

Bug fixes

  • mkvmerge: MP3 packetizer: removed a memory leak growing linearly with the
    track’s size.
  • mkvmerge: VobSub packetizer: whenever a VobSub packet doesn’t contain a
    duration on the container level, mkvmerge will now set it from the duration
    in the SPU packets. Before it was accidentally setting the SPU-level
    duration to 0 instead. Fixes #2260.
  • mkvmerge: track statistics tags: if writing the Date element is
    deactivated via --no-date, the _STATISTICS_WRITING_DATE_UTC isn’t
    written either anymore. Fixes #2286.
  • mkvmerge, mkvextract, mkvpropedit: removed several small, constant-size
    memory leaks.
  • mkvextract: fixed a crash when mkvextract with a non-Matroska file as the
    source file. Fixes #2281.
  • MKVToolNix GUI: the central area is now scrollable, allowing the GUI to be
    resized to almost arbitrary sizes. Fixes #2265.
  • MKVToolNix GUI: multiplexer: the "copy file title to destination file name"
    functionality will now replace everything in the destination file name up to
    the last period instead of only up to the first period. Fixes #2276.

Build system changes

  • build system: MKVToolNix now requires a compiler that supports the following
    features of the C++14 standard: "user-defined literals for
    std::string". For the GNU Compiler Collection (gcc) this means v5.x or
    newer; for clang it means v3.4 or newer.
  • Windows: linking against and installing shared version of the libraries with
    MXE is now supported by setting configure‘s host triplet accordingly,
    e.g. --host=x86_64-w64-mingw32.shared.

Other changes

  • mkvmerge: AV1: support for AV1 must be activated manually by adding
    --engage enable_av1 as the AV1 bitstream specification hasn’t been
    finalized yet.

Have fun :)

MKVToolNix v22.0.0 released

Hey everyone.

I thought today would be a good day for a new release of MKVToolNix: v22.0.0 is here. Celebrating the official announcement of AV1, this is the first release that contains support for that format as well (still some things to do, though). Other than that the info tool in the GUI has been improved quite a bit.

The Windows and macOS binaries are available already. The Linux binaries are still being built and will be available of the course of the next couple of hours.

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge, MKVToolNix GUI multiplexer: AC-3, DTS, TrueHD: added an option for
    removing/minimizing the dialog normalization gain for all supported types of
    the mentioned codecs. Implements #1981.
  • mkvmerge: AV1: added support for reading AV1 video from IVF, WebM and
    Matroska files.
  • mkvmerge: FLAC: mkvmerge can now ignore ID3 tags in FLAC files which would
    otherwise prevent mkvmerge from detecting the file type. Implements #2243.
  • mkvinfo: the size and positions of frames within "SimpleBlock" and
    "BlockGroup" elements are now shown the same way they’re shown for other
    elements (by adding the -v -v and -z options).
  • MKVToolNix GUI: multiplexer: added options for deriving the track languages
    from the file name by searching for ISO 639-1/639-2 language codes or
    language names enclosed in non-word, non-space characters (e.g. "…[ger]…"
    for German or "…+en+…" for English). Implements #1808.
  • MKVToolNix GUI: info tool: implemented reading all elements in the file
    after the first cluster. Only top-level elements are shown; child elements
    are only loaded on demand. Implements the rest of #2104.
  • MKVToolNix GUI: info tool: added a context menu with the option to show a
    hex dump of the element with the bytes making up the EBML ID and the size
    portion highlighted in different colors. In-depth highlighting is done for
    the data in SimpleBlock and Block elements.
  • MKVToolNix GUI: chapter editor: added an option to remove all end timestamps
    to the "additional modifications" dialog. Implements #2231.

Bug fixes

  • mkvmerge: MP4 reader: fixed reading the ESDS audio header atom if it is
    located inside a "wave" atom inside the "stsd" atom.
  • mkvmerge: MP4 reader: AAC audio tracks signalling eight channels in the
    track headers but only seven in the codec-specific configuration will be
    treated as having eight channels.
  • mkvmerge: MPEG TS reader: fixed wrong handling of the continuity counter for
    TS packets that signal that TS payload is present but where the adaptation
    field spans the whole TS packet.
  • mkvmerge: the ‘document type version’ and ‘document type read version’
    header fields are now set depending on which elements are actually written,
    not on which features are active (e.g. if a SimpleBlock is never written,
    then the ‘read version’ won’t be set to 2 anymore). Part of the fix for
    #2240.
  • mkvmerge: the ‘document type version’ header field is now set to 4 correctly
    if any of the version 4 Matroska elements is written. Part of the fix for
    #2240.
  • mkvinfo: summary mode: the file positions reported for frames in
    BlockGroup elements did not take the bytes used for information such as
    timestamp, track number flags or lace sizes into account. They were
    therefore too low.
  • mkvpropedit, MKVToolNix GUI header editor: the ‘document type version’ and
    ‘document type read version’ header fields are now updated if elements
    written by the changes require higher version numbers. Part of the fix for
    #2240.
  • mkvpropedit, MKVToolNix GUI header editor: mandatory elements can now be
    deleted if there’s a default value for them in the specifications. Fixes
    #2241.
  • source code: fixed a compilation error on FreeBSD with clang++ 5.0. Fixes
    #2255.

Build system changes

  • A compilation database (in the form of a file compile_commands.json) can
    be built automatically if the variable BUILD_COMPILATION_DATABASE is set
    to yes (e.g. as rake BUILD_COMPILATION_DATABASE=yes).

Have fun :)

MKVToolNix v21.0.0 released

Hey everyone.

It’s time for MKVToolNix v21.0.0. The biggest change is that mkvinfo’s GUI portion has been removed. Its functionality is now incorporated into MKVToolNix GUI. I am aware that the functionatliy isn’t on par yet, but it will be in time for release v22.0.0.

You can download the source code or one of the binaries. The Windows and macOS binaries are available already. The Linux binaries are stil being built and will be available of the course of the next couple of hours.

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: track statistics tags: the TagDefault element will not be written anymore as it was always set to the default value 1 anyway. Implements #2202.
  • mkvmerge, MKVToolNix GUI: JSON files can now contain C++-style line comments outside of strings (e.g. something like this: // this is ignored). Such comments, even though not part of the official JSON specifications, are now ignored when reading JSON files.
  • MKVToolNix GUI: chapter editor: opening a Matroska file without chapters in it will now open the file in an empty chapter editor instead of showing an error message. Implements #2218.
  • MKVToolNix GUI: an "info" tool has been added, replacing the functionality of mkvinfo’s GUI. The functionality is not on par yet but will be for release v22. Implements most of the functionality of #2104.

Bug fixes

  • build system: configure was treating --disable-ubsan and --disable-addrsan the same as --enable-ubsan and --enable-addrsan. Fixes #2199.
  • build system: an error message is output if a command to execute is not found instead of silently failing.
  • build system: in addition to looking for the gettext C function and library, configure now also verifies the presence of the msgfmt program instead of simply relying on it.
  • mkvmerge: appending files with additional parts at the same time was broken if more than one additional part was appended (e.g. when appending files from DVDs with something like '(' VTS_01_1.VOB VTS_01_2.VOB ')' + '(' VTS_02_1.VOB VTS_02_2.VOB ')'). In such a situation the content from files VTS_02_1.VOB and VTS_02_2.VOB where laid out in parallel to the content from the earlier files.
  • mkvmerge: FLV reader: a single invalid AAC frame was written for AAC audio tracks with codec initialization data longer than five bytes.
  • mkvmerge: FLV reader: timestamps will be normalized down to 0. Fixes #2220.
  • mkvmerge: MP4 reader: if an AAC track doesn’t contain an AAC-specific decoder configuration in the ESDS portion, then a default decoder configuration will be generated based on the track’s header data instead of skipping the track. Fixes #2221.
  • mkvmerge: MP4 reader: fixed reading HEVC/h.265 video tracks if they’re stored as Annex B byte streams inside MP4. Fixes #2215.
  • mkvmerge: Ogg Opus reader: mkvmerge will now emit a warning instead of aborting when it encounters an Ogg Opus page with no data in the packet. Fixes #2217.
  • mkvmerge, mkvextract: Matroska parser: fixed a segmentation fault that occurred whenever the first level 1 element after resyncing after an error in the file structure isn’t a cluster. Fixes #2211.
  • mkvmerge, MKVToolNix GUI multiplexer & header editor: fixed a crash during file type detection for attachments if MKVToolNix is installed in a path with non-ASCII characters (e.g. German Umlauts). Fixes #2212.
  • mkvinfo: the --hex-positions parameter did nothing in summary mode.
  • mkvinfo: Windows: line endings will be written as \r (carriage return & line feed) again instead of just (line feed).
  • mkvpropedit: adding track statistics tags: for tracks with content encoding (compression) mkvpropedit is now accounting the uncompressed number of bytes, not the encoded (compressed) number of bytes. Fixes #2200.
  • MKVToolNix GUI: multiplexer: the subtitle character set can now be set for appended subtitle files, too. Fixes #2214.
  • MKVToolNix GUI: multiplexer: when appending, all tracks appended to disabled tracks will start out disabled, too.

Build system changes

  • mkvinfo: the GUI portion has been removed. mkvinfo is now a pure command-line program again.

Have fun :)