MKVToolNix v50.0.0 released

Hello everyhone,

another month, another MKVToolNix release. This one includes quite a high number of commits under the hood due to the prominent new feature I’ve implemented: support for the new IETF BCP 47 language elements. Finally you can express things such as “Portuguese as spoken in Brazil” or “Serbian in Cyrillic script as spoken in Serbia”.

Apart from that there are the usual enhancements & bug fixes.

Important news for package managers is that the PCRE2 library is now required (only its UTF-8 variant).

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 feature: IETF BCP 47 language tags

  • I’ve written up a nice FAQ entry about the switch to using IETF BCP 47 language tags, how they interact with legacy language elements, how the programs actually behave and how to disable their use if necessary.
  • mkvmerge: IETF BCP 47/RFC 5646 language tags: mkvmerge will now accept full BCP 47 language tags for all options taking a language. mkvmerge will always write "LanguageIETF" track header elements. If the language tag contains a valid ISO 639-2 language code it will also set the legacy "Language" track header element to the included ISO 639-2 code. Part of the implementation of #2419.
  • mkvmerge: IETF BCP 47/RFC 5646 language tags: if present the "LanguageIETF" track header element will be reported as the language_ietf property in JSON identification mode. Part of the implementation of #2419.
  • mkvmerge: IETF BCP 47/RFC 5646 language tags in chapters: mkvmerge will now write "ChapLanguageIETF" elements when creating chapter atoms, either when reading the simple chapter format or when generating chapters due to the --generate-chapters command line option. Part of the implementation of #2419.
  • mkvmerge: IETF BCP 47/RFC 5646 language tags in tags: mkvmerge will now write "TagLanguageIETF" elements when creating "simple tag" elements, either when reading tag XML files or when generating them. Part of the implementation of #2419.
  • mkvmerge: IETF BCP 47/RFC 5646 language tags: added an option --disable-language-ietf that causes mkvmerge to only write the legacy language elements.
  • mkvmerge, mkvpropedit, MKVToolNix GUI’s chapter editor: IETF BCP 47/RFC 5646 language tags in chapters: when reading XML chapter files the programs will now add "ChapLanguageIETF" elements for atoms that don’t contain them. The values are derived from existing "ChapterLanguage" elements. Part of the implementation of #2419.
  • mkvpropedit: IETF BCP 47/RFC 5646 language tags: setting/deleting the track language now acts on both the old language element as well as the "LanguageIETF" track header element. Part of the implementation of #2419.
  • mkvpropedit: IETF BCP 47/RFC 5646 language tags: added an option --disable-language-ietf that causes mkvpropedit to apply changes to the language track header property only to the legacy language track header element.
  • mkvinfo: IETF BCP 47/RFC 5646 language tags: added support for the "LanguageIETF" track header element. Part of the implementation of #2419.
  • MKVToolNix GUI: multiplexer: added full support for IETF BCP 47/RFC 5646 language tags for both track and chapter languages. Part of the implementation of #2419.
  • MKVToolNix GUI: chapter: added full support for IETF BCP 47/RFC 5646 language tags for chapter languages. Part of the implementation of #2419.
  • MKVToolNix GUI: header editor: added full support for IETF BCP 47/RFC 5646 language tags for track header languages. The header editor allows editing of the legacy language elements and the IETF BCP 47 language elements independent of each other. Part of the implementation of #2419.

Other new features and enhancements

  • mkvmerge: the chapter generation mode when-appending now also works with the splitting modes parts: & parts-frames: when using the …,+… syntax for appending other sections of the source file to the same destination file. Implements #2898.
  • MKVToolNix GUI: multiplexer: the file selection dialogs now include the extension .dtsma for DTS files. Implements #2901.
  • mkvmerge: MP4 reader: sped up parsing MP4 DASH files with a lot of segments (trun atoms) quite a bit. Part of the fix of #2900.
  • The PCRE2 regular expression library is now used instead of std::regex for big performance improvements in all places where regular expressions are used for parsing big chunks of text, e.g. in the subtitle parsers. Part of the fix of #2899.
  • all programs: Windows: all programs now support long file names on Windows 10 release 1604 if they’re turned on in the registry. Implements #2916.

Bug fixes

  • MKVToolNix GUI: preferences: under certain conditions changing the selected entry in the page tree on the left did not cause the page shown on the right to be updated. Fixes #2895.
  • mkvmerge: splitting text by a fixed string (e.g. ,) is now done by using std::string.find() instead of using a regular-expression-based text splitting function, greatly improving its performance. Part of the fix of #2899.
  • mkvmerge: mkvmerge will now read-buffer file I/O when probing text file formats which increases its speed significantly on Windows. Part of the fix of #2899.
  • mkvmerge: MP4 reader: fixed handling of tkhd atoms of version 1. Fixes #2900.

Build system changes

  • The PCRE2 library (the 8-bit variant) is now required.

Have fun!

One thought on “MKVToolNix v50.0.0 released

  1. David

    Really like your program, BUT when you changed the language menu you doubled my work.
    I am going to try to find the previous version and go back.

Comments are closed.