Category Archives: Matroska

MKVToolNix v82.0 released

Heya everyone!

Happy new year! Good time for a new release, I guess. This one with lots of bug fixes & enhancements. One important change is that Qt 5 is not supported anymore. The program now requires Qt 6.2 or newer for compilation.

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: Matroska reader: the “video alpha mode” track header property will be copied to the output file if present. Part of the implementation of #3643.
  • mkvmerge: Matroska reader: the “video alpha mode” track header property will be reported in JSON identification mode as the track property alpha_mode. Part of the implementation of #3643.
  • mkvmerge: Matroska reader: the file’s timestamp scaling factor will be reported in JSON identification mode as the container property timestamp_scale.
  • mkvmerge: MPEG transport stream reader: teletext subtitles intended for hearing impaired people (type 0x05) are now marked as such via the appropriate flag in the track headers.
  • mkvmerge: file identification: the JSON identification output schema version has been bumped to 19.
  • mkvmerge: added a new hack always_write_block_add_ids that can be used as a workaround for players that don’t support the handling of missing “Block Addition ID” sub-elements of “Block More” elements in block additions properly. These are used for e.g. alpha channel data in VP9 with a “Block Addition ID” value of 1, which is also its default value. Workaround for the player issues listed in #3643.
  • mkvinfo: added support for the “video alpha mode” track header element. Part of the implementation of #3643.
  • mkvpropedit, MKVToolNix GUI’s header editor: added support for the “video alpha mode” track header property. In mkvpropedit it’s called alpha-mode. Part of the implementation of #3643.
  • MKVToolNix GUI: multiplexer: when adding files the GUI can automatically enable the “hearing impaired” flag for audio and subtitle tracks if the file name contains the word “cc” or “sdh” delimited by certain characters (configurable). This feature is turned on by default. Implements #3648.
  • MKVToolNix GUI: multiplexer: when scanning for Blu-ray playlists the GUI will now ignore playlists that are likely meant for menus. Currently the GUI considers this to be the case when a playlist contains the same item at least five times. This behavior can be turned off in the preferences. Implements #3658.

Bug fixes

  • mkvmerge: MPEG transport stream reader: fixed a crash introduced in v81 that occurred when there was at least one PCM track that wasn’t copied from the transport stream file. Fixes #3645.
  • mkvmerge: when reading data from Matroska files damaged in a specific way, mkvmerge ended up trying to write various types of elements that aren’t allowed to be written (so-called EbmlDummy elements as well as elements that don’t have a value set) to the output file, which caused the underlying libebml library to abort. These types of broken elements are now filtered out.

Build system changes

  • Qt 5 is no longer supported. Qt 6 is now required for building MKVToolNix. This implies that the options to configure revolving around configuring Qt 5 or choosing between the two have been removed (e.g. --disable-qt6).
  • Qt 6 detection: if detection fails, error messages from qmake can now be found in config.log. See #3649.
  • Qt 6 detection: configure will only consider Qt 6.2.0 or newer, not 6.0.x or 6.1.y anymore, due to the lack of support for the multimedia module.
  • Qt 6 detection: configure will now fail to detect Qt 6 if the ‘multimedia’ module is not found by qmake (e.g. due to development packages not being installed). See #3649.
  • The bundled fmt library was updated to v10.1.1.

Have fun 😁

MKVToolNix v81.0 released

Heyo!

Here’s MKVToolNix v81, the latest & greatest etc. etc. A lot of work went into improving & finishing the support for Dolby Vision. Apart from that there are several usability improvements & bug fixes, as usual.

You can download the source code or one of the binaries. The Windows 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.

Please note that I don’t have macOS binaries yet, and due to issues with my build machine I cannot give an ETA for them either.

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: MPEG transport stream reader: HEVC/H.265: added support for reading single-layer Dolby Vision from Annex B type bitstream read from MPEG transport streams. Partially implements #3113.
  • mkvmerge: MPEG transport stream reader, HEVC/H.265 elementary stream reader: added support for reading dual-layer Dolby Vision with both the base & enhancement layers in the same track from Annex B type bitstreams in MPEG transport files & elementary stream files. Implements #3126.
  • mkvmerge: MPEG transport stream reader: HEVC/H.265: implemented combining dual-layer Dolby Vision with base & enhancement layers in different tracks. Implements #3127.
  • MKVToolNix GUI: multiplexer: added a new option in the preferences for always enabling ‘forced’ subtitle tracks. A subtitle track is considered to be ‘forced’ if: the corresponding property is set in the source file; the track’s name contains the word ‘forced’ (in English); deriving the ‘forced display’ flag from file names is active & the file name matches the corresponding pattern. The option is disabled by default. Implements #3627.
  • MKVToolNix GUI: multiplexer: the functionality for detecting file name sequences when adding files can now recognize the patterns used by GoPro’s cameras for chaptered video files. Implements #3633.
  • xyzvc_dump: the end position of the current NALU will be output in non-portable format as well.
  • xyzvc_dump: HEVC: the tool will now also output the inner NALU type of Dolby Vision NALUs (unspec62 and unspec63).

