MKVToolNix v78.0 released

Heyo!

MKVToolNix v78 is out with tons of bug fixes, especially for those crashes in the GUI’s header editor & for the GUI hanging when adding files via drag & drop. Both have crept in in version 77. Fortunately they were only annoying but didn’t affect existing files.

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 still 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: header editor: for files that only contain legacy track language elements but no IETF language elements the header editor will now derive the IETF language elements from the legacy elements. See #3557.
  • AppImage: the AppImage is now built on AlmaLinux 8 with Qt 6.5.1. This means that the minimum glibc version this AppImage is compatible with has also been bumped, to v2.28. The oldest Debian coming with this version is Debian 10 “Buster”; for Ubuntu it’s 18.10 “Cosmic Cuttlefish”.
  • Windows installer: the installer will now remove the file data\portable-app if it’s present in the installation directory as its presence would signal to the app to run in portable mode, requiring write access to its base directory. This fixes some installation issues that could occur when a user extracted a portable app archive into a folder like C:\Program Files\MKVToolNix. Also added an installation check for the same issue. See #3558.

Bug fixes

  • all: Linux: if initializing the locale system based on the system’s settings fails, e.g. if environment variables such as LC_ALL have been set to fr_FR.UTF-8 but the locale for fr_FR.UTF-8 hasn’t been built, MKVToolNix will try to fall back to en_US.UTF-8 first & C.UTF-8 second. If neither of the three succeeds, an error message will be shown, and the program will abort. This fixes the programs not catching an exception from the boost::filesystem library which doesn’t cope with mis-configured locale systems well. Workaround for #3574.
  • mkvmerge: sorting tracks by type did not work properly when some tracks weren’t copied. Part of the fix of #3567.
  • mkvmerge: track numbers in the destination file were assigned out-of-order when the track order in the source files differs from the one in the destination file. Now they’re assigned sequentially in the order the tracks appear in the destination file again. Part of the fix of #3567.
  • MKVToolNix GUI: under certain circumstances the GUI would try to display error messages from a secondary thread, which isn’t allowed in Qt, causing to program to either hang or outright crash. Part of the fix of #3556 & #3561.
  • MKVToolNix GUI: the GUI will check for several potential installation issues wrt. to having write access to certain directories (system’s temporary directory, MKVToolNix’s file identification cache directory and others) & display proper error messages if not. Part of the fix of #3556 & #3561.
  • MKVToolNix GUI: header editor: fixed the application crashing whenever you change a property below the “segment information” node. This bug was introduced in v77. Fixes #3556.
  • MKVToolNix GUI: header editor: when reading files that only contain legacy track language elements but no IETF track language elements, the header editor was showing all tracks as having “English” as the language. This bug was introduced in v77. Fixes #3557.
  • MKVToolNix GUI: header editor: when a legacy track language element contains a country code (e.g. fr-CA), the header editor was wrongfully using und = “undetermined” as the language for that element. Now it’ll use the language from the language/country pair, which would be fr in the earlier example. Part of the fix of #3557.
  • MKVToolNix GUI: header editor: the keyboard shortcuts from the “modify selected track” sub-menu didn’t work right after opening a file. They only started working after opening the “header editor” menu. Fixes #3573.
  • AppImage: fixed the GUI resources (e.g. icons) not being found.
  • AppImage: the Qt plugins required for using compose key/dead keys are now included. Fixes #3577.

Build system changes

  • The compilation database (compile_commands.json) is now always built. The variable BUILD_COMPILATION_DATABASE is not evaluated anymore.

Have fun 😁

MKVToolNix v77.0 released

Hey! 😁

