MKVToolNix v67.0.0

Heyo!

Here’s a new release of MKVToolNix. Quite a lot of work has gone into this release, vastly improving the support for BCP 47 language tags. While a lot of you won’t see much of a difference, the support has vastly improved for a lot of Asian languages, both adding new features such as canoncalization, as well as fixing bugs, e.g. not allowing certain variants with certain languages even though they do make total sense together.

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

  • all: IETF BCP 47/RFC 5646 language tags: when deriving the legacy language element codes to use a language tag’s ISO 639 code is also potentially interpreted as an & its prefix is used as the legacy language code. For example, “Yue Chinese” = yue is not part of ISO 639-2. However, there is an extlang subtag yue with a valid prefix of zh (“Chinese”), and for “Chinese” there is an ISO 639-2 language code: chi. In this example the IETF language element would be set to yue and the corresponding legacy element to chi. Part of the implementation of #3307.
  • all: IETF BCP 47/RFC 5646 language tags: grandfathered language tags are now supported. Part of the implementation of #3307.
  • all: IETF BCP 47/RFC 5646 language tags: all deprecated subtags from the IANA language subtag registry are now supported. Part of the implementation of #3307.
  • all: IETF BCP 47/RFC 5646 language tags: all lists of valid subtags have been updated from their respective authoritative sources. Part of the implementation of #3307.
  • all: IETF BCP 47/RFC 5646 language tags: all in the IANA language subtag registry are now supported, even those marked as deprecated and of type ‘grandfathered’. Part of the implementation of #3307.
  • all: IETF BCP 47/RFC 5646 language tags: reduced the maximum number of extended language subtags that are present in a valid tag from 3 to 1 in compliance with RFC 5646 section 2.2.2. Part of the implementation of #3307.
  • all: IETF BCP 47/RFC 5646 language tags: all language codes reserved for private/local use (qaaqtz) are now supported. Part of the implementation of #3307.
  • all: IETF BCP 47/RFC 5646 language tags: Digital Cinema Naming Convention language codes that fall into the IETF BCP 47 range of “private use” tags (qaaqtz) are now replaced by their IETF BCP 47 equivalents during normalization (e.g. QMScmn-Hans). Part of the implementation of #3307.
  • all: added a new translation to Chinese Simplified (Singapore) by Dian Li.
  • mkvmerge, mkvpropedit: added a new command line option called --enable-legacy-font-mime-types. With this option on the two programs will use the same legacy MIME types for fonts whenever new attachments are added (both programs), when reading existing attachments (only mkvmerge) or when replacing existing ones (only mkvpropedit).
  • mkvmerge, mkvpropedit: IETF BCP 47/RFC 5646 language tags: added a command line option --normalize-language-ietf <mode> which turns on normalization of IETF BCP 47 language tags to either their canonical (mode canonical) or extended language subtags form (mode extlang) or turns it off (mode off). If the option isn’t given, language tags will now be normalized to the canonical form. Part of the implementation of #3307.
  • MKVToolNix GUI: IETF BCP 47/RFC 5646 language tags: ISO 639-3 and 639-5 languages will now be used by default. Part of the implementation of #3307.
  • MKVToolNix GUI: IETF BCP 47/RFC 5646 language tags: the language editor dialog will now show warnings in several cases: when deprecated tags are used; when the tag’s canonical and/or extlang forms differ from the user input. Part of the implementation of #3307.
  • MKVToolNix GUI: IETF BCP 47/RFC 5646 language tags: the language editor now has a button to replace the current tag with a normalized form (canonical or extlang) if those differ from the current tag. Part of the implementation of #3307.
  • MKVToolNix GUI: IETF BCP 47/RFC 5646 language tags: added an option in the preferences to always normalize all language tags to their canonical or extlang forms or to turn normalization off. Can also be enabled from the language editor dialog. Part of the implementation of #3307.
  • MKVToolNix GUI: IETF BCP 47/RFC 5646 language tags: the language dialog now shows a warning if a variant is used with a prefix that isn’t in the variant’s list of suitable prefixes. It’ll also say if the corresponding canonical/extlang forms would have a suitable prefix. Part of the implementation of #3307.
  • MKVToolNix GUI: IETF BCP 47/RFC 5646 language tags: the language dialog now shows a warning if a script is used with a language for which it should be suppressed. Part of the implementation of #3307.
  • MKVToolNix GUI: multiplexer: the track property group boxes in the scrollable pane are now collapsible & expandable, saving their state over restarts of the GUI. This is in preparation of adding many more track properties in future releases, allowing the user to hide parts they don’t use all that often.
  • MKVToolNix GUI: multiplexer: if the option “use legacy font MIME types” is enabled in the preferences, the new command line option --enable-legacy-font-mime-types will be passed to mkvmerge in order to have it remap the MIME types of existing attachments, too.

Bug fixes

  • all: IETF BCP 47/RFC 5646 language tags: variants aren’t validated wrt. to prefixes anymore as BCP 47 doesn’t actually pose restrictions on them, saying only that prefixes “are suitable sequences” for use with the variants. What is now verified, though, is that no variant is used multiple times within the same language tag. Part of the implementation/fix of #3307.
  • build system & MKVToolNix GUI: fixed detecting the presence of & the compilation with the multimedia module of Qt version 6.2.0 and newer.
  • build system: fixed compilation on Unices other than Linux & macOS (e.g. FreeBSD). Fixes #3316.
  • MKVToolNix GUI: job queue: fixed compiling in the audio player code for the the “play audio” end-of-job action. Fixes #3303.
  • MKVToolNix GUI: multiplexer: recognizing added XML chapter, segment info or chapter files required the XML declaration & root node (e.g. <?xml…?> … <Chapters> for chapters) be located within the first 1 KB, which wasn’t enough for files that contain a lot of comments at the start like the included example-chapters-2.xml. The detection range was extended to 10 KB. Fixes #3302.