Bug fixes

  • mkvmerge: when the user requests processing be stopped after the video ends mkvmerge will now take appending files into account properly. It won’t stop processing unconditionally after the first file ends anymore. Fixes #3618.
  • mkvmerge: AV1 handling in readers: the readers will now provide the pixel dimensions to the AV1 packetizer as early as possible, just like for other video packetizers. That way the pixel dimensions are available for calculating the display dimensions when command-line options such as --aspect-ratio & --aspect-ratio-factor are used. Before the change the calculation was done based on initial pixel dimension values of 0x0, resulting in display dimensions of 0x0, too. Fixes #3611.
  • mkvmerge: HEVC/H.265 packetizer: when reading & appending HEVC/H.265 from Matroska, MP4/MOV or FLV files the first frame of all the appended files was sometimes dropped, resulting in broken video at the point where video is appended. Fixes #3479.
  • mkvmerge: MPEG transport stream reader: when reading MPEG transport streams from Blu-rays the four-byte long TP_extra_header structure in front of the transport packets are now skipped properly. Before the fix a stray byte with value of 0x47 inside that TP_extra_header structure could have thrown off the detection of where the transport packets start, leading to mkvmerge dropping a few audio and/or video frames at the start of the file. Fixes #3632.
  • mkvextract: AAC extractor: when an invalid program config element in the GA-specific config element is encountered, the program config element will be disregarded, which avoids mkvextract aborting with an exception. Fixes #3606.
  • xyzvc_dump: fixed the tool aborting with an exception when the last NALU in an Annex B type file was shorter than four bytes.

Other changes

  • AVC & HEVC dumper development tool: the tool has been renamed from xvc_dump to xyzvc_dump as xvc is an abbreviation for an existing video codec (Extreme Video Coding), and the tool has nothing to do with that codec.

Have fun! 😁

MKVToolNix v80.0 released

Heyo!

Time for another release. I’m still in a bit of a coding slump (or rather: preoccupied with all the amazing games that have come out this year); therefore this release is really, really small. I’ll likely do one more bug fix release this year that’ll be around this size as well. But let’s see how things shake out.

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: if the system’s locale uses one of the Han scripts, the GUI will force Arabic numerals to be used in spin boxes. This prevents Suzhou numerals from being used which seems to be the default on Windows systems sold in China. Implements #3624.

Bug fixes

  • build system: fixed detection of Qt6 if clang is used for compilation on Linux. In that case Qt’s qmake added a gcc-specific option that clang doesn’t understand, -mno-direct-extern-access. configure will now pass the parameter -spec linux-clang to qmake so that it uses the correct compiler flags.
  • build system: fixed the use of mktemp to be more portable to e.g. macOS. Fixes #3608.
  • mkvmerge: if a video aspect ratio was given with --aspect-ratio-factor, the code would apply a second factor based on the pixel resolution, resulting in much too large values for the DisplayWidth element. For example, with a pixel resolution of 720×520 & an aspect ratio factor of 1/1 the result should be 720×520, but instead it was 900×520. Up until release 76.0 this has only happened when a track order was given (which unfortunately includes all invocations with MKVToolNix GUI as it always includes the track order). Starting with release 77.0 this has always happened due to the automatic sorting of tracks implicitly creating a track order, even if none was given.

Have fun 😁

MKVToolNix v79.0 released

Heyo!

With up to 31°C outside, it’s a good idea to stay inside & do the likely last release of the summer for MKVToolNix, v79.0. Not a lot’s happened, but there’s support for AV1 with Dolby Vision. Yay!

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: AV1: added support for reading Dolby Vision from AV1 IVF & OBU streams. Patches by Quietvoid.
  • mkvmerge: MPEG TS reader: added support for colors in teletext subtitles. Patch by Angela Schmid.
  • MKVToolNix GUI: multiplexer: when adding files the GUI can automatically enable the “forced display” flag for subtitle tracks if the file name contains the word “forced” delimited by certain characters (configurable). This feature is turned on by default. Implements #3586.
  • MKVToolNix GUI: multiplexer: added the option --stop-after-video-ends to the dialog for additional command line options. Implements #3594.
  • MKVToolNix GUI: multiplexer: when adding Blu-ray playlists the dialog allowing the user to select the playlist to add will now show audio & video track properties as well (pixel dimensions for video; sampling frequency, channels for audio). Implements #3597.
  • MKVToolNix GUI: header editor: in order to reduce confusion with users non that versed in Matroska elements, the naming of the two “language” track properties has been changed: the old element is now titled “Language (obsolete)” & the current, IETF BCP 47 based one is simply called “Language”.
  • MKVToolNix GUI: preferences: you can now use the “delete” key to remove entries from simple list widgets for strings (e.g. the list of recently used destination directories).

Bug fixes

  • mkvmerge: DTS reader: if a DTS stream doesn’t start with a DTS core but a sub-stream element (EXSS), the reader will now look for a core. If found, it’ll start processing from there instead of from the start. This fixes the timestamp calculation if the sampling frequency in the core & in the extensions are different. Fixes #3602.
  • MKVToolNix GUI: multiplexer: the “emphasis” and “stereoscopy” combo-boxes now have a much smaller minimum width, allowing to make the whole “properties” pane much smaller again. Fixes #3581.
  • MKVToolNix GUI: macOS: when you install the application from the DMG it’ll no longer register itself as an alternate handler for its supported file types. It seems like this overrode existing associations, forcing people to change them manually to whatever they wanted them to be. Additionally this forced the associated file to always be shown with an MKVToolNix icon. The GUI’s own .mtxcfg files will still be registered. Fixes #3588.

Have fun! 😁