Author Archives: mosu

MKVToolNix v49.0.0 released

Hey y’all,

this is more or less a small bugfix release of MKVToolNix. One rather important new feature is support for the new Matroska elements introduced for storing additional codec-initialization data needed for techniques such as MVC (3D video) or Dolby Vision metadata. mkvmerge cannot produce them itself yet, but it will keep the data that’s present, e.g. when reading files created by MakeMKV.

Important news for package managers is that libMatroska v1.6.1 is now required (that one was released earlier today). As usual MKVToolNix bundles that version as a fallback.

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

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: added support for copying the new track header elements
    BlockAddIDName, BlockAddIDType, BlockAddIDValue and
    BlockAddIDExtraData from Matroska files if they exist. Part of the
    implementation of #2887.
  • mkvinfo: added support for the new track header elements
    BlockAdditionMapping, BlockAddIDName, BlockAddIDType, BlockAddIDValue
    and BlockAddIDExtraData. Part of the implementation of #2887.
  • MKVToolNix GUI: multiplexer: the list of recent directories can now be
    edited in the preferences → "Multiplexer" → "Destination file
    name". Implements #2861.
  • MKVToolNix GUI: preferences: the values in the various "predefined values"
    lists can now be re-ordered freely by dragging & dropping.

Bug fixes

  • mkvmerge: Matroska reader: when reading tracks (e.g. a subtitle track) from
    Matroska files with their default track flag set to yes, and when
    overwriting those via the command line to no, mkvmerge would not promote
    additional tracks of the same type from other files (e.g. another subtitle
    track from an SRT file). Fixes #2863.
  • mkvmerge: SRT reader: empty lines inside entries were doubled. Fixes #2888.
  • mkvmerge: subtitles: when calculating the rounded duration of each entry the
    error from rounding the corresponding timestamp will be taken into
    account. Fixes #2890.
  • mkvextract: SSA/ASS extraction: mkvextract is no longer inserting empty
    lines before the Dialogue: lines. Fixes #2876.
  • mkvextract: USF subtitles: start & end timestamps were too high by a factor
    of 1.000.000. Fixes #2875.
  • MKVToolNix: info tool: when saving to a text file the checkbox "Save as
    default for saving output to text files" did nothing. Fixes #2869.
  • MKVToolNix: info tool: when saving to a text file in "all elements in a
    tree-like structure" mode, the GUI always stopped at the first cluster
    regardless of the setting of the "verbosity" option.
  • MKVToolNix GUI: preferences: when tooltips were disabled the dialogs for
    adding new entries to the various "predefined values" lists were missing
    their texts.
  • Windows installer: the images are shown again. Fixes #2868.
  • configure: fixed detection of QtDBus. Fixes #2886.

Build system changes

  • libMatroska v1.6.1 is now required. The bundled version has been updated to
    that version.

Have fun!

MKVToolNix v48.0.0 released

Hey everyone,

summer’s upon us, and surely we’re all itching to stay at home some more, aren’t we? Well, despair not, at least you can update your MKVToolNix version to the latest & shiniest there ever was.

This release’s highlight is the big improvement to the handling of Blu-ray playlists (MPLS files) & corresponding MPEG transport streams (M2TS files), both bug fixes and real enhancements. See the news below for details.

Important news for package managers are the new reuquirements for libEBML/libMatroska & the main development branch having been renamed in my source code repo. Again, see the news for details.

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

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: AC-3: file identification will report AC-3 tracks encoded in Dolby
    Surround EX as codec "AC-3 Dolby Surround EX". Implements #2740.
  • MKVToolNix GUI: multiplexer: on new installations the GUI will now recognize
    all known ISO 639-2 language codes in file names by default instead of only
    the top 100 of languages by native speakers.
  • MKVToolNix GUI: multiplexer: on new installations the list of "often used
    languages" will by default only contain certain agnostic ones ("multiple
    languages", "no linguistic content", "reserved for local use", "uncoded
    languages"), "English" and the default user interface language. The "list of
    spoken languages by native speaks" isn’t used anymore. Also implements #2716.
  • MKVToolNix GUI: header editor: added an option to remove all attachments to
    the tree context menu. Implements #2835.
  • MKVToolNix GUI: while the GUI is running it will remember the last page that
    was selected when the preferences dialog is closed. Upon re-opening the
    preferences that page will be selected by default. Implements #2852.

