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 :)