It’s nearly summer & the weather’s nice where I live. So why not do another MKVToolNix release today? 😁 This release mostly fixes the messy situation with the dark application mode on Windows among a lot of other things. Additionally mkvmerge will now sort tracks by their type by default!

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 still 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: tracks in the destination file will now be sorted by their type automatically unless the track order is specified with the --track-order option. The order is as follows: video tracks first followed by audio & subtitle tracks with other rarely used types of tracks last. Tracks of the same type will be sorted in the same order as their source files occur in the command-line arguments. Note that this doesn’t affect file identification. Implements #3545.
  • MKVToolNix GUI: multiplexer: the default list colors used for distinguishing source files does not include the darkest tier anymore (the ones where one or two components are set to the value 0x3f) as they’re hard to distinguish from each other. Only affects new installations, or when the user presses the “reset to default colors” button. Implements #3533.
  • MKVToolNix GUI: multiplexer: the GUI will now check the state of the ‘track enabled’ flag of all video, audio & subtitle tracks when starting to multiplex or adding a job to the job queue. If there’s no track with its flag turned on for a type, the GUI will turn on the flag for the first track of the type. This behavior can be turned off in the preferences. Implements #3535.
  • MKVToolNix GUI: header editor: the columns in the tracks/attachments view and the values on the “track type” page will now be updated each time a corresponding property is changed (e.g. when a track’s name is changed) instead of showing what’s in the file on disk. Implements #3554.
  • MKVToolNix GUI: macOS: when you install the application from the DMG it’ll register itself as an alternate handler for its supported file types. This allows the use of the “Open with” context menu action in Finder.
  • MKVToolNix GUI: Windows: a new settings in the preferences lets the user chose whether to use the light or the dark color palette, or to follow the system settings. Part of the fix for #3528.

Bug fixes

  • Fixed compilation with fmt v10.0.0.
  • mkvmerge: fixed several instances of wrong format strings for fmt::format used in debug messages. Fixes #3548.
  • mkvmerge: AV1 packetizer: the packetizer did not honor the aspect ratio (factor) given on the command-line via the --aspect-ratio or --aspect-ratio-factor options.
  • mkvmerge: JSON identification: cropping parameters are reported again even if some of the four values are not present in the file or set to 0. Fixes #3534.
  • mkvmerge: Windows: when writing to a network share connected via SMB1 mkvmerge was aborting with a error about create_directory() failed with existing directories. This was due to a bug in recent versions of the Boost.Filesystem library. The Windows version of MKVToolNix will be built with Boost 1.82.0 from now on which includes the fix. Fixes #3547.
  • MKVToolNix GUI: the defunct “disable the dark mode” checkbox was removed from the preferences.
  • MKVToolNix GUI: language dialog: under certain conditions the controls for the individual components remained disabled when the dialog is opened even though editing of individual components is selected. Part of the fix of #3532.
  • MKVToolNix GUI: language dialog: the controls for the individual components weren’t re-initialized properly after opening the dialog for the second & all following times, potentially leaving previously selected/entered entries intact, primarily when editing multiple tracks at once. Part of the fix of #3532.
  • MKVToolNix GUI: header editor: using the actions from the “modify selected track” context menu only worked if the user right-clicked on the first column in the view. They now work for clicks on any of the columns. See also #3554.
  • MKVToolNix GUI: header editor: some of the actions toggling specific flags from the “modify selected track” did not work correctly if the flag wasn’t currently present in the file, especially if the underlying value has a default value in the Matroska specs.
  • MKVToolNix GUI: Windows: the GUI will now always use its own implementation of light & dark palettes instead of relying on Qt. This circumvents two issues with the palette support in Qt 6.5.0:
    1. if Windows 11’s dark application mode is active, links were displayed in a hard-to-read dark blue.
    2. for unknown reasons the the dark palette was not chosen on some Windows 11 installations even though Windows 11’s color mode was set to “dark”. This is a workaround for #3528.

Build system changes

  • The bundled fmt library was updated to v10.0.0.
  • MKVToolNix GUI now uses an external Qt resource file instead of compiling it into the executable. The resource file has reached a size at which the C++ compiler exhausts available virtual memory on some 32-bit architectures. On Windows & macOS the GUI will look for the file in <folder_with_executables>/data/qt_resources.rcc, and in the directory set with configure‘s --datadir parameter on other systems (which usually means /usr/share/mkvtoolnix). The install build system commands installs it into that folder.

Have fun 😁

