MKVToolNix v58.0.0 released

Heyo,

Summer is here, and so is MKVToolNix v58.0.0. Unlike the previous releases a lot more time has gone into it. The most noticeable change (to end users at least) is how the “default track” flag is handled, bringing it up to how the latest spec says the flag should be handled by players. Another prominent change is which MIME types are used for attached fonts on Windows. See the news below for details on both changes.

There were a couple of changes for packages, though none of them should actually require work on recent distros. Again, see the news below for details.

Last, but not least: get vaccinated if at all possible, y’all!

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, MKVToolNix GUI’s multiplexer: the handling of the “default track” flag has been changed to match the recent changes to the Matroska specifications. The new semantics are that if it is set, it is supposed to signal to the player that this track is eligible for being played by default, potentially taking other factors such as user preferences regarding languages into account. This implies that more than one track of each type can have this flag set. For example, a Blu-ray disc with three audio tracks might have the main audio in both English and Japanese, whereas the third audio track contains the director’s comments. In such a case the first two tracks should have the “default track” flag set, the third one shouldn’t. Earlier mkvmerge was enforcing that only one track of each type could have the flag set. This restriction has been removed, both in mkvmerge and in the GUI’s multiplexer. mkvpropedit and the GUI’s header editor are unaffected as they’ve always allowed to set the flag on as many tracks as the user wanted.
  • mkvmerge: AVC/H.264 & HEVC/H.265 identification: added the stream’s pixel dimensions (AVC only; were present for HEVC already) & default duration. Implements #3116.
  • mkvmerge, mkvextract: HEVC/H.265: added support for reading single-layer Dolby Vision from Annex B type bitstreams (elementary streams, MPEG transport streams). Patch by quietvoid. Implements #3113.
  • mkvinfo: the option -X/--full-hexdump now affects all binary elements, not just the frame data in SimpleBlock and BlockGroup elements.
  • MKVToolNix GUI: multiplexer: the “delay” and “sync” options can now be used for chapters in source files, too. Implements #3129.
  • MKVToolNix GUI: when moving list entries up & down with the optional buttons or the keyboard shortcuts (instead of using drag & drop), the GUI ensures that the top-most selected entry remains visible after the move. Implements #3123.
  • MKVToolNix GUI: added an option in the preference to use legacy MIME types for font attachments instead of the current standard ones (e.g. ‘application/x-truetype-font’ instead of ‘font/sfnt’ and ‘font/ttf’).

Bug fixes

  • build system: fixed filtering out optimization options when compiling the file iso639_language_list.cpp (before only numeric optimization levels were filtered out and only if it wasn’t the last option in the list of flags). See #3105 for context.
  • build system: when libmagic was detected via pkg-config, MKVToolNix was actually compiled without support for libmagic due to a preprocessor symbol not being defined.
  • mkvmerge: MP4 reader: fixed an issue with timestamps overflowing when the file’s or the track’s time scale is large. Fixes #3124.
  • mkvmerge, mkvextract: fixed key frame handling for BlockGroup elements with a forward reference but no backward references. Patches by Tom Yan.
  • mkvmerge, mkvpropedit, MKVToolNix GUI’s chapter editor: the programs will no longer omit writing mandatory elements set to their default value if other elements of the same type are present in the same master. This affects mostly the “chapter language” element which may occur multiple times within the same “chapter display” master. If it does occur multiple times and one of them is set to “English” (which is that element’s default value), that element will now be written, too. Part of the fix of #3120.
  • mkvmerge, mkvpropedit, MKVToolNix GUI’s chapter editor: when parsing chapter files IETF & legacy language elements as well as legacy country elements will now be properly generated depending on which exist already, especially when there’s more than one language and/or country element in a “chapter display” element. Part of the fix of #3120.
  • mkvmerge, mkvpropedit, MKVToolNix GUI’s chapter editor: fixed reading OGM-style chapter files with timestamps that don’t have exactly three decimal places. Any number of decimal places between one and nine is now supported for nanosecond precision. Fixes #3121.
  • MKVToolNix GUI: chapter editor: added/fixed support for “chapter display” elements with multiple languages or countries. Part of the fix of #3120.

