MKVToolNix v56.1.0 released

Hello again,

unfortunately the release I’ve done only four days ago contains a nasty bug in the HEVC/H.265 code, and people are hitting it in droves. Therefore I’m releasing a fix for that today

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: AAC: added support for LOAS/LATM files with channel configuration indexes 9–21 (e.g. channel count 22.2 for index 13) according to Rec. ITU-R BS.1196-7 & ISO/IEC 23008-3:2019. Fixes #3081.

Bug fixes

  • mkvmerge: HEVC/H.265 parser: fixed invalid memory access that could happen when reading certain types of HEVC data (e.g. with changing parameter sets mid-stream) from certain containers (e.g. Matroska). This bug was introduced in release 56.0.0. Fixes #3083.
  • mkvextract: AAC: mkvextract will now abort with an useful error message when the user tries to extract a track whose ‘audio-specific config’ element in CodecPrivate signals a number of channels of 7 or greater than 8 as that isn’t supported by the ADTS format.

Build system changes

  • configure: the --enable-ubsan option hasn’t actually enabled anything since release 39.0.0.

Have fun 😎

MKVToolNix v56.0.0 released

Heyo everyone,

time for the April release of MKVToolNix. It’s mostly a bug fix release focussing on improving a lot of fundamental functionality such as chapters & tags.

The most notable thing to have happened, though, is that the Windows version of MKVToolNix is now available from the Microsoft Store. It isn’t free there, though, as it is meant to be a way for you to actively support the development of MKVToolNix (you get automatic updates in return). Please note that this is purely optional and will forever remain optional: completely free variants for Windows will always be available from the home page, just like in the past. See this FAQ entry for more information.

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, mkvpropedit: tags: the programs will no longer write tag elements that are mandatory and set to their default value (e.g. “tag language” set to und = undetermined).
  • mkvmerge, mkvpropedit, MKVToolNix GUI chapter editor: chapters: the programs will no longer write chapter elements that are mandatory and set to their default value (e.g. “chapter language” set to eng = English or “Chapter flag enabled” = 1).
  • mkvextract: chapters: mkvextract will no longer add a ChapterLanguage element set to eng to the generated XML content if the source file doesn’t contain such an element.
  • MKVToolNix GUI: multiplexer: when using the “tab widget below the files & tracks” layout option for the track properties the elements in the “general options” tab will use six rows à four columns instead of twelve rows à two columns, greatly reducing the required height. Implements #3062.

Bug fixes

  • mkvmerge: AAC reader: fixed mkvmerge aborting to read AAC files bigger than 2 GB with a message about not being able to allocate memory. Fixes #3059.
  • mkvmerge: chapters: ChapLanguageIETF elements were still created when the option --disable-language-ietf was given after an option leading to the creation of chapters. Now the position doesn’t matter anymore. Part of the fix of #3069.
  • mkvmerge: chapters: when the option --disable-language-ietf is used, ChapLanguageIETF elements won’t be written even when sources are read (Matroska files or XML chapters files) that do contain those elements. Part of the fix of #3069.
  • mkvmerge: tags: when the option --disable-language-ietf is used, TagLanguageIETF elements won’t be written. Fixes #3070.
  • mkvmerge: tags: mkvmerge will no longer write language elements for the track statistics tags it creates, making the effective language “undetermined” due to und being the default value for the legacy tag language element. Fixes #3073.
  • mkvmerge: tags: the XML tag parser will now validate all <Simple> children of <Tag> elements, not just the first for each <Tag>. Part of the fix of #3071.
  • mkvmerge: tags: the XML tag parser now uses the spec-compliant und (“undetermined”) as the default language for <Simple> tags instead of eng. Part of the fix of #3071.
  • mkvmerge, mkvpropedit: tags: mkvmerge will no longer set the “target type” for track statistics tags (earlier it used MOVIE). The “target type value” will still be set to 50. Fixes #3074.
  • mkvmerge, mkvextract: HEVC/H.265: both programs will now normalize the placement of VPS, SPS and PPS NALUs. Each key frame is prefixed with exactly one copy of the currently active parameter sets. This fixes certain classes of bugs related to splitting/appending. Fixes #3034.
  • mkvinfo: when compiled with newer versions of the fmt library, certain numbers were not output correctly (e.g. a track’s audio sampling frequency of 48000 might be output as 48).
  • MKVToolNix GUI: multiplexer: deriving the track language from the file name will match languages case insensitively again (like versions prior to v55). Fixes #3068.
  • MKVToolNix GUI: multiplexer: under certain circumstances keyboard shortcuts such as Ctrl+W for closing the active tab or Ctrl+R for starting to multiplex ceased to work until the user did certain other things (such as switching to a different tool & back to the multiplexer or opening the multiplexer menu). This started with v54. Fixes #3051.
  • MKVToolNix GUI: chapter editor: the editor will no longer create empty ChapterCountry elements when adding a chapter name with no default country selected in the preferences. Fixes #3072.