MKVToolNix v76.0 released

Here’s yet another release, v76.0. This is a slightly bigger one in terms of the number of fixed bugs & implemented improvements. Due to the change wrt. the handling of BlockAddition elements (which is required for HDR content for WebM, VP9, AV1`) I strongly recommend users to upgrade.

NOTE: Windows 11 users having problems with the dark mode & links being too dark: I’ve implemented a workaround for hat since the release. Please download & use one of the latest continuous builds.

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 still being built and will be available over the course of the next couple of hours.

Here are the NEWS since the previous release:

Important notes

  • mkvmerge: removed the option --blockadd. Removing block additional data is not possible anymore, as it is often required for proper decoding. Part of the implementation of #3511.

New features and enhancements

  • mkvmerge: JSON file identification: added a child element called num_index_entries to the properties track element containing the number of index entries found for a track. Currently only implemented for Matroska files where it contains the number of cue points. See #3510.
  • mkvmerge: the maximum block addition ID track header value is now calculated automatically from both the existing mappings & the actually used block additions in the block groups. Part of the implementation of #3511.
  • mkvmerge: Matroska reader: when reading WebM files that use block additions with ID 4 (HDR for VP9) an appropriate block addition mapping will be created automatically. Part of the implementation of #3511.
  • mkvmerge: MP4 reader: the title/movie name meta data (content of the udta.meta.ilst.©nam atom) will now be copied over as the segment title track header attribute. Part of the implementation of #3475.
  • mkvmerge: MP4 reader: the comment & encoder meta data (content of the udta.meta.ilst.©cmt & ….©too atoms) will now be copied over as global tags COMMENT & ENCODER respectively. Part of the implementation of #3475.
  • mkvmerge, MKVToolNix GUI’s multiplexer: added an option to stop processing after the primary video track ends called --stop-after-video-ends. This discards any remaining packets of other tracks. Part of the implementation #3506.
  • MKVToolNix GUI: only on Windows: the GUI now uses Qt’s “Fusion” style instead of the deprecated “Windows Vista” style. The advantage is that as of Qt 6.5 the “Fusion” style properly supports Windows 10’s & 11’s dark application mode. The Windows binaries are now built with said Qt version. Therefore the option to disable the dark mode has been removed. Fixes #3264 and likely others.
  • MKVToolNix GUI: multiplexer: automatically setting the destination file name: added an option in the preferences for using the first source file’s directory name instead of its file name as the basis for the destination file name. Implements #3512.
  • MKVToolNix GUI: multiplexer: double-clicking on certain columns in the “tracks” view will now toggle them directly (columns “Default track” & “Forced track”) or activate the corresponding control (columns “Language”, “Name” & “Delay”). Double-clicks on other columns will do what they’ve done before, too: toggling the “Copy item” state. Implements #3513 & others.
  • MKVToolNix GUI: the dialog for editing language tags is now created only the first time the user wants to edit a language tag & cached afterwards instead of creating a new instance each time. This makes subsequent uses instant.

Bug fixes

  • mkvmerge: mkvmerge will now only try to probe for VobSubs if the name of the file to identify ends in either .idx or .sub, preventing mis-identification of other file types if VobSubs with the same base name exist in the same directory. Fixes #3508.
  • mkvmerge: AC-3: mkvmerge will now skip certain types of garbage data (16 bytes starting with 0x01 0x10) that can occur before each sync frame, fixing the file not being identified as AC-3. Fixes #3484.
  • mkvmerge: Matroska reader: when reading files that use block additions with IDs other than 1 (e.g. 4 for HDR for VP9) the IDs will now be kept & written to the output file. Before no ID would be written, effectively using 1 as that’s the default value for the corresponding element. Part of the implementation of #3511.
  • mkvmerge: mkvmerge will no longer write block addition mappings or the max block addition ID track header elements when creating a WebM file as those elements aren’t supported there. Part of the implementation of #3511.
  • mkvpropedit: fixed replacing chapters & tags in files that don’t contain tracks. Fixes #3498.

Have fun 😁