MKVToolnix - Aktuelle Version

    • 9.5.0 "Quiet Fire".
      * mkvmerge, mkvextract: VobSub handling bug fix: mkvmerge and mkvextract will now update the duration stored in the SPU bitsream with the
      duration from the container level if it differs at least 1ms. Fixes
      #1771.


      2016-10-15 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: h.264 elementary stream handling bug fix: if mkvmerge ever
      encounters changing SPS or PPS NALUs (ones where their ID has been
      encountered before with different settings) in the h.264 then it will
      prepend all following key frames with all currently active SPS and PPS
      NALUs. This enables playback from arbitrary key frames even if they
      require other SPS or PPS settings than the ones stored in the AVCC in
      CodecPrivate.
      Fixes #1711.


      2016-10-12 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge, mkvpropedit, MKVToolNix GUI: added support for the "field order" video track header element.
      * mkvinfo: added support for the "field order" video track header element. Patch by James Almer (see AUTHORS).
      * mkvmerge: MPEG transport stream reader bug fix: fixed the handling of
      Blu-ray PCM audio with an odd number of channels by removing their
      alignment bytes.


      2016-10-10 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: MPEG transport stream reader bug fix: fixed mis-detection of certain h.264 files as MPEG transport streams.


      2016-10-09 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: WAV reader bug fix: the track properties (channels, sample
      rate) for DTS and AC-3 in WAV will now be derived from the decoded
      bitstream headers instead of the WAV file header as the latter is often
      incorrect.
      * mkvmerge: WAV reader bug fix: fixed detection and merging of DTS in WAV that uses the 14-bytes-in-16-bytes packing method.


      2016-10-08 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: merge tool enhancement: added menu entries that
      execute the "close", "save settings", "start muxing" or "add to job
      queue" action for all currently open tabs.


      2016-10-07 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: merge tool enhancement: when dragging & dropping
      directories the GUI will process all files within those directories
      recursively instead.


      2016-10-06 Moritz Bunkus <moritz@bunkus.org>
      * mkvpropedit, MKVToolNix GUI's header editor: added options to modify
      the "muxing application" and "writing application" elements in the
      "segment information" container. Implements #1788.


      2016-09-30 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: bug fix: The Ogg/OGM reader did not recognize Opus files
      with comment headers anymore. This was broken by the fix to not require
      Ogg/OGM files to have comment headers in v9.4.0.
    • 9.6.0 "Slave To Your Mind".



      2016-11-28 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge & mkvextract: added support for HDMV TextST subtitles.

      2016-11-20 Moritz Bunkus <moritz@bunkus.org>
      * mkvextract: VobSub bug fix: mkvextract will add a "langidx" line to the .idx file upon extraction. Fixes #1810.


      2016-11-14 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: multiplexer enhancement: added a column "source file's directory" to the track list. Implements #1809.
      * MKVToolNix GUI: multiplexer enhancement: added an option for selecting all tracks of the currently selected source files in the source file context menu. Inspired by #1809.


      2016-11-07 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: job output tool bug fix: the button for acknowledging warnings & errors wasn't properly disabled when the user used outside methods of acknowledging them (e.g. via the menu or via the job queue). Fixes #1802.


      2016-10-31 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: MPLS parser bug fix: fixed reading the "in" & "out" timestamps for "play items". This bug resulted in mkvmerge not reading the correct range from the referenced M2TS file under certain rare circumstances.


      2016-10-30 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: bug fix: mkvmerge was entering endless loops under certain conditions when appending files. This was a regression introduced with the fix to #1774 (using very large --sync values causing mkvmerge to abort).


      2016-10-23 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: new feature: added options in the preferences to only show the list of often used languages/country codes/character sets in their respective selections instead of both the often used and the full list. Implements #1796.
    • 9.7.0 "Numbers".

      * Deprecation warning: Several options and features are now deprecated and will be removed at the start of 2018. These are:
      - mkvmerge: the options "--identify-verbose", "--identify-for-gui", "--identify-for-mmg" and "--identification-format verbose". Please convert existing users of these interfaces to use mkvmerge's JSON identification output which can be invoked with "--identification-format json --identify …".
      - all command line tools: the old, proprietary format used for option files. Please convert users of this interface to the new JSON option file format introduced in this release.
      - all command line tools: the option "--check-for-updates" (the GUI will keep its online check for updates, though). There is and will be no equivalent interface in the tools themselves. Users of this interface can switch to retrieving the information about available updates directly from the MKVToolNix website. The information is available as JSON and XML files at the following URLs:
      mkvtoolnix.download/latest-release.json.gz mkvtoolnix.download/latest-release.xml.gz

      2016-12-26 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: enhancement: added a new track property in JSON/verbose identification mode called "multiplexed_tracks". It's an array of track IDs that describe which of the tracks mkvmerge reports as separate ones were originally part of the same source track (e.g. TrueHD+AC-3 in a single track in MPEG transport streams). Implements #1835.


      2016-12-23 James Almer <jamrial@gmail.com>
      * mkvmerge: added support for skipping APE(v2) tags in TTA files.


      2016-12-22 Moritz Bunkus <moritz@bunkus.org>
      * mkvextract: enhancement: added support for reporting progress in --gui-mode the same way mkvmerge does.
      * mkvmerge: bug fix: when using --track-order without specifying all tracks, the track numbers could end up in a way the user did not expect. Now mkvmerge will always assign track numbers for those tracks that are listed in --track-order first. The other tracks are assigned numbers afterwards. Fixes the second part of #1832.
      * mkvmerge: bug fix: when reading Matroska files the movie title was always taken from the first Matroska source file, even if that file didn't have a title set. Fixes one part of #1832.


      2016-12-19 Moritz Bunkus <moritz@bunkus.org>
      * all: new feature: all command line tools can now read JSON-formatted option files. Such a file's name must have an extension of ".json" (e.g. "mkvmerge @options.json"). Its content must be a valid JSON array consisting solely of JSON strings.


      2016-12-17 Moritz Bunkus <moritz@bunkus.org>
      * build system: building the GUI components of MKVToolNix now requires Qt v5.3.0 or newer.


      2016-12-16 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: header editor & jot output enhancement: added menu entries for saving or closing all open tabs.


      2016-12-13 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: chapter editor enhancement: added menu entries for saving or closing all open tabs.
      * build system: MKVToolNix now requires a compiler that supports the following features of the C++14 standard: "std::make_unique()", "digit separators", "binary literals" and "generic lambdas". For the GNU Compiler Collection (gcc) this means v4.9.x or newer; for clang it means v3.4 or newer.


      2016-12-11 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: MPEG TS/MPLS reader improvements: added support for subtitle tracks that are referenced from the MPLS file as sub-paths in other M2TS files than the main tracks.


      2016-12-08 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: re-worked the startup code not to use lock files when trying to open a socket for communicating with an already-running instance. This aims to prevent situations with stale lock files not being cleaned up and the GUI not starting anymore as a result. This might fix or prevent issues like #1805.
      * mkvmerge: teletext subtitle bug fix: fixed the handling of DVB teletext subtitles signaled with data unit ID 0x02 and that contain pages from multiple magazines.


      2016-12-05 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: multiplexer enhancement: the file identification process has been re-written to be properly multi-threaded. This allows the user to continue working with the GUI while e.g. playlists from a Blu-ray are identified.


      2016-12-03 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: enhancement: mkvmerge can now handle Blu-ray playlists from the "BACKUP" sub-directory of a Blu-ray disc.
      * MKVToolNix GUI: new multiplexer feature: added a menu entry for copying the title to the destination file name. It will replace the destination file's base name but keep its path & extension.
      * MKVToolNix GUI: new multiplexer feature: all positive file identification results will now be cached between runs. This speeds up adding the same file a lot, especially when scanning the same Blu-ray playlists again. Cached results are invalidated automatically with newer MKVToolNix releases or when the source file changes.


      2016-12-02 Moritz Bunkus <moritz@bunkus.org>
      * MKVToolNix GUI: multiplexer enhancement: when the user tries to add one of the main Blu-ray index files (index.bdmv, MovieObject.bdmv) the GUI will automatically scan the Blu-ray playlist files and offer them for selection.
      * mkvmerge: bug fix: files smaller than 4 bytes were wrongly identified as MPEG transport streams.
      * MKVToolNix GUI: multiplexer enhancement: tracks, chapters, tags, attachments not selected for multiplexing will be displayed the same way as other disabled controls. Implements #1819.


      2016-11-30 Moritz Bunkus <moritz@bunkus.org>
      * mkvmerge: bug fix: the MPEG transport stream reader was using an outdated format for the "CodecPrivate" element for HDMV TextST subtitles. This has been updated to the current format which only contains the "dialog style element".
      Existing Matroska files using this outdated scheme can be fixed by running them through mkvmerge v9.6.0 itself or any later release as the old format is automatically converted to the new one when it is read from Matroska files.
    • 9.8.0 "Kuglblids"
      ## Important notes

      * build system: the included version of the "drake" build tool has been removed. Since Ruby 2.1 rake has supported parallel builds, too. The MKVToolNix build system has been adjusted to enable parallel builds by default.


      ## New features and enhancements


      * mkvmerge: VobSub in Matroska: mkvmerge will now create and use a default index for VobSub tracks read from Matroska files that are missing their CodecPrivate element (which normally contains said index). Implements #1854.
      * GUI: added checks for several common problems with the installation. These checks will be executed when the GUI starts, and any problems will be reported to the user.
      * mkvmerge: added the ISO 639-2 language codes "qaa" and "qad" (both are titled "reserved for local use") as both are used often in France. See #1848 for more information.
      * mkvmerge: the JSON identification result now includes a track's codec delay if set (only for Matroska source files). The JSON schema version has been bumped to 6.
      * mkvmerge: MPEG TS: added a workaround for files where the subtitle packets are multiplexed properly, but where their timestamps are way off from the audio and video timestamps. Implements #1841.
      * mkvmerge: added support for Digital Video Broadcasting (DVB) subtitles (CodecID `S_DVBSUB`). They can be read from MPEG transport streams and from Matroska files. Implements #1843.


      ## Bug fixes


      * mkvmerge: MP4 reader: when an MP4 file contained fewer entries for timestamps than frames (which they never should), mkvmerge would use 0 as the timestamp for all the other frames. This resulted in effects such as the last frame of an output file having a timestamp of 0 and in split files having a much longer duration than they should have. Fixes #1847.
      * GUI: the cache cleanup process that's run automatically when the GUI starts no longer blocks file identification until it is finished. Additionally the process will only be run once per release of MKVToolNix. Fixes #1860.
      * GUI: certain failures during file identification that can be traced to broken installations (e.g. mkvmerge being too old) won't be stored in the cache anymore. Without this fix the GUI would still use the cached failed identification result even though the underlying might have already been fixed.
      * mkvmerge: fixed that the error message "not enough space on disk" was shown twice on some operating systems. Fixes #1850.
      * mkvmerge, Matroska: if a codec delay is set for a track in the input file, it is kept. Fixes #1849.
      * GUI: multiplexer: changing default values in the preferences (e.g. the default track language to set) did not affect files whose identification results had already been cached.
      * mkvmerge, MP4: fixed detection of MP3 audio when the object type ID in the ESDS signals MP2 and the track headers have invalid values for number of channels or sampling frequency. Fixes #1844.


      ## Build system changes


      * nlohman json-cpp: configure now looks for a system-wide installed version of the nlohmann json-cpp header-only library. If one is found, it is used; otherwise the included version will be used. Implements #1858.
      * If MKVToolNix is built with rake v10.0.0 or newer, its "multitask" feature will be turned on allowing automatic parallel builds.
      * CURL is no longer used by MKVToolNix and is therefore not required for building anymore.


      ## Other changes


      * GUI: the update check now uses Qt's networking classes instead of CURL.
      * The command line option "--check-for-updates" has been removed, even though the deprecation warning in release 9.7.0 stated that it would be removed in 2018.
    • 9.9.0 "Pick Up"
      ## New features and enhancements

      * GUI: chapter editor: added a character set selection in the preferences for text files. If a character set is selected there, it will be used instead of asking the user when opening text chapter files. Implements #1874.
      * GUI: multiplexer: added a column "character set" to the "tracks, chapters and tags" list view showing the currently selected character set for that track. Implements #1873.
      * mkvmerge: added an --engage option "all_i_slices_are_key_frames" for treating all I slices of an h.264/AVC stream as key frames in pathological streams that lack real key frames. Implements #1876.
      * GUI: running programs after jobs: added a new variable <MTX_INSTALLATION_DIRECTORY> for the directory the MKVToolNix GUI executable is located in.
      * mkvmerge: DVB subtitle tracks whose CodecPrivate data is only four bytes long will now be fixed up to the proper five bytes by adding the subtitling type byte.
      * mkvmerge: MP4 reader: "ctts" version 1 atoms are now supported.


      ## Bug fixes


      * mkvmerge: AC-3 handling: some source files provide timestamps for audio tracks only once every n audio frames. In such situations mkvmerge was buffering too much data resulting in a single gap in the timestamps of one frame duration after frame number n - 1 (the second audio timestamp read from the source file was used one output frame too early). Fixes #1864.
      * mkvmerge: MP4 reader: mkvmerge was only reading a small part of MP4 DASH files where the first "moov" "mdat" atoms occur before the first "moof" atom. This is part of the fix for #1867.
      * mkvmerge: MP4 reader: edit list ("edts" atoms) that are part of the "moof" atoms used in MP4 DASH files weren't parsed. Instead the edit lists from the main track headers inside the "moov" atom were used. This is part of the fix for #1867.
      * mkvmerge: MP4 reader: when an MP4 DASH file contained both normal chunk offset table ("stco"/"co64" atoms) in their regular "moov" atoms, a sample-to-chunk table ("stsc" atom) whose last entry had a "samples per chunk" count greater than 1 and DASH "trun" atoms, then mkvmerge was calculating wrong positions the frame content. This is part of the fix for #1867.
      * mkvmerge: MP4 reader: mkvmerge couldn't deal with the key frame index table having duplicate entries. The result was that only key frames up to and including the first duplicate entry were marked as key frames in the output file. All other frames weren't, even though some of them were referenced from the key frame table after the first duplicate entry. This is part of the fix for #1867.
      * mkvmerge: MP4 reader: when an MP4 file contained more than one copy of the "moov" atom (the track headers etc.), mkvmerge was parsing them all adding tracks multiple times. Fix for #1877.
      * mkvmerge: MP4 reader: fixed an integer overflow during the timestamp calculation leading to files with wrong timestamps. Such files could not be played back properly by most players. Fixes #1883.
      * mkvmerge: MPEG TS reader: if the PMT lists a DVBSUB track, mkvmerge will now recognize it without having to find a packet for it within the probed range.
      * mkvmerge: splitting by parts (both the "timestamps" and the "frames" variants): fixed the calculation of track statistics tags. When calculating the duration the skipped portions weren't taken into account leading to a too-high duration. As a consequence the BPS tag (bits per second) was wrong, too. Fixes #1885.
      * mkvmerge: reading files with DVB/HDMV TextSV subtitle tracks with invalid CodecPrivate caused mkvmerge to abort with an error from boost::format about the format string not having enough arguments. Fixes #1894.
      * mkvmerge: fixed misdetection of certain AC-3 files as MP3 files which led to an error message that "the demultiplexer could not be initialized".
      * mkvmerge: fixed huge memory consumption when appending big Matroska files with sparse tracks (e.g. forced subtitle tracks). The Matroska reader will now queue at most 128 MB of data. Fixes #1893.
      * mkvmerge: MP4 reader: the timestamps of all multiplexed tracks will now be 0-based properly.
      * mkvmerge: MP4 reader: the DTS-to-PTS offsets given by the "ctts" atoms are now applied for all tracks containing a "ctts" atom, not just h.264 & h.265 tracks.


      ## Build system changes


      * Up to and including release 9.8.0 the man pages and their translations came pre-built and bundled with the source code. Those pre-built files have now been removed and must be built during the build process. Therefore the tool "xsltproc" and the DocBook XSL stylesheets for man pages are now required dependencies. Additionally the tool "po4a" must be installed for the translated man pages to be built and installed, though this is optional.
      In order to facilitate finding the new requirements new options have been added to confiure: "--with-xsltproc=prog", "--with-docbook-xsl=dir", "--with-po4a=prog" and "--with-po4a-translate=prog.
      * pugixml detection will be attempted via "pkg-config" first. If that fails, "configure" will fall back to the previous method of trying just to compile and link a test program with the standard include and library locations. Implements #1891.
    • 10.0.0 "To Drown In You"
      ## New features and enhancements

      * mkvmerge: AVC/h.264 parser: mkvmerge will now drop all frames before
      the first key frame as they cannot be decoded properly anyway. See
      #1908.
      * mkvmerge: HEVC/h.265 parser: mkvmerge will now drop all frames before
      the first key frame as they cannot be decoded properly anyway. See
      #1908.
      * mkvmerge: HEVC/h.265 parser: added a workaround for invalid values for
      the "default display window" in the VUI parameters of sequence
      parameter sets. Fixes #1907.


      ## Bug fixes


      * mkvmerge: MP4 reader: fixed track offsets being wrong in certain
      situations regarding the presence or absence of edit lists ('elst'
      atoms) & composition timestamps ('ctts' atoms). Fixes #1889.
      * mkvmerge: MP4 reader: offsets in "ctts" are now always treated as signed integers, even with version 0 atoms.
      * mkvinfo: the timestamps of SimpleBlocks with negative timestamps are now shown correctly.
      * mkvmerge: Matroska reader: fixed handling BlockGroups and SimpleBlocks with negative timestamps.
      * mkvmerge: MP3 packetizer: the MP3 packetizer will no longer drop
      timestamps from source containers if they go backwards. This keeps A/V
      in sync for files where the source was in sync even though their
      timestamps aren't monotonic increasing. Fixes #1909.
      * mkvmerge: AVC/h.264 parser: mkvmerge will now drop timestamps from the
      source container if no frame is emitted for that timestamp. Fixes
      #1908.
      * mkvmerge: HEVC/h.265 parser: mkvmerge will now drop timestamps from
      the source container if no frame is emitted for that timestamp. Fixes
      the HEVC equivalent of the problem with AVC described in #1908.
      * mkvextract: SSA/ASS: fixed extraction when the "Format" line in the
      "[Events]" section contains less fields than the default for SSA/ASS
      would indicate. Fixes #1913.
    • 11.0.0 "Alive"

      ## New features and enhancements

      * mkvmerge: FLAC reader: added support for handling embedded pictures as attachments. Implements #1942.
      * mkvmerge: MP4 reader: merged pull request #1804 adding support for
      parsing the "COLR" atom and including its values as track headers.
      * MKVToolNix GUI: watch jobs: the user can now have the GUI execute an
      action once as soon as the current job or the whole queue finishes. The
      actions are the same ones that can be configured to be run automatically
      after job or queue completion.
      * MKVToolNix GUI: implemented several built-in actions that can be
      executed either on special events or once via the "watch jobs" tool.
      These are: playing an audio file (implemented for all operating
      systems); hibernating, sleeping and shutting down the computer (only
      implemented for Windows and for Linux systems using systemd).
      * MKVToolNix GUI: multiplex tool: added a new option for what to do
      after starting to multiplex/adding to the job queue: "close current
      settings" will close the current multiplex settings without opening new
      ones.


      ## Bug fixes


      * mkvmerge: AAC parser: fixed mis-detection of certain data as valid
      ADTS AAC headers resulting in memory allocation failures. Fixes #1941.
      * mkvmerge: AVC/h.264 parser: mkvmerge will now ignore bogus timing
      information in the sequence parameter sets (values indicating more than
      100000 progressive frames per second). Fixes #1946.
      * mkvmerge: AVC/h.264 & HEVC/h.265 parsers: all trailing zero bytes will now be removed from NALUs. Fixes #1952.
      * mkvmerge: HEVC/h.265 parser: fixed copying the
      `bitstream_restriction_flag` and all dependent fields in the VUI
      parameters of the sequence parameter sets. Fixes #1924.
      * mkvmerge: HEVC/h.265 parser: fixed the calculation of the number of
      parameter set arrays in the HEVCC data structure stored in CodecPrivate.
      Fixes the video-related part of #1938.
      * mkvmerge: HEVC/h.265 parser: fixed writing superfluous and
      uninitialized bytes at the end of the HEVCC data structure stored in
      CodecPrivate. Another fix for the video-related part of #1938.
      * mkvmerge: HEVC/h.265 parser: fixed the assumption that the HEVCC data
      structure always includes arrays for all parameter set types (VPS, SPS,
      PPS and SEI), and that the order is always VPS ? SPS ? PPS ? SEI.
      Instead now only the arrays actually present are parsed, and they can be
      in any order. This fixes mkvinfo's output for Matroska files created
      from files such as the one from #1938.
      * mkvmerge: AVC/h.264 packetizer: when reading a framed track (e.g. from
      Matroska or MP4 files), specifying a default duration as fields (e.g.
      `50i`) would result in double the actual duration for each frame and the
      track's default duration header field. Fixes #1916.
      * mkvmerge: Matroska reader: invalid track language elements are now
      treated as if they were set to `und` = "undetermined". See #1929 for
      context.
      * mkvmerge: MPEG TS reader, AAC: mkvmerge will now require five
      consecutive AAC headers with identical parameters before track type
      determination is considered valid. This avoids false positives and
      consequently wrong track parameters. Fixes the audio-related part of
      #1938.
      * mkvmerge: fixed an endless loop in certain circumstances when
      splitting by `parts` or `parts-frames` and the start of the file is
      discarded. Fixes #1944.
      * MKVToolNix GUI: multiplexer tool: the "show command line" dialog will
      no longer include the mkvmerge executable's location as the first
      argument for the two "MKVToolNix option files" escape modes. Fixes
      #1949.
      * MKVToolNix GUI, header editor: empty track language elements are now
      treated the same as those set to invalid ISO 639-2 codes: as if they
      were set to `und` = "undetermined". See #1929 for context.


      ## Build system changes


      * bug fix: configure now looks for the `strings` binary by using the
      `AC_CHECK_TOOL()` autoconf macro. That way it will be found in multiarch
      setups, too. Fixes #1923.
      * bug fix: the environment variable USER_CXXFLAGS was accidentally
      removed from the compiler flags in release 9.8.0. It's been re-added.
      Fixes #1925.
      * The `.desktop` files have been renamed to
      `org.bunkus.mkvtoolnix-gui.desktop` and `org.bunkus.mkvinfo.desktop`.
      This allows Wayland compositors to associate the correct icons with
      running applications for e.g. task switchers. Fixes #1948.
      * Qt's multimedia component is required for compilation of the GUIs since version 11.

    • 12.0.0 "Trust / Lust"
      ## New features and enhancements

      * MKVToolNix GUI: the key combination Ctrl+Shift+Space will now toggle the selection of the current item in all tree views where multiple selections are allowed. Implements #1983.
      * MKVToolNix GUI: chapter editor: added the extension `*.cue` (for cue sheet files) to the "open chapter file" dialog.
      * mkvmerge: cue sheet parser: if the cue sheet contains a non-empty `TITLE` entry and if no other segment title has been set yet, then the segment title will be set to the cue sheet's `TITLE` value. Implements #1977.
      * mkvmerge, MKVToolNix GUI (multiplexer): added an option `--no-date` that prevents the "date" field from being written to the segment information headers. Implements one half of #1964.
      * mkvpropedit, MKVToolNix GUI: header editor: added support for editing the "date" segment information field. Implements the other half of #1964.


      ## Bug fixes


      * MKVToolNix GUI: preferences ? job actions, type "play audio file": the GUI will no longer clear the audio file name input if the user aborts the audio file selection dialog.
      * MKVToolNix GUI: preferences ? job actions, type "play audio file", on Windows: the default "play audio" action was pointing to the wrong directory. Existing configurations with such a wrong path will be fixed automatically upon starting the GUI. Fixes #1956.
      * mkvmerge: HEVC/h.265 parser: fixed the superfluous copying of the `bitstream_restriction_flag` and its dependent flags in the VUI parameters of the sequence parameter sets if the timing information is present, too. This fixes #1924 properly, and it also fixes #1958.
      * mkvmerge: MPEG TS reader, AAC parser: the MPEG TS reader will now force the AAC parser to use the multiplex mode that the MPEG TS reader has detected (e.g. LOAS/LATM). This prevents the AAC packetizer from mis-detecting it in its own attempt to identify the mode. Fixes #1957.
      * mkvmerge: MPEG TS reader: valid MPEG transport streams that start with an h.264/h.265 start code (e.g. a file created by cutting at an arbitrary position) were not recognized as a supported file type.
      * mkvmerge: MPEG TS reader: fixed a potential read access from invalid memory addresses in the code parsing the program map table (PMT).
      * mkvmerge: MPEG TS reader: if packets are encountered that belong to a PID not listed in the program map table (PMT), mkvmerge will attempt to determine their type and codec from the content. This supported content types are AAC (ADTS only) and AC-3. Fixes #1980.
      * mkvmerge: MP4 reader: fixed finding and parsing the `colr` atom if there are more than one video extension atoms and the `colr` atom is not the first one.
      * mkvmerge: MP4 reader: the `nclx` colour type of the `colr` atom is now recognized, too (as defined by ISO/IEC 14496-12, "ISO base media format").
      * configure: fixed configure aborting if a `moc`, `uic`, `rcc` or `qmake` binary is found, but the binary's version is too old. Fixes #1979.
    • 13.0.0 "The Juggler"
      ## New features and enhancements

      * mkvmerge: MPEG TS reader: information about multiple programs will be output as container properties during verbose/JSON identification. See #1990 for the use case.
      * MKVToolNix GUI: multiplex tool: added a column "program" to the tracks list. Certain container types such as MPEG transport streams can contain multiple programs. The new column will contain the service name (think TV station names such as "arte HD") for such streams. Implements the GUI part of #1990.
      * MKVToolNix GUI: multiplex tool: the dialog asking the user what to do with dropped files (add to current settings, add to new settings etc.) now remembers the previous decision and defaults to it the next time it's shown. Implements #1997.
      * MKVToolNix GUI: tabs can now be closed by pressing the middle mouse button. Implements #1998.


      ## Bug fixes


      * mkvmerge: MP4 reader: MPEG-1/2 video read from MP4 files was written with an invalid codec ID (e.g. `V_MPEG7`) in certain cases. Fixes #1995.
      * mkvmerge: MPEG PS reader: made the file type detection less strict so that garbage at the start of the file doesn't prevent detection. Fixes #2008.
      * mkvmerge: MPEG PS reader: (E-)AC-3 tracks were not detected if the very first packet for that track didn't contain a full (E-)AC-3 frame. Fixes #2016.
      * mkvmerge: MPEG TS reader: fixed mkvmerge not detecting all tracks in MPEG transport streams containing multiple programs. Fixes one part of #1990.
      * mkvmerge: MPEG TS reader: fixed track content being broken for some tracks read from MPEG transport streams containing multiple programs. Fixes another part of #1990.
      * mkvmerge: JSON identification: the `stream_id` and `sub_stream_id` track properties were output as hexadecimal strings instead of unsigned integers. As the `ts_pid` track property was only used for MPEG transport streams, its value is now output as `stream_id` instead, and the `ts_pid` property has been removed. The JSON schema version has been bumped to 8 due to this change.
      * mkvmerge: fixed a crash when appending video tracks where one track has a CodecPrivate member and the other one doesn't.
      * mkvmerge: track statistics tags: the `NUMBER_OF_BYTES` tag is supposed to contain the number of bytes in a track before any of the content encoding schemes such as lossless compression is applied; however, mkvmerge was wrongfully using the number of bytes after the schemes had been applied. Fixes #2022.
      * mkvmerge: CLPI & MPLS parsers: MPLS and CLPI files with version number `0300` as used on Ultra HD Blu-ray Discs are now accepted as well. Fixes #2010.
      * mkvpropedit: fixed a crash when the selector used for `--tags` is invalid.
      * MKVToolNix GUI: fixed computation of value of total progress bar for multiple jobs running. Fixes #2005.
      * MKVToolNix GUI: multiplexer, adding new attachments: when the GUI checks if there's an attachment with the same name it will now disregard disabled attached files. Fixes #2001.
      * Debian/Ubuntu packaging: during a `dpkg-buildpackage` run the test suite was failing when a non-English locale was active and MKVToolNix packages had already been installed. Fixes #2011.


      fosshub.com/MKVToolNix.html
    • 14.0.0 "Flow"

      ## New features and enhancements

      * mkvmerge: AAC: implemented support for AAC with 960 samples per frame. Implements #2031.
      * mkvmerge: identification: if the encoding/character set of a text subtitle track is known (e.g. because a byte order mark is present in the file), then it will be output during identification as the `encoding` property. Implements mkvmerge's part of #2053.
      * mkvmerge: WAV reader: added support for Wave64 files. Implements #2042.
      * mkvmerge, mkvpropedit, MKVToolNix GUI (chapter editor): added support for chapters in WebM files that is spec-compliant by removing all tag elements not supported by the WebM spec. Implements #2002.
      * mkvpropedit: added support for tags in WebM files that is spec-compliant by removing all tag elements not supported by the WebM spec.
      * MKVToolNix GUI: multiplexer: if the encoding/character set of a subtitle track cannot be changed, the GUI will deactivate the "subtitle character set" drop-down box and ignore changes to it when multiple tracks are selected. Additionally, if the track's encoding is known and cannot be changed (e.g. due to a byte order mark in the file), that encoding will be selected in the drop-down box automatically. Both changes signal to the user that she doesn't have to take care of the encoding herself. Implements the GUI's part of #2053.
      * MKVToolNix GUI: chapter editor: added a function to the "additional modifications" dialog for calculating and setting the end timestamps. Implements #1887.
      * MKVToolNix GUI: changed the shortcuts for switching between the various tools from `Alt+number` (e.g. `Alt+1` for the multiplexer tool) to `Ctrl+Alt+number` in order to avoid clashing with Windows' input method for arbitrary characters (pressing and holding `Alt` and typing the codepoint on the number pad). Implements #2034.
      * MKVToolNix GUI: added a "Window" menu and entries with shortcuts for selecting the next (`Ctrl+F6`) respectively previous tab (`Ctrl+Shift+F6`) in the current tool. Implements #1972, #2032.
      * MKVToolNix GUI: on Windows the GUI will now determine the default font to use by querying Windows for the default UI/message box font instead of using the hardcoded `Segoe UI`. This might fix issues such as #2003 (unverified).
      * translations: added a Romanian translation of the programs by Daniel (see AUTHORS).


      ## Bug fixes


      * mkvmerge: AVC/h.264 parser: fixed wrong frame order & timestamp calculation in certain situations when SPS (sequence parameter sets) or PPS (picture parameter sets) change mid-stream. Fixes #2028.
      * mkvmerge: HEVC/h.265 parser: fixed wrong frame order & timestamp calculation in certain situations when SPS (sequence parameter sets) or PPS (picture parameter sets) change mid-stream. This is the HEVC/h.265 equivalent of #2028.
      * mkvmerge: MPEG-1/-2 video: the "remove stuffing bytes" feature introduced in v5.8.0 (feature request #734) was broken. In a lot of situations it did not detect the end of a slice correctly and removed 0 bytes that were actually part of the slice structure. Often there were no visual problems as decoders were able to ignore such errors, but in other cases there are visual artifacts upon decoding. As detecting the slice end properly requires parsing the whole slice structure, this feature has been removed again. Fixes #2045.
      * mkvmerge: MPEG PS reader: fixed mkvmerge trying to handle an "end" code the same way as a "program stream map" code.
      * mkvmerge: MPEG TS reader: mkvmerge won't emit warnings if the system's `iconv` library doesn't support the ISO 6937 character set. Fixes #2023.
      * mkvmerge: when appending fails the error message details (e.g. "the number of channels differs: 1 and 2") were often not output. Fixes #2046.
      * MKVToolNix GUI: multiplex tool: implemented a workaround for a crash that could occur during drag & drop if at least one of the columns is hidden. Fixes #2009.
      * MKVToolNix GUI: multiplex tool: appended tracks can no longer be enabled (selected for multiplexing) if the track they're going to be appended to is not enabled. Fixes #2039.
      * MKVToolNix GUI: multiplex tool: if the GUI is set to ensure unique output file names, it will now verify that right before starting to multiplex/adding the job to the queue, too. Fixes #2052.
      * MKVToolNix GUI: fixed the total progress reverting to 0% instead of staying at 100% when all jobs have finished. This was introduced by the attempt at fixing the computation of the value of total progress bar for multiple jobs running. Fixes #2005.
      * configure: fixed DocBook detection if `/bin/sh` is `dash`. Patch by Steve Dibb. Fixes #2054.


      ## Build system changes


      * Boost: the minimum required version has been bumped to 1.49.0. Earlier releases fail to build on my current systems and will therefore not be supported anymore.
      * configure: when looking for the "nlohnmann JSON" include files configure will now try the path "nlohmann/json.hpp" first, "json.hpp" second (only "json.hpp" was tried before). If neither is found, the copy included in the MKVToolNix sources will be used. Fixes #2048.

    • 15.0.0 "Duel with the Devil"
      ## Important notes

      * mkvmerge, mkvpropedit, GUI's header and chapter editors: the programs
      will no longer add most missing Matroska elements that are mandatory but
      have a default value in the Matroska specification (e.g. the
      `TagLanguage` element with a value of `und` if it isn't present in its
      `SimpleTag` parent). Due to this change libEBML v1.3.5 is now required.


      ## New features and enhancements


      * MKVToolNix GUI: multiplex tool: added a new entry to the "source
      files" context menu labeled "Set destination file name from selected
      file's name". It will force the GUI to consider the selected file to be
      the reference for automatically setting the file name, no matter which
      file was originally added as the first file. It will also force setting
      the destination file name once if automatic destination file name
      generation is turned off in the preferences. Implements part of #2058.
      * MKVToolNix GUI: multiplex tool: added an option in the preferences on
      "Multiplexer" ? "Output" labeled "Only use the first source file that
      contains a video track". If enabled, only source files containing video
      tracks will be used for setting the destination file name. Other files
      that are added are ignore. Implements the rest of #2058.
      * MKVToolNix GUI: header editor: added support for editing the video colour attributes. Implements the second half of #2038.
      * MKVToolNix GUI: header editor: added support for the "video
      projection" track header attributes. Part of the implementation of
      #2064.
      * MKVToolNix GUI: job queue: selected jobs can now be move up and down
      by pressing the `Ctrl+Up` and `Ctrl+Down` keys. Additionally, push
      buttons to move them up & down are shown if the corresponding option
      is enabled in the preferences. Implements #2060.
      * mkvmerge: added support for the "video projection" track header attributes. Part of the implementation of #2064.
      * mkvinfo: added support for the "video projection" track header attributes. Part of the implementation of #2064.
      * mkvpropedit: added support for editing the video colour attributes. Implements one half of #2038.
      * mkvpropedit: added support for the "video projection" track header attributes. Part of the implementation of #2064.


      ## Bug fixes


      * all: selecting the program's language (e.g. via the `--ui-language`
      command-line option or via the GUI's preferences) did not work on Linux
      & Unix if the `LANGUAGE` environment variable was set and didn't
      include the desired language. Fixes #2070.
      * MKVToolNix GUI: removed the keyboard shortcuts for switching between
      the different tools (e.g. `Ctrl+Alt+1` for the multiplexer). They
      overlapped with basic functionality on keyboards that use an `AltGr`
      key, e.g. German ones, where `AltGr+7` emits `{`. As `AltGr+key` is
      implemented as `Ctrl+Alt+key` under the hood, this means that `AltGr+7`
      is really `Ctrl+Alt+7` which the GUI now took to mean "switch to the job
      queue" instead of "insert `{`". Fixes #2056.
      * MKVToolNix GUI: header editor: after saving the file the GUI wasn't
      updating its internal file modification timestamp. That lead to the GUI
      wrongfully claiming that the file had been modified externally when the
      user wanted to save the file once more, requiring a reload of the file
      losing all modifications made since saving the first time.
      * mkvmerge: DTS handling: some source files provide timestamps for audio
      tracks only once every `n` audio frames. In such situations mkvmerge
      was buffering too much data resulting in a single gap in the timestamps
      of one frame duration after frame number `n - 1` (the second audio
      timestamp read from the source file was used one output frame too
      early). Fixes #2071.
      * mkvinfo: fixed a null pointer dereference if an `EbmlBinary` element's data pointer is a null pointer. Fixes #2072.


      ## Build system changes


      * configure: added option `--disable-update-check`. If given, the code
      checking online for available updates will be disabled. The update check
      is enabled and included in the GUI by default.
      * libEBML v1.3.5 is now required.


      ## Other changes


      * mkvmerge: the option `--colour-matrix` has been renamed to
      `--colour-matrix-coefficients` in order to match the specification more
      closely. The old option name will continue to be recognized as well.
      mkvtoolnix.download/downloads.html#windows
    • 16.0.0 "Protest"

      ## New features and enhancements


      * mkvmerge: MP4 reader: added support for Vorbis. Implements #2093.


      ## Bug fixes


      * configure: the checks for libEBML and libMatroska have been fixed to require libEBML 1.3.5 and libMatroska 1.4.7 as intended.


      * mkvmerge: AAC reader: mkvmerge will now emit an error message for AAC
      files whose header fields imply a sampling frequency or number of
      channels of 0. See #2107.
      * mkvmerge: AVC/h.264 ES parser: fixed the calculation of reference
      information for P and B frames. This also fixes some P frames being
      marked as B frames and vice versa.
      * mkvmerge: AVC/h.264 ES parser: only non-key frames that have the NALU
      header field `nal_ref_idc` set to 0 will be marked as "discardable" in
      `SimpleBlock` elements. Other half of the fix for #2047.
      * mkvmerge: HEVC/h.265: the generation of the HEVCC structure stored in
      `CodecPrivate` was wrong in two places: 1. the position of the number of
      sub-layers was swapped with reserved bits and 2. the VPS/SPS/PPS/SEI
      lists did not start with a reserved 1 bit.
      * mkvmerge: output: the `doc type version` will be set at least to 2 if
      certain elements are written (`CodecState`, `CueCodecState`,
      `FlagInterlaced`).
      * mkvmerge: output: the track header attributes `MinCache` and `MaxCache` will not be written anymore. Fixes #2079.
      * mkvmerge: Matroska reader: the "key" and "discardable" flags of
      SimpleBlock elements will be kept as they are. Partial fix for #2047.
      * mkvmerge: Matroska reader: if present in the file, the "white colour
      coordinate x" track header attribute was written to both "white colour
      coordinate x" and "white colour coordinate y" in the output file.
      * mkvmerge: Opus output: mkvmerge will now put all frames with discard padding into their own block group. Fixes #2100.
      * MKVToolNix GUI: header editor: removed the check for external modification when saving the file. Fixes #2097.
      * MKVToolNix GUI: job queue: fixed calculation of total progress when automatic removal of completed is enabled. Fixes #2105.


      ## Build system changes


      * libEBML v1.3.5 and libMatroska v1.4.8 are now required. In fact
      v15.0.0 already requires libEBML v1.3.5 and libMatroska v1.4.7 but did
      not include proper version checks for them (nor was there a NEWS.md
      entry for the new libMatroska requirement). New is the requirement for
      libMatroska v1.4.8 due to it fixing writing block groups for tracks with
      the track number 128 (see #2103).
    • Neu

      17.0.0 "Be Ur Friend"
      ## Important notes


      * The word "timecode" has been changed to "timestamp" everywhere it was used in MKVToolNix. This affects program output (including mkvinfo's), GUI controls, command line parameters (e.g. `mkvmerge --timestamp-scale …`) and file formats. All programs remain backwards compatible insofar as they still accept "timecode" in all those places (e.g. `mkvmerge --timecode-scale …`).
      The reason for the change is wrong usage. What both the Matroska specification and MKVToolNix used "timecode" for is normally called a "timestamp" in audio & video domains. A "timecode" on the other hand has a specific meaning. As the Matroska specification is moving towards implementing real timecodes, it will also move towards correcting the verbiage. MKVToolNix is following this change.


      * mkvextract's command line interface has been changed to allow extraction of multiple items at the same time. The first argument must now be the source file's name. All following arguments either set the mode (e.g. `tracks`) or specify what to extract in the currently active mode.
      Those items that were written to the standard output (chapters, tags and cue sheets) are now always written to files instead. Therefore the respective modes require an output file name.
      For example, extracting two tracks, the chapters and the tags can be done with the following command:
      `mkvextract input.mkv tracks 0:video.h265 1:audio.aac chapters chapters.xml tags tags.xml`
      The old interface (specifying the mode first and the source file name second) remains working and supported. However, it is now deprecated and will be removed at the end of 2018.


      ## New features and enhancements


      * mkvmerge: AC-3: during identification regular AC-3 and E-AC-3 tracks will now be identified differently for most container formats (exception: AVI, Real Media, Ogg/OGM). The codec will be reported as `AC-3` for regular AC-3 and as `E-AC-3` for E-AC-3 tracks instead of the combined `AC-3/E-AC-3`.
      * mkvextract: the command line interface has been changed to allow extraction of multiple items at the same time. See section "Important notes" for details.


      ## Bug fixes


      * mkvmerge: AAC ADTS parser: mkvmerge will now parse the `program_config_element` if it is located at the start of an AAC frame in order to determine the actual number of channels. This overrides invalid channel configurations in the ADTS headers, for example. Fixes #2107.
      * mkvmerge: fixed AC-3 being misdetected as encrypted MPEG program streams under certain conditions.
      * mkvmerge: Dirac: under certain conditions (e.g. only muxing a single Dirac track without any other tracks) mkvmerge was always setting the pixel width & height to 123. The frame rate was wrong, too.
      * mkvmerge: E-AC-3 in Matroska: if AC-3 cores and their corresponding E-AC-3 extension are located in two different Matroska blocks, then mkvmerge will now re-assemble them into a single block and only use the first block's timestamp.
      * mkvmerge: SRT reader: fixed calculating the duration of entries starting with at a negative timestamp.
      * mkvmerge: VC-1: under certain conditions (e.g. only muxing a single VC-1 track without any other tracks) mkvmerge was always setting the pixel width & height to 123. The frame rate was wrong, too. Fixes #2113.
      * mkvmerge: command line options: an error message will be output if the single-value-form of the `--sync` option is used and it isn't a number (e.g. `--sync 0:asd`). Fixes #2121.
      * mkvpropedit, GUI's header editor: both programs will now show proper error messages instead of crashing when certain kinds of data corruption is found when reading a file. Fixes #2115.