Build system changes

  • The bundled fmt library was updated to v7.1.3.

Have fun 😊

MKVToolNix available in the Microsoft Store

Starting today you can install MKVToolNix from the Microsoft Store. There’s one caveat, though: it actually costs money in the Store.

But why? Isn’t MKVToolNix Open Source?

Let me start by saying that yes, MKVToolNix is Open Source and always will be. Let me further make it very clear that binaries of all variants of MKVToolNix, including the ones for Windows, will always be available from its home page free of charge. Functionally there will be no differences between the Windows binaries, no matter where you get them from.

So why have a paid version in the Store? Simple: it’s a way for you to support the development of MKVToolNix. In return you don’t have to update it manually anymore as the Store will install them automatically for you.

If you want to support MKVToolNix this way, great, and thanks! Just head over to the Microsoft Store and buy it there. If you don’t want to pay for it for whatever reason, that’s perfectly fine as well! Nothing will change for you: head over to the downloads section on the home page & get it from there.

And in case you want to support MKVToolNix without having to pay, there are so many things you could do. Here are a couple of examples:

I’m really grateful for all such contributions to MKVToolNix and its community.

MKVToolNix v55.0.0 released

Heya everyone,

wait! We’ve just had a release of MKVToolNix. What’s up with doing another one so soon? Well, thing is, that previous release is buggy. Quite a bit. It included three major changes to its internals: the change from boost::filesystem to std::filesystem, the extension of languages to include ISO 639-3 codes and a complete rewrite how file identification works in the GUI.

The first of those rewrites caused a lot of pain for users on Windows. First of all UNC paths such as \\server\share\directory\file.mkv didn’t work at all: the GUI might hang, not remember the most recently used directory, refuse to create missing directories, things like that. Second, there were several situations in which non-ASCII characters (think German Umlauts, Asian characters, Emojis) were mangled. Users are constantly opening new issues in my bug tracker which is always a good indicator that quick bug fix release is warranted.

The other two rewrites also caused bugs that, while not as severe, were annoying, too. This release includes fixes for them, too.

There have been no changes concerning package maintainers.

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:

Bug fixes

  • all programs, only on Windows: fixed checking existence of & creating directories with UNC paths such as \\server\share\folder\file.mkv. Fixes #3041.
  • all programs, only on Windows: implemented several workarounds for bugs in std::filesystem wrt. UNC paths. The effect of those bugs was that Blu-rays and DVDs couldn’t be added from UNC paths. Fixes #3037.
  • mkvmerge, only on Windows: fixed non-ASCII characters getting mangled in the destination file name when splitting is active.
  • MKVToolNix GUI, only on Windows: fixed the GUI hanging when trying to browse for files on drives that don’t actually exist. Fixes #3046.
  • MKVToolNix GUI, only on Windows: the GUI did not remember UNC paths as the “most recently used source directory” properly.
  • MKVToolNix GUI: only on Windows: when dragging & dropping files from other applications to MKVToolNix GUI the GUI will force the drop action to be a copy action, no matter which keys were pressed by the users. This prevents Windows Explorer from deleting the dragged file when the user presses shift while dropping the file onto MKVToolNix GUI.
  • MKVToolNix GUI, only on Windows: when using the file dialog for selecting a file name to save to (e.g. when browsing for the destination file name in the multiplexer or saving an attachment in the header editor) non-ASCII characters in the default file name were mangled. Fixes #3049.
  • MKVToolNix GUI: multiplexer: the user can now configure what to do when using the “Add source files” button independently of the setting for what happens when files are dragged & dropped onto the GUI. The same options are available, but they’re distinct settings, allowing for different use cases. Fixes #3035.
  • MKVToolNix GUI: multiplexer: deriving the track language from file names doesn’t use one big regular expression of all enabled languages anymore. Instead, the file name is split into parts on a list of characters (such as . or ( and ); configurable in the preferences). This prevents the regular expression becoming too big for the regular expression library to handle when many languages are enabled. Fixes #3048.
  • MKVToolNix GUI: preferences: the language lists for “deriving track languages” and “enabling items by language” always included all the ISO 639-3 languages, even if those weren’t enabled in the “often-used languages” pane. Fixes #3047.

Other changes

  • mkvmerge, MKVToolNix GUI multiplexer: the functionality for changing the length of the NALU “size” field for AVC/H.264 and HEVC/H.265 tracks has been removed. The corresponding command-line option will continue to be recognized by mkvmerge as not to break existing third-party applications, but it won’t actually do anything.

Have fun 😊