MKVToolNix v9.3.0 released

Here we go, MKVToolNix v9.3.0. It implements several enhancements requested by users, and of course it contains the usual list of bug fixes. Nothing major, mind you. But see below.

Dear package maintainers: please note that MKVToolNix v9.3.0 requires the recently released libEBML v1.3.4 and libMatroska v1.4.5.

You can download the source code or one of the binaries. The Windows and Mac OS binaries are available. Most of the Linux binaries are still being built and will be available in a couple of hours.

Here’s the full ChangeLog since the previous release:

  • 2016-07-13 Moritz Bunkus <moritz@bunkus.org>
    • Released v9.3.0 "Second Sight".
  • 2016-07-10 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge, MKVToolNix GUI: new chapter generation feature: two new placeholders have been introduced when generating chapters for appended files, <FILE_NAME> and <FILE_NAME_WITH_EXT>. The former will be replaced by the appended file’s name without its extension; the latter with its extension. Implements #1737.
    • MKVToolNix GUI: merge tool enhancement: when opening a saved configuration (via the menu as well as via drag & drop) the current tab will be replaced if it is empty ( = in the same state it is in right after creating new mux settings). Implements #1738.
    • mkvmerge, MKVToolNix GUI: added an option for specifying how much of a MPEG PS or TS file is probed for tracks (–probe-range-percentage). Implements #1734.
  • 2016-07-09 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: MPEG TS: considerable parts of the module have been rewritten. Due to its convoluted structure didn’t buffer PES packets properly before trying to parse the PES header leading to invalid memory accesses in certain cases.
  • 2016-07-03 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: fixed overly long file type detection in some cases when text subtitle type probing read a lot of data due to there being no carriage returns near the start of the file.
    • mkvmerge, mkvextract, MKVToolNix GUI: bug fix: several fixes to the handling of country codes. The list has been updated to reflect the currently valid top level domain country codes. Deprecated codes such as "gb" for "Great Britain" are now mapped to their updated values ("uk" for "United Kingdom" in this case). Fixes #1731.
    • mkvmerge: WavPack4 bug fix: relaxed the stream detection criteria to only require the major version to be 4 and not to check the minor version. Fixes #1720.
  • 2016-07-02 Chao Chen <tochenchao@gmail.com>
    • mkvmerge, mkvinfo: new feature: added flags to support the Colour elements in the video tracks of Matroska containers. Users can use those flags to specify the colour space, transfer function, chromaticity coordinates etc. These properties are useful for correct colour reproduction of high dynamic range / wide colour gamut videos.
  • 2016-07-02 Moritz Bunkus <moritz@bunkus.org>
    • configure: fixed the Qt detection with Qt 5.7.0 which now requires the compiler to be in C++11 mode.
    • build system: libEBML v1.3.4 and libMatroska v1.4.5 are now required due to the usage of new elements introduced in libMatroska v1.4.5. The copies included in the MKVToolNix source code have been updated to those releases as well.
  • 2016-06-28 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: MP4 bug fix wrt. DTS handling: mkvmerge will re-derive parameters such as number of channels and sampling frequency from the DTS bitstream circumventing invalid values in the track headers (e.g. a channel count of 0). Fixes #1727/1728.
  • 2016-06-27 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: TrueHD bug fix: fixed detection of 96 kHz sampling frequency.
  • 2016-06-24 Moritz Bunkus <moritz@bunkus.org>
    • mkvinfo’s GUI: fix a crash due to wrong usage of referenced temporary objects. Fixes #1725.
  • 2016-06-05 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: merge tool enhancement: the default track languages to set can now also be set whenever the language in the source file is ‘undefined’ (‘und’). This is now the default and can be changed back to the old behavior (only set if the source file doesn’t contain a language attribute) in the preferences. Implements #1697.
  • 2016-06-04 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: merge tool enhancement: menus have been added to both the "start muxing" and the "add to job queue" buttons. The menus let the user override the preferences regarding clearing merge settings after starting to mux and after adding a job to the queue respectively. Implements #1696.
    • mkvmerge: the warning about not being able to determine whether a raw AAC file contains HE-AAC/AAC+/SBR has been removed. Implements #1701.
    • MKVToolNix GUI: enhancement: all file names are now displayed with their native path separators (e.g. "C:\some\where\output.mkv" on Windows). Implements #1298, #1456.
    • MKVToolNix GUI: merge tool bug fix: the GUI now takes into account whether splitting is activated when looking for and warning due to existing destination files. Fixes #1694.
    • mkvmerge: bug fix: the parser for the –default-duration argument was wrongfully handling arguments of the form "123/456i" (only this specific syntax and only with "i" as the unit; other formats and units were fine). This is part of #1673. Additionally the parser doesn’t use the "double" data type internally anymore fixing loss of precision and failing test cases on certain 32bit platforms. This fixes #1705.

