MKVToolNix v45.0.0 released

Hello dear people,

I sincerely hope you’re all healthy or at least on the way there. I’m fine, and having some more time on my hands I was able to get more done wrt. MKVToolNix. So this release is a bit bigger than the previous ones.

Nothing’s changed for package managers.

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: mkvmerge has never supported appending & splitting FLAC audio
    tracks. mkvmerge will now emit error messages when the user attempts either
    instead of continuing and creating invalid FLAC tracks.
  • MKVToolNix GUI: added an option in the preferences to turn on eliding text
    on tab headers. If enabled, tab names will be shortened so that all tab
    headers fit into the window’s width. Implements #2768.
  • MKVToolNix GUI: added an option in the preferences to disable all tooltips.
  • MKVToolNix GUI: Windows: debug output sent via Qt’s to Windows’ debugging
    facility will use a more verbose message format including the application
    name, making it easier to filter for in SysInternal’s "Debug View" utility.
  • MKVToolNix GUI: multiplexer: if the file identification fails due to a JSON
    parser error, the output generated by mkvmerge will be output via Qt’s
    debugging facility (viewable with SysInternal’s "Debug View" utility on
    Windows; on other systems it’s output on STDERR) allowing insight into
    what’s gone wrong.
  • MKVToolNix GUI: multiplexer: if an error occurs during file identification,
    the name of the processed file will be mentioned in the error message.
  • MKVToolNix GUI: multiplexer: if an error occurs during identification of
    multiple files, the GUI will ask the user whether to continue or abort the
    identification process. Implements #2778.
  • MKVToolNix GUI: job queue: added an option in the preferences for removing
    completed jobs when exiting the program depending on their status.
    Implements #2769.

Bug fixes

  • mkvmerge: H.265/HEVC packetizer: fixed changing the NALU size length, it was
    using the wrong offset into the hevcC structure.
  • mkvmerge: MP4 reader: fixed calculating the duration of video tracks that
    only contain a single frame. Fixes #2747.
  • mkvmerge: MP4 reader: if there’s no frame offset table (ctts atom) present
    for H.265/HEVC video tracks, mkvmerge will determine the timestamp order
    itself instead of relying on the timestamps in the MP4 being in the
    presentation order required by Matroska. Fixes #2777.
  • mkvpropedit: Windows: mkvpropedit wasn’t caching when reading the file to
    modify, slowing down operations such as adding track statistics tags
    considerably. Fixes #2761.
  • MKVToolNix GUI: multiplexer: when using the title as part of the destination
    file name (both automatically as well as using the "copy title to
    destination file name" function) all characters that aren’t valid in a file
    name are replaced by hyphens.
  • MKVToolNix GUI: multiplexer: the "copy title to destination file name"
    function was broken when the "make file name unique" option in the
    preferences was disabled. In that case the file base name was removed
    regardless of what the title was set to at the time.
  • MKVToolNix GUI: multiplexer: when using the "show command line" menu option
    on Windows the path to the mkvmerge executable was shown with forward
    slashes instead of backslashes. This is a purely cosmetic fix as Windows
    supports both forward and backward slashes.
  • MKVToolNix GUI: multiplexer: when adding Blu-ray playlists the GUI used to
    only look for the English version of the disc library information (title &
    cover images). Now the GUI will present all disc library entries in the
    "select playlist to add" dialog & let the user chose which one to use (if
    any). Fixes #2765.
  • MKVToolNix GUI: multiplexer, info tool: fixed the "warn before overwriting"
    check wrt. jobs creating the same file. Fixes #2758.

So try to have some fun, especially in these trying times.

MKVToolNix v44.0.0 released

Well hello everyon!

The last couple of weeks have been pretty slow wrt. MKVToolNix development (usually due to everything else being really hectic). Nevertheless I think it’s time for a small maintenance
release.

Nothing’s changed for package managers.

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: header editor: the attachments can now be reordered via drag
    & drop. Implements #2753.

Bug fixes

  • mkvmerge: Matroska reader: when encountering certain errors in the track
    headers such as the codec ID not being present mkvmerge will simply skip
    those tracks instead of exiting with an error. Fixes #2737.
  • MKVToolNix GUI: multiplexer: the "ask before overwriting" functionality did
    not look for the correct file names when splitting was active. Fixes #2741.

Have fun :)

MKVToolNix v43.0.0 released

Hey y’all,

let’s do a second release in January, fixing a couple of annoyances that crept in lately. Just a smaller maintenance release; nothing earth shattering. But see for yourself down below.

Nothing’s changed for package managers.

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: using one of the command line options --info,
    --edit-headers or --edit-chapters will make the GUI select the
    corresponding tool on startup even if no further file name is
    given. Implements #2723.
  • MKVToolNix GUI: multiplexer: added a setting in the preferences for changing
    the location of the MediaInfo executable for when the user accidentally
    selected the wrong one.