Bug fixes

  • mkvmerge: fixed a segmentation fault when exiting prematurely due to write
    errors such as the destination having run out of space. Fixes #2843.
  • mkvmerge: DTS: fixed wrong channel count for DTS tracks with XCh
    extensions. Fixes #2715.
  • mkvmerge: MPEG TS reader: fixed detecting h.264/AVC and h.265/HEVC tracks
    that consist of only a single frame. Part of the fix of #2849.
  • mkvmerge: MPEG TS reader: fixed handling of unbounded PES sizes for tracks
    that consist of only a single PES packet. Part of the fix of #2849.
  • mkvmerge: MPEG TS reader: PGS subtitle tracks are now exempt from the
    "detect bogus subtitle timestamps" heuristic which could lead to some PGS
    subtitles not being timestamped correctly. Symptoms were that they were
    shown at the wrong time or that they were shown indefinitely. Fixes #2736
    and partially fixes #2824.
  • mkvmerge: MPEG TS reader: when reading MPLS playlists the start timestamps
    of a play items were handled wrong: all the timestamps of packets read were
    compared to that start timestamp, dropping those packets whose timestamps
    were smaller than the play item’s start timestamp. The correct behavior is
    to accept all packets as soon as the first one with a timestamp equal to or
    larger than the play item’s start timestamp is encountered. This could
    result in PGS subtitle entries located right at the start of the play item
    being garbled/lost as they consist of multiple PES packets for which some
    timestamps are often slightly smaller. Part of the fix of #2824.
  • mkvmerge: MPEG TS reader: when reading MPLS playlists mkvmerge will no
    longer read the whole M2TS files they reference, processing only the packets
    lying inside the timestamp range given by the playlists’s play item’s start
    & end timestamps. Instead mkvmerge will use the index information present in
    corresponding clip information (CLPI) files in order to seek to the nearest
    file position of the play item’s start timestamp. Additionally mkvmerge will
    simply stop processing a file once the end timestamp is seen. This change
    greatly speeds up processing files from which only small portions must be
    read. Part of the fix of #2824.
  • mkvmerge: WavPack: fixed support for files created by v5 of the
    program. Checksums, DSD audio data and non-standard sampling rates are
    handled correctly. Patch by David Bryant.
  • MKVToolNix GUI: multiplexer: fixed the cursor being positioned wrong after
    entering or pasting characters that aren’t allowed in file names into the
    "destination file" control. Fixes #2855.

Build system changes

  • libEBML v1.4.0 and libMatroska v1.6.0 are now required.

Other changes

  • The source code repository’s main development branch was renamed to main.

Have fun!

MKVToolNix v47.0.0 relesaed

Well hello, gentle people.

Surprisingly it’s still May, even though it feels much longer since… well everything, really. Anyway, roughly four weeks since the previous release means it’s a good time for another MKVToolNix release.

v47 contains a couple of new enhancements and few bug fixes. However, under the hood big chunks of the source code was changed in an ongoing effort of switching from using Boost libraries to the C++ standard library. For end users this replacement doesn’t mean much — apart from the usual danger of accidentally introducing bugs. Hopefully not too many.

For package maintainers the situation is different. There were several changes, not only due to this migration. Please read the news below carefully. Thanks.

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

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: chapters: mkvmerge can now read chapters from DVDs if the user
    specifies the path to a DVD folder structure via the --chapters …
    parameter. By default chapters from the first title will be imported. This
    can be changed by append :<title number> to the file/directory name in the
    --chapters … argument, e.g. --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:3
    This feature requires mkvmerge to have been built with the libdvdread
    library. Part of the implementation of #2808.
  • mkvmerge: added --engage append_and_split_flac that enables mkvmerge to
    append and split FLAC tracks, restoring pre-v45 behavior. The resulting
    tracks will be broken: the official FLAC tools will not be able to decode
    them and seeking will not work as expected.
  • MKVToolNix GUI: multiplexer: added support for mkvmerge’s new support for
    reading chapters from DVDs if both have been built with the libdvdread
    library. Part of the implementation of #2808.
  • MKVToolNix GUI: multiplexer: when deriving languages from file names the GUI
    will now look for simplified language names instead of the full ones
    (e.g. instead of looking for "Greek, Modern (1453-)" it would simply look
    for "Greek").
  • MKVToolNix GUI: multiplexer: the options in the "additional command-line
    options" dialog are now sorted alphabetically. Additionally the
    --append-mode option has been added as one of the only missing global
    options.
  • MKVToolNix GUI: chapter editor: the chapter editor can now read chapters
    from DVDs if MKVToolNix has been build with the libdvdread library. Part
    of the implementation of #2808.
  • MKVToolNix GUI: header editor: added an option in the preferences for
    displaying all date & time values in UTC instead of the local time
    zone. Implements #2814.