Have fun :)

MKVToolNix v9.2.0 released

Time for MKVToolNix v9.2.0. It’s a somewhat unremarkable release with Several smaller issues having been addressed and no huge changes or enhancements.

One important change for Windows and Mac OS users of mkvinfo is that the change to start the GUI by default has been reverted. Instead a separate executable (mkvinfo-gui) is included for those platforms which starts the GUI by default. The newly introduced option --no-gui will remain valid but won’t have any effect when used with the “mkvinfo” executable.

There have been no changes for package maintainers since the previous release.

You can download the source code or one of the binaries. The Windows and Mac OS binaries are available. Most of the Linux binaries are still being built and will be available in a couple of hours.

Please note that the Windows installers (but not the actual programs) accidentally include a build number from the start of May (20160504-01204). This is a solely cosmetic issue which can be ignored.

Here’s the full ChangeLog since the previous release:

  • 2016-05-28 Moritz Bunkus <moritz@bunkus.org>
    • Released v9.2.0 "Photograph".
  • 2016-05-20 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: merge tool enhancement: the action "select all attached files" in the popup menu actions for the attached files view has been split up into "enable all attached files" and "disable all attached files". Implements #1698.
  • 2016-05-15 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: bug fix on Windows: removing the drive letter does not cause the colon to be removed automatically anymore. Fixes #1692.
    • MKVToolNix GUI: merge tool bug fix: it’s no longer possible to select "1" as the maximum number of files to split into as mkvmerge doesn’t accept that value. Fixes #1695.
    • mkvmerge: bug fix: the "interval" chapter generation mode was always creating one chapter too many.
    • mkvmerge: bug fix: if a certain number of chapters had been generated with –generate-chapters then mkvmerge wasn’t replacing the void placerholder with the actual chapters. Fixes #1693.
  • 2016-05-14 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: merge tool bug fix: the track column "default track in output" wasn’t taking into account if the track had its "default track" flag set to "no" in the source file. This would result in the column showing "yes" in certain situations even though mkvmerge would assign "no".
  • 2016-05-06 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: fixed detection of (E-)AC-3 in MPEG TS files with unusual stream types (e.g. 0x87) but with (E-)AC-3 PMT descriptors. Fixes #1684.
  • 2016-05-05 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge, mkvextract: bug fix: fixed handling of Big Endian PCM with a bit depth other than 16, 32 or 64 bits/sample. Other formats were using the Little Endian codec ID, but their content was actually not byte-swapped to match it. Now those other bit depths are byte-swapped to Little Endian, too. Fixes #1683.
    • mkvinfo: the change to start the GUI by default on Windows and Mac OS has been reverted. Instead a separate executable (mkvinfo-gui) will be included for those platforms which starts the GUI by default. The newly introduced option "–no-gui" will remain valid but won’t have any effect when used with mkvinfo.
  • 2016-05-04 Moritz Bunkus <moritz@bunkus.org>
    • mkvinfo GUI: enhancement: the window title now includes the file name. Implements #1679.
    • mkvmerge: enhancement: the "bit depth" track header field will be set for DTS tracks from the first DTS core header. Implements #1680.
  • 2016-05-02 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: the time zone portion of the "date_local" member of the JSON and verbose identification formats contained the time zone’s name instead of its offset on Windows due to the Visual C++ runtime’s std::strftime not being C++11 compliant. Additionally this resulted in errors about invalid UTF-8 strings for locales where the time zone’s name contained non-ASCII characters.

Have fun :)

MKVToolNix v9.1.0 released

Here’s another release of MKVToolNix. Several bugs have been fixed. A rather important one is an update to the JSON library used which fixes immense memory consumption when loading stored settings (e.g. a ~500 KB JSON file leading to consumption of more than 2 GB of memory).

Enhancements include support for WebVTT subtitles, much improved support for teletext subtitles in MPEG transport streams and several more fields in the JSON/verbose identification formats.

There have been no changes for package maintainers since the previous release.

You can download the source code or one of the binaries. The Windows and Mac OS binaries are available. Most of the Linux binaries are still being built and will be available in a couple of hours.

Here’s the full ChangeLog since v8.9.0:
Here are the usual links:

…to the source code: http://mkvtoolnix.download/source.html
…to the binaries: http://mkvtoolnix.download/downloads.html

The Windows and Mac OS binaries are available. Most of the Linux binaries are still being built and will be available in a couple of hours.

Here’s the full ChangeLog since v9.0.1:

  • 2016-04-23 Moritz Bunkus <moritz@bunkus.org>
    • Released v9.1.0 "Little Earthquakes".
    • mkvmerge: MPEG TS/teletext enhancement: included the teletext page number in the JSON/verbose identification output as track property "teletext_page".
    • mkvmerge: MPEG TS bug fix: the "text_subtitles" property of the JSON/verbose identification modes was always set to true for all subtitle tracks, even for those that aren’t text subtitles (VobSub, PG).
    • mkvmerge: MPEG TS/teletext enhancement: if a teletext track contains multiple teletext pages then mkvmerge will now recognize all of those pages as separate tracks to merge instead of only merging the first page. See #1662.
  • 2016-04-21 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: MPEG TS/teletext enhancement: mkvmerge will now ignore obviously bogus PTS values for teletext tracks and use PTS from earlier audio or video packets instead. See #1662.
  • 2016-04-20 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: MPEG TS/teletext bug fix: the language code signaled in the MPEG TS PMT is taken into account when selecting the character encoding to use during decoding of the teletext subtitles, not just the "national character set" stored in the teletext page headers. For example, a German teletext page may signal "national character set" 0 (English) whereas it’s actually 4 (German). See #1662.
    • mkvmerge: teletext decoding bug fix: fixed dropping of certain non-ASCII characters in rare circumstances due to wrong filtering of already UTF-8 encoded strings.
    • mkvmerge: MPEG TS reader enhancement: teletext tracks of type 5 (hearing impaired) are recognized as subtitles, too. Implements #1662.
  • 2016-04-16 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: merge tool enhancement: characters that aren’t valid in path names are automatically removed from the output file name. Implements #1647.
    • MKVToolNix GUI: bug fix (Windows only): the GUI didn’t start if the USERNAME environment variable contained characters that aren’t allowed in file names (e.g. : or ?).
  • 2016-04-13 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: AVI reader bug fix: fixed reading files where the file ends in the middle of an audio chunk. Fixes #1657.
  • 2016-04-11 Moritz Bunkus <moritz@bunkus.org>
    • mkvextract: new feature: added support for extracting WebVTT subtitles. Implements the extraction part of #1592.
    • mkvmerge: new feature: added support for reading WebVTT subtitles from WebVTT and Matroska files. Implements the merge part of #1592.
    • mkvmerge: enhancement: when reading Matroska files not created by mkvmerge that contain chapters the existing edition UIDs and chapter UIDs are removed and random ones created. This is necessary as not only HandBrake but other tools assign sequential numbers starting at 1 for each file. Therefore there are two chapter entries with the UID 1, two with the UID 2 etc. and those should, strictly speaking, be treated as if they were a single chapter whereas the user expects those entries to stay separate entries.
  • 2016-04-09 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: new feature: added an option in the preferences ("Merge" → "Output") for controlling whether or not the GUI clears the "output file name" input upon removal of the last file.
    • MKVToolNix GUI: new feature: added an option in the preferences ("Merge" → "Default values") for controlling whether or not the GUI clears the "file title" input upon removal of the last file.
    • mkvmerge: bug fix: mkvmerge will no longer abort reading a Matroska file with a structural error right before the first cluster. Fixes #1654.
  • 2016-04-03 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: enhancement: added the muxing date in both local time zone and UTC to verbose/JSON identification outputs (keys "date_local" and "date_utc", formatted after ISO 8601) when identifying Matroska files.
  • 2016-04-02 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: enhancement: added the minimum timestamp for each track in verbose/JSON identification outputs (key "minimum_timestamp") when identifying Matroska files. At most the first ten seconds are probed; if no block is found for a track within that range then the key is not output for the track. Also added "muxing_application" and "writing_application" to the "container" section of the output. Currently those are only set for Matroska files.
  • 2016-03-31 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: merge tool change: attachments from source files have been moved from the "Tracks, chapters, tags and attachments" list on the "sources" tab to a new list on the "attachments" tab. That way all existing attachments and all the ones to newly add will be shown in a single tab. This makes it easier to decide which attachments will have to be added and which can be removed.
    • MKVToolNix: merge tool bug fix: when adding playlists the GUI won’t ask the user whether or not to scan if there’s only a single playlist in that directory.
  • 2016-03-29 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: AVC/h.264: fixed handling of interlaced frames with bottom field first.
    • MKVToolNix GUI: bug fix: fixed huge memory consumption (e.g. allocation of 2 GB for a JSON file of 650 KB) in the JSON library by updating said JSON library. Fixes #1631.