Bug fixes

  • mkvmerge: AVC/h.264 parser: the order of the NALUs before each key frame was
    sometimes wrong: mkvmerge wrote SPS & PPS after SEI NALUs. Now SPS & PPS
    NALUs are always written before the other NALUs. Patch by Torsten
    Hauska. Part of the implementation of #2709 and part of the fix of #2250.
  • mkvmerge: AVC/h.264 parser: when additional SPS or PPS NALUs (with IDs that
    haven’t been seen so far) are found mid-stream, mkvmerge will prepend all
    following key frames with all current valid SPS & PPS NALUs (just like when
    SPS & PPS NALUs are overwritten mid-stream). Part of the fix of #2250.
  • mkvmerge: MPEG TS reader: fixed detection of MPEG-1/2 video tracks
    consisting of very few frames. Fixes #2732.
  • mkvmerge: Ogg Opus reader: fixed the handling of Ogg Opus streams that
    contain a just one Ogg page (mkvmerge aborted with an exception). Fixes
    #2722.
  • MKVToolNix GUI: multiplexer: dragging & dropping XML files with chapters or
    tags to the GUI’s window was broken in v42. Instead of adding the file names
    to the appropriate input boxes the GUI was running mkvmerge for file
    identification purposes which then failed. Fixes #2718.

Have fun :)

MKVToolNix v42.0.0 relesaed

Hey everyone,

I sincerely hope y’all have had a good start into the new year and are sufficiently recovered from whatever you’ve done over the last couple of days. I’ve been busy fixing up release v42 of MKVToolNix. Yeah, I’m that boring :)

In this release a lot of source code changed under the hood as I replaced two external libraries (Boost’s “optional” and “regex” libraries) with ones from the C++ Standard Library. I tested extensively, but it’s quite possible there are bugs lurking due to those changes. If you find one, please file a bug on Gitlab as usual. Thanks!

Apart from that there were many, many changes; see below for the list.

Dear package maintainers: apart from the aforementioned library changes (Boost’s “optional” and “regex” are no longer used, they’ve been replaced with “std::optional” and “std::regex”) four new translations of man pages have been added. The required compiler versions haven’t changed, though: gcc ≥ 7 and clang ≥ 4 should work fine. Please adjust your packaging instructions accordingly.

And now for the usual boilerplate:

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: added an option for creating byte-identical files:
    --deterministic <seed>. Part of the implementation of #2698.
  • mkvmerge: Matroska reader: mkvmerge will remove the icpf atom headers if
    they’re present in frames read from Matroska files. Implements #2692.
  • mkvmerge: MP4 reader: ALAC tracks: the number of channels, sampling
    frequency and bit depth are now taken from the bitstream in order to fix
    bogus values on the container level. Implements #2714.
  • mkvpropedit: when changing track UIDs the referring elements in existing
    chapters & tags will be updated automatically, too. Part of the
    implementation of #2700.
  • mkvinfo: when the option -p/--hex-positions is used, element positions
    will be output regardless of the verbosity level. Part of the implementation
    of #2713.
  • mkvinfo: added the option -P/--positions for showing the position of
    each element in decimal regardless of the verbosity level used. Part of the
    implementation of #2713.
  • mkvinfo: added the option -o/--continue for continuing processing when
    the first cluster is encountered regardless of the verbosity level
    used. Part of the implementation of #2713.
  • mkvinfo: added the option -a/--all for outputting all sub-elements (even
    cues & seek head entries) and not stopping at the first cluster regardless
    of the verbosity level used. Part of the implementation of #2713.
  • MKVToolNix GUI: multiplexer: added an option in the preferences for
    disabling adding cover images from Blu-ray discs. Implements #2693.
  • MKVToolNix GUI: multiplexer: added mkvmerge’s new --deterministic option
    in the "additional command-line options" dialog. Part of the implementation
    of #2698.
  • MKVToolNix GUI: header editor:: when changing track UIDs the referring
    elements in existing chapters & tags will be updated automatically,
    too. Part of the implementation of #2700.

Bug fixes

  • mkvmerge: HEVC ES parser: fixed a bug in the slice parser calculating the
    size of a field which in turn could have led to the slice’s type being read
    wrong. Patch by Torsten Hauska. Fixes #2710.
  • mkvmerge: Matroska reader: fixed a segmentation fault when trying to read a
    file that uses header removal compression but no removed bytes are present
    in the track headers. Fixes #2687.
  • mkvmerge: MPEG elementary stream parser: fixed an invalid memory access and
    use of uninitialized memory that could happen under certain
    circumstances. Fixes #2690.
  • mkvmerge: RealMedia reader: fixed a division by zero when all audio
    timestamps were zero. Fixes #2689.
  • mkvmerge: RealMedia reader: fixed an invalid memory access in the video
    frame assembly code triggered by invalid data in the file. Fixes #2691.

Build system changes

  • std::optional (C++17 feature) is now used instead of boost::optional.
  • std::regex is now used instead of boost::regex.

Other changes

  • New man page translations into French, Italian, Russian and Chinese
    Traditional have been added.

Have fun :)