Bug fixes

  • all: fixed a crash when using the MTX_LOGGER=file syntax for logging debug
    messages without specifying a file name to log to. It will now log to a file
    called mkvtoolnix-debug.log in the system’s default temporary directory,
    as initially intended.

Build system changes

  • The libdvdread
    library will be used if found via pkg-config. If it is found, support for
    reading chapters from DVDs will be enabled in mkvmerge and the MKVToolNix
    GUI. Part of the implementation of #2808.
  • Boost’s Date/Time, Lexical Cast, Range, Range Adaptors, Tri-Bool, Variant
    libraries are not used anymore.
  • MKVToolNix now requires a C++ compiler & standard library that support the
    following features of the C++17 standard: "std::variant", "std::gcd".
    For the GNU Compiler Collection (gcc) this means v7 or newer; for clang it
    means v4 or newer — the same versions required by earlier MKVToolNix
    versions.
  • MKVToolNix now requires version 6.1.0 of fmtlib or later for the
    fmt::to_string function and bugfixes to the formatting of floating point
    numbers. If a system-wide version is installed that’s older, the bundled
    copy will be used.
  • The bundled version of fmtlib has been updated to release 6.2.1.

Have fun!

MKVToolNix v46.0.0 released

Hey everyone!

It’s May. It’s time. Time for another MKVToolNix release.

In v45 I accidentally introduced two bugs that users stumbled across almost immediately, and I nearly released a bug fix release only a few days after the v45 release, but ultimately decided against it. Therefore I suggest you upgrade to v46 now, especially if you’re dealing with H.265/HEVC video in MP4 files.

Nothing’s changed for package managers.

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

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: when splitting, the placeholder %c can be used in the
    destination file name. It’ll be replaced by the name of the first chapter in
    the file. Implements #2791.
  • mkvmerge: when reading MPLS playlists mkvmerge will include a tag named
    SOURCE_ID in the track’s statistics tags that conveys the fact that the
    source was a Blu-ray and what the track’s ID was in the source
    container. When reading Matroska file existing SOURCE_ID tags will be
    kept. The format used is the same format MakeMKV uses. Implements #2774.
  • mkvmerge: for audio-only files mkvmerge will now write a cue entry every
    500ms instead of every 2s.
  • MKVToolNix GUI: job actions: split up the option "execute when the job
    finishes successfully or with warnings" into two separate options: "…when
    finishes successfully" and "…when exits with warnings". Implements #2798.

Bug fixes

  • mkvmerge: Matroska reader: when regenerating UIDs for chapters mkvmerge will
    now fix referencing tag chapter UID targets to have the same values. Fixes
    #2804.
  • mkvmerge: MP4 reader: fixed a crash that could potentially happen while
    trying to identify H.265/HEVC tracks.
  • mkvmerge: MP4 reader: when reading H.265/HEVC tracks without a frame offset
    table (ctts atom) present, mkvmerge did not parse the hevcC structure
    correctly in certain cases, causing no video frames to be output at all or
    the output not being playable. This fixes #2782, a bug introduced in v45.
  • mkvmerge: MPLS handling/MPEG TS reader: timestamp restrictions as given in
    an MPLS file were only honored for the first play item, not for subsequent
    play items. For those play items the whole referenced file was always
    copied. Part of the fix of #2789.
  • mkvmerge: MPLS handling/MPEG TS reader: under certain circumstances mkvmerge
    copied one frame too many before switching to the next play item. Part of
    the fix of #2789.
  • mkvmerge: for audio-only files cues will only be created for I frames
    (important for e.g. TrueHD where decoding can only start on a sync
    frame). Fixes #2790.
  • MKVToolNix GUI: fixed a crash that happened when closing the preferences
    after having closed at least one multiplexer tab. Fixes #2785.
  • MKVToolNix GUI: macOS: changed the default of the "elide tab header labels"
    feature introduced in v45 from "no" to "yes" to mirror how versions before
    v45 behaved on macOS.

Have fun!