Have fun :)

MKVToolNix v9.0.1 released

Due to two nasty bugs in v9.0.0 I’ve decided to release a hotfix with v9.0.1 today. The first bug is a regression from v8.9.0 in the code handling character sets for text subtitle files. The other bug is in the new code for generating chapters automatically.

As the prior release v9.0.0 is only two days old I’m including v9.0.0’s full release announcement here:

Here’s another release of MKVToolNix. There were tons of bug fixes all over the place. The most important one is probably in the HEVC handler which won’t drop certain SEI NALUs anymore. This was a regression introduced in v8.7.0.

A change a lot of users of Windows and Mac OS will hopefully welcome is that mkvinfo launches with its GUI by default now unless the option “--no-gui” is given. Users of these two OSes often start mkvinfo by clicking on the executable instead of using start menu entries making adding the parameter “--gui” somewhat difficult. The behavior for other OSes has not been changed.

One of the new features is mkvmerge’s capability to generate chapters automatically whenever a new file is appended. Additionally it can also generate chapters in fixed intervals. This can be turned on in the GUI, of course.

There’s one change for package maintainers: a Korean translation of the programs and the man pages has been added.

You can download the source code or one of the binaries. The Windows and Mac OS binaries are available. Most of the Linux binaries are still being built and will be available in a couple of hours.