Build system changes

  • Qt 6: added support for building with Qt 6. configure will look for Qt 6 first and only continue looking for Qt 5 if Qt 6 isn’t found or disabled via --disable-qt6. Qt 6 detection works by first looking for the qmake6 binary. Its location can be specified with the --with-qmake6=… option. All other Qt 6 related facts (such as compiler & linker flags or the position of the other required tools such as lconvert, moc, rcc and uic) will be derived from the output generated by qmake6. Note that at this point Qt 6 is not yet supported for the cross-compilation build to Windows, nor is a static Qt 6 build supported yet. Note that the command line options --enable-static-qt, --with-qt-pkg-config-modules and --without-qt-pkg-config only apply to the Qt 5 and have no effect on Qt 6.
  • Qt 5: the options for specifying the position of the tools (--with-moc=…, --with-rcc=… and --with-uic=…) have been removed. Their position will now be derived from the output generated by qmake.
  • configure: completely disabling the GUI now requires passing both --disable-qt6 and --disable-qt options.
  • Boost’s multi-precision library is now required.
  • Boost v1.66 or newer is now required.

Other changes

  • The Windows build is now using an updated version of the file/magic library for MIME type detection of attachments. This affects fonts whose MIME types will now be the current standard MIME types (e.g. font/sfnt or font/ttf for TrueType fonts). As this might pose problematic with older players that only support the legacy MIME type (e.g. application/x-truetype-font), a new option was added in the GUI’s preferences to use the legacy MIME types instead of the current standard ones. This is off by default. Builds for other operating systems have already been using newer versions of the file/magic library for a long time.

Have fun 😁

MKVToolNix v57.0.0 released

Hello, hello!

fresh of the presses here’s MKVToolNix v57.0.0. A lot of work has gone into the HEVC/H.265 code over the last couple days, fixing most issues with Dolby Vision and HDR content, but also fixing a couple of general issues with the HEVC/H.265 code. Everyone using that codec should definitely update.

The state of Dolby Vision & HDR is pretty good right now. The only thing still missing is reading Dolby Vision from Annex B type elementary streams (raw .h265 files or MPEG transport streams), but we’re working on that as well.

By the way: a lot of you have decided to support MKVToolNix by buying it from the Microsoft Store for which I’m very, very grateful. At the point of writing it has been sold 544 times already. One immediate benefit is that I’ve invested in Dolby Vision capable hardware in order to be better able to test & improve that part of MKVToolNix. Your support is definitely making a difference.

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: MP4 reader: added support for reading Dolby Vision from MP4 files (FourCCs dvh1 and dvhe; configuration records dvcC, dvvC and hvcE will be converted into block addition mappings). Implements #2784.
  • mkvmerge: SRT subtitles: mkvmerge now accepts empty text files with the extension .srt as SRT subtitle files, enabling the creation of empty SRT tracks. Implements #3089.
  • mkvmerge, mkvextract: HEVC/H.265: access unit delimiter NALUs will no longer be discarded, neither during muxing nor during extraction.
  • MKVToolNix GUI: preferences: switched the order & wording of controls in the “enabling items” panel to make it clearer that certain controls define exceptions. Inspired by 3086.

Bug fixes

  • mkvmerge: HEVC/H.265 parser: several NALU types, notably the Dolby Vision-specific NALUs (“unspecified 62” and “unspecified 63”) and suffix SEI NALUs, are now stored with the frame they belong to instead of with the next frame. Part of fixing & implementing #2784, #2818, #3093 and #3113.
  • mkvmerge: HEVC/H.265 packetizer: fixed setting the track’s default duration when reading HEVC/H.265 from Matroska files that don’t have a default duration set.
  • mkvmerge: HEVC/H.265 packetizer: fixed the calculation of the duration of frames so that SimpleBlock elements can be used again instead of BlockGroups with BlockDuration elements. Fixes #3114.
  • mkvmerge, mkvextract: HEVC/H.265 parser: fixed issues with ordering & duplication of certain NALUs (parameter set & prefix SEI NALUs). Part of fixing & implementing of #2784, #2818, #3093 and #3113.
  • MKVToolNix GUI: multiplexer: when dragging & dropping files to the multiplexer, the source directory will be remembered as the “last open directory” again, causing subsequent uses of the “open file” dialog to start in the same directory. Fixes #3110.
  • mkvinfo: fixed the position of frames in block groups containing “block duration” elements in summary mode (e.g. for subtitle tracks).

Build system changes

  • configure will now try to detect libmagic via pkg-config and fall back to including & linking directly if it cannot be found via pkg-config.

Have fun 😁

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 😊