Build system changes

  • build system: the provided Windows binaries are now compiled with Qt 6. A drawback is that certain audio formats aren’t supported anymore by Qt for the “end of job” sound notification playback, notably the Ogg file format & the Vorbis audio codec. MKVToolNix therefore now ships Opus-in-WebM files for the same purpose.
  • The bundled fmt library was updated to v8.1.1.
  • The bundled nlohmann-json library was updated to v3.10.5.
  • The bundled pugixml library was updated to v1.12.1.

Have fun 😁

MKVToolNix v66.0.0 released

Heyo!

just keeping up with my usual release cadence & releasing MKVToolNix v66, a rather small release.

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

  • mkvpropedit: added a new option --chapter-charset allowing the user to specify the character set to use when reading the following chapter file. Implements #3276.
  • MKVToolNix GUI: each language shortcut can now be associated with an optional track name that is set along with the language when the shortcut is used. This is an alternative to the feature requested in #3283.

Bug fixes

  • mkvmerge: Ogg/OGM reader: mkvmerge will no longer abort with an exception when it encounters Vorbis comments that contain data that isn’t valid UTF-8. Fixes #3290.
  • MKVToolNix GUI: multiplexer: fixed several issues with the tab order of elements in the “properties” pane and the “output” tab. Also fixed the language display widgets (e.g. “track language” in the “properties” pane) never receiving tab focus. Fixes #3274.
  • MKVToolNix GUI: multiplexer: the chapter name template will now be passed to mkvmerge if a chapter file is selected on the “output” tab. Fixes #3295.

Have fun 😁

MKVToolNix v65.0.0 released

Heyo!

Here it is, the first release of 2022. This time I’ve worked a bit on implementing a handful of feature requests/enhancements. Have fun with them!

Nothing’s changed for package managers.

New features and enhancements

  • mkvmerge: the options --default-track and --forced-track have been renamed to --default-track-flag and --forced-display-flag respectively for improved consistency with other option names & the wording used in the GUI. However, the old names will be supported and recognized indefinitely. What will remain unchanged is the property names for those flags in mkvmerge’s identification output. Existing third-party programs will continue working as they are.
  • mkvmerge: added a new option --track-enabled-flag to set or unset the “track enabled” track header flag.
  • mkvmerge: MP4 reader: mkvmerge will now evaluate the flags field of the track header atom (tkhd) and set the track’s “enabled” flag accordingly. Implements #3272.
  • MKVToolNix GUI: multiplexer: added support for the “track enabled” track header flag.
  • MKVToolNix GUI: multiplexer, header editor: added several menu entries & keyboard shortcuts for toggling various track flags of the currently selected tracks, e.g. Ctrl+Alt+F, D (that’s Ctrl and Alt with F simultaneously followed by D without any other key pressed) for toggling the “default track” flag. Part of the implementation of #3253.
  • MKVToolNix GUI: multiplexer, header editor: added menu entries & keyboard shortcuts for setting the language of the currently selected tracks to one from a configurable list of languages. The shortcuts used are Ctrl+Alt+A, 1 through Ctrl+Alt+A, 0 for the first ten entries of that list (that’s Ctrl and Alt with A simultaneously followed by a digit without any other key pressed). Part of the implementation of #3253.
  • MKVToolNix GUI: chapter editor: if the user enters commas in start or end timestamps they will automatically be changed to points as the decimal separator, allowing for easier copy & paste from other programs/sources. Implements #3273.
  • MKVToolNix: header editor: the selected track or attached file can now be moved up & down with the keyboard shortcuts Ctrl+Up & Ctrl+Down respectively. Part of the implementation of #3253.

Bug fixes

  • mkvmerge: Matroska reader: DVB subtitle tracks with a codec private data size of more than five bytes are accepted now, too. Fixes #3258.

Have fun 😁

MKVToolNix v64.0.0 released

Hey everyone.

Hope y’all are having a couple of stress-free days behind & ahead of you, whatever you might or might not celebrate. I still haven’t had much energy to invest into coding, to be honest, but decided to do one last release in 2021 anyway, mostly fixing a couple of smaller issues — especially the wrong-sized icons on high DPI displays, which I’ve gotten so many bug reports about 😁

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

  • MKVToolNix GUI: language dialog: when the user switches between the two edit modes, the mode’s corresponding first control is automatically focussed.

Bug fixes

  • all: language lists: the entries for “Ancient Greek (to 1453)” and “Modern Greek (1453-)” have been renamed to “Greek (ancient, -1453)” and “Greek (modern, 1453-)” respectively in order to be easier to find.
  • mkvmerge: VobSub reader: files containing id: -- lines to indicate that the track language isn’t known were rejected by mkvmerge. Now they’re accepted, and und (undetermined) is used as the language. Fixes #3246.
  • MKVToolNix GUI: chapter editor: the “Save to Matroska or WebM file” function was using the wrong standard file dialog (the “open file” one instead of “save”), leading to confusing button names. Fixes #3242.
  • MKVToolNix GUI: high DPI scaling: fixed the icons in the tool selector having the wrong size for scaling factors other than 100% or 200%. Fixes #3229.

Build system changes

  • The bundled fmt library was updated to v8.0.1.
  • The bundled nlohmann-json library was updated to v3.9.1.
  • The bundled pugixml library was updated to v1.11 revision 6a76cac.
  • The bundled utf8-cpp library was updated to v3.2 revision b85efd6.

Have fun 😁