Here’s the full ChangeLog since v8.9.0:

  • 2016-03-28 Moritz Bunkus <moritz@bunkus.org>
    • Released v9.0.1 "Obstacles".
    • mkvmerge: bug fix: regression in v9.0.0: the text subtitle packetizer was wrongfully assuming an encoding of UTF-8 if none was given instead of assuming the system’s encoding. Fixes #1639.
  • 2016-03-27 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: if too many chapters had been generated with –generate-chapters then mkvmerge created a bogus entry in the meta seek element and did not actually write the chapters to the file.
    • mkvmerge: bug fix: the DTS packetizer was setting the number of channels wrong sometimes when reducing to the DTS core. It was using the number of channels including the extensions instead of the channels of the core only.
  • 2016-03-26 Moritz Bunkus <moritz@bunkus.org>
    • Released v9.0.0 "Power to progress".
  • 2016-03-25 Mike <kona8lend@gmail.com>
    • build system: implemented support for explicit pre-compiled headers for Linux and Mac OS.
  • 2016-03-25 Moritz Bunkus <moritz@bunkus.org>
    • Installer: fixed support for silent installation and uninstallation.
  • 2016-03-24 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: fixed two more issues in the conversion of teletext subtitles to SRT subtitles: 1. Packets belonging to pages that don’t contain subtitles were used as valid end points for subtitles causing entries to become very short (e.g. 40ms). 2. Sometimes the timestamps of wrong packets were used as entry’s start and end points causing start timestamps and durations that were slightly off. Second part of the fix for #1623.
  • 2016-03-22 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: MP4/QuickTime reader: audio tracks with the FourCC ‘lpcm’ are muxed as A_PCM/INT/LIT instead of A_QUICKTIME.
    • mkvmerge: bug fix: MP4/QuickTime reader: audio tracks can contain two instances of certain header fields (channel count, bits/sample & channel, sample rate) in the STSD atom: one instance in the version 0 header and one in the version 2 header parts. So far mkvmerge has used those from the version 0 header only and ignored the ones from the version 2 header. This has been changed to match the behavior of other players and MP4 readers like ffmpeg. If the STSD atom contains a version 2 structure then the fields from it will be used. Otherwise the fields from the version 0 part will be used. Fixes #1633.
  • 2016-03-21 Moritz Bunkus <moritz@bunkus.org>
    • all: new feature: added a new translation of both the programs and the man pages to Korean by Potato (see AUTHORS).
    • MKVToolNix GUI: chapter editor enhancement: added a button next to the ‘segment UID’ controls that enable the user to select a Matroska file. The GUI reads that file’s segment UID and enters its value into the input field.
  • 2016-03-20 Moritz Bunkus <moritz@bunkus.org>
    • build system: added an option to configure »–without-qt-pkg-config«. Normally configure uses pkg-config for detecting Qt and setting QT_CFLAGS and QT_LIBS. With this option configure won’t use pkg-config and rely on the user having set both variables before running configure. This enables using Qt on systems where no pkg-config files are generated (e.g. Qt 5.6.0 on MacOS with frameworks enabled).
  • 2016-03-18 Moritz Bunkus <moritz@bunkus.org>
    • mkvinfo: change: on Windows and Mac OS mkvinfo will now launch the GUI by default unless the option »–no-gui« (or »-G«) has been given. This is due to the fact that on both OS users often use portable versions respectively disk images and launch the executable directly and not via start menu entries. In those situations adding command line options for launching the GUI is unnecessarily difficult.
  • 2016-03-16 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: fixed two issues in the conversion of teletext subtitles to SRT subtitles: 1. Consecutive teletext packets with the same content are now merged into a single entry instead of resulting in multiple entries. 2. The calculation of a packet’s duration was wrong in certain situations. Part of the fix for #1623.
  • 2016-03-14 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: merge tool (playlist selection dialog) enhancement: the playlist items are sorted by their position within the playlist by default.
    • MKVToolNix GUI: merge tool (playlist selection dialog) enhancement: double-clicking on a playlist will select and add that playlist.
  • 2016-03-12 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: enhancement: added the number of bits per sample to the verbose/JSON identification output for FLAC files.
  • 2016-03-11 Moritz Bunkus <moritz@bunkus.org>
    • mkvextract: bug fix: fixed the duplication of VPS, SPS, PPS and SEI NALUs when extracting h.265/HEVC tracks. See #1076 and #1621.
    • mkvmerge: bug fix: reverted the patch by Vladimír Pilný that made the h.265/HEVC not store SEI NALUs with the frames during muxing. It was supposed to prevent having the SEI NALUs present twice when extracting HEVC due to some SEI information also being stored in the codec private data, but it dropped a lot of other SEI NALUs irrevocably. Fixes #1621.
  • 2016-03-09 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge: bug fix: the –sub-charset option is now ignored for text subtitle files that start with a byte-order mark (BOM) bringing the behavior in line with the documentation. Fixes #1620.
  • 2016-03-07 Moritz Bunkus <moritz@bunkus.org>
    • mkvextract: new feature: implemented the extraction of Big Endian PCM (codec ID A_PCM/INT/BIG) to WAV files. The content will be byte-swapped into Little Endian PCM in the process.
    • mkvmerge: enhancement: Big Endian PCM tracks will now be byte-swapped into Little Endian PCM, and the codec ID A_PCM/INT/LIT will be used. This was done due to a lot of players not supporting Big Endian PCM inside Matroska.
  • 2016-03-01 Moritz Bunkus <moritz@bunkus.org>
    • mkvmerge, MKVToolNix GUI: new feature: added switches (»–generate-chapters« and »–generate-chapter-name-template«) and their corresponding UI items for generating chapters while muxing. Two modes are currently supported: »when-appending« which creates one chapter at the beginning and an additional one each time a file is appended and »interval:…« which generates chapters in fixed intervals. Implements mkvmerge’s and the GUI’s part of #1586.
  • 2016-02-28 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: job queue enhancement: completed jobs will now be removed from the queue automatically on exit if the job has been added more than 14 days ago in order not to let the queue grow arbitrarily large. This feature can be turned off and the number of days can be adjusted in the preferences.
  • 2016-02-27 Moritz Bunkus <moritz@bunkus.org>
    • mkvpropedit, MKVToolNix GUI’s header editor: bug fix: fixed the handling of files where the last level 1 element has an unknown size. The programs will now either fix this element to have a known size or abort the process with an appropriate error message but without modifying the file. Fixes #1601.
  • 2016-02-25 Moritz Bunkus <moritz@bunkus.org>
    • mkvextract: enhancement: when extracting chapters in the simple format the user can use the new option »–simple-language …« for selecting the chapter names that are output. Normally the first chapter name found in each atom is used. With this option mkvextract looks for a chapter name whose language matches the specified one. Implements the feature enhancement part of #1610.
    • mkvextract: several issues regarding the extraction of chapters in the simple format have been fixed: if multiple names with different languages were present then an entry had been written for each name; the total number of entries written was wrong; the wrong entries were written. The new code only writes the first name found from the top-most chapter atoms of all editions. Chapters flagged as hidden or as not enabled are not extracted at all. Fixes the bug part of #1610.
  • 2016-02-24 Moritz Bunkus <moritz@bunkus.org>
    • MKVToolNix GUI: new chapter editor feature: added an option to multiply all chapter timecodes by a factor to the "additional modifications" dialog. Implements #1609.

Have fun :)