Monthly Archives: March 2016

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 :)

MKVToolNix v9.0.0 released

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 the previous release:

  • 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 :)

Signed source code for MKVToolNix

As of today I’m signing the source code archives for MKVToolNix with my GPG key (to be more precise: with sub-key ID 0x74AF00AD F2E32C85, fingerprint 3301 A29D 88D0 1A0C F999 954F 74AF 00AD F2E3 2C85, of key ID 0x0F92290A 445B9007, fingerprint D919 9745 B054 5F2E 8197 062B 0F92 290A 445B 9007). The signature’s file name is the tarball’s file name with .sig appended (e.g. mkvtoolnix-8.9.0.tar.xz.sig for the archive mkvtoolnix-8.9.0.tar.xz). They’re stored in the same directory.

I’ve also signed all existing releases of MKVToolNix, too.

In order to avoid confusion: I’m using two different GPG keys. The first one (sub-keys of key ID 0x0F92290A 445B9007) is used for email, Debian/Ubuntu APT repository signing and now source code signing and another one (key ID 0x16D2F5DC 10C052A6, fingerprint EB24 BCA1 4BA6 A24F 1427 6FEE 16D2 F5DC 10C0 52A6) for signing the RPMs I provide. The reason is that RPM itself doesn’t support using a sub-key for signing RPMs; it can only use normal keys, unfortunately.

Additionally I use a x.509 certificate by StartSSL (SHA1 fingerprint: 48:13:1B:5D:41:63:12:07:D2:86:20:6C:28:F3:78:C8:06:6F:34:AA) for signing the Windows binaries I provide (both the installers as well as the executables that make up MKVToolNix). Note that I’ve only started signing Windows binaries with release 8.9.0. Therefore older binaries aren’t signed.