AfterDawn | News | Guides | Software downloads | Tech Support | Forums | HIGH.FI
AfterDawn

Version history for MKVToolNix (Portable)

<<Back to software description

Changes for v48.0.0 - v49.0.0

  • * mkvmerge: added support for copying the new track header elements `BlockAddIDName`, `BlockAddIDType`, `BlockAddIDValue` and `BlockAddIDExtraData` from Matroska files if they exist. Part of the implementation of #2887.
  • * mkvinfo: added support for the new track header elements `BlockAdditionMapping`, `BlockAddIDName`, BlockAddIDType`, `BlockAddIDValue` and `BlockAddIDExtraData`. Part of the implementation of #2887.
  • * MKVToolNix GUI: multiplexer: the list of recent directories can now be edited in the preferences  "Multiplexer"  "Destination file name". Implements #2861.
  • * MKVToolNix GUI: preferences: the values in the various "predefined values" lists can now be re-ordered freely by dragging & dropping.
  • ## Bug fixes
  • * mkvmerge: Matroska reader: when reading tracks (e.g. a subtitle track) from Matroska files with their `default track` flag set to `yes`, and when overwriting those via the command line to `no`, `mkvmerge` would not promote additional tracks of the same type from other files (e.g. another subtitle track from an SRT file). Fixes #2863.
  • * mkvmerge: SRT reader: empty lines inside entries were doubled. Fixes #2888.
  • * mkvmerge: subtitles: when calculating the rounded duration of each entry the error from rounding the corresponding timestamp will be taken into account. Fixes #2890.
  • * mkvextract: SSA/ASS extraction: mkvextract is no longer inserting empty lines before the `Dialogue:` lines. Fixes #2876.
  • * mkvextract: USF subtitles: start & end timestamps were too high by a factor of 1.000.000. Fixes #2875.
  • * MKVToolNix: info tool: when saving to a text file the checkbox "Save as default for saving output to text files" did nothing. Fixes #2869.
  • * MKVToolNix: info tool: when saving to a text file in "all elements in a tree-like structure" mode, the GUI always stopped at the first cluster regardless of the setting of the "verbosity" option.
  • * MKVToolNix GUI: preferences: when tooltips were disabled the dialogs for adding new entries to the various "predefined values" lists were missing their texts.
  • * Windows installer: the images are shown again. Fixes #2868.
  • * configure: fixed detection of QtDBus. Fixes #2886.
  • ## Build system changes
  • * libMatroska v1.6.1 is now required. The bundled version has been updated to that version.



Changes for v47.0.0 - v48.0.0

  • ## New features and enhancements
  • * mkvmerge: AC-3: file identification will report AC-3 tracks encoded in Dolby Surround EX as codec "AC-3 Dolby Surround EX". Implements #2740.
  • * MKVToolNix GUI: multiplexer: on new installations the GUI will now recognize all known ISO 639-2 language codes in file names by default instead of only the top 100 of languages by native speakers.
  • * MKVToolNix GUI: multiplexer: on new installations the list of "often used languages" will by default only contain certain agnostic ones ("multiple languages", "no linguistic content", "reserved for local use", "uncoded languages"), "English" and the default user interface language. The "list of spoken languages by native speaks" isn't used anymore. Also implements #2716.
  • * MKVToolNix GUI: header editor: added an option to remove all attachments to the tree context menu. Implements #2835.
  • * MKVToolNix GUI: while the GUI is running it will remember the last page that was selected when the preferences dialog is closed. Upon re-opening the preferences that page will be selected by default. Implements #2852.
  • ## Bug fixes
  • * mkvmerge: fixed a segmentation fault when exiting prematurely due to write errors such as the destination having run out of space. Fixes #2843.
  • * mkvmerge: DTS: fixed wrong channel count for DTS tracks with XCh extensions. Fixes #2715.
  • * mkvmerge: MPEG TS reader: fixed detecting h.264/AVC and h.265/HEVC tracks that consist of only a single frame. Part of the fix of #2849.
  • * mkvmerge: MPEG TS reader: fixed handling of unbounded PES sizes for tracks that consist of only a single PES packet. Part of the fix of #2849.
  • * mkvmerge: MPEG TS reader: PGS subtitle tracks are now exempt from the "detect bogus subtitle timestamps" heuristic which could lead to some PGS subtitles not being timestamped correctly. Symptoms were that they were shown at the wrong time or that they were shown indefinitely. Fixes #2736 and partially fixes #2824.
  • * mkvmerge: MPEG TS reader: when reading MPLS playlists the start timestamps of a play items were handled wrong: all the timestamps of packets read were compared to that start timestamp, dropping those packets whose timestamps were smaller than the play item's start timestamp. The correct behavior is to accept all packets as soon as the first one with a timestamp equal to or larger than the play item's start timestamp is encountered. This could result in PGS subtitle entries located right at the start of the play item being garbled/lost as they consist of multiple PES packets for which some timestamps are often slightly smaller. Part of the fix of #2824.
  • * mkvmerge: MPEG TS reader: when reading MPLS playlists mkvmerge will no longer read the whole M2TS files they reference, processing only the packets lying inside the timestamp range given by the playlists's play item's start & end timestamps. Instead mkvmerge will use the index information present in corresponding clip information (CLPI) files in order to seek to the nearest file position of the play item's start timestamp. Additionally mkvmerge will simply stop processing a file once the end timestamp is seen. This change greatly speeds up processing files from which only small portions must be read. Part of the fix of #2824.
  • * mkvmerge: WavPack: fixed support for files created by v5 of the program. Checksums, DSD audio data and non-standard sampling rates are handled correctly. Patch by David Bryant.
  • * MKVToolNix GUI: multiplexer: fixed the cursor being positioned wrong after entering or pasting characters that aren't allowed in file names into the "destination file" control. Fixes #2855.
  • ## Build system changes
  • * libEBML v1.4.0 and libMatroska v1.6.0 are now required.
  • ## Other changes
  • * The source code repository's main development branch was renamed to `main`.



Changes for v46.0.0 - v47.0.0

  • ## New features and enhancements
  • * mkvmerge: chapters: mkvmerge can now read chapters from DVDs if the user specifies the path to a DVD folder structure via the `--chapters …` parameter. By default chapters from the first title will be imported. This can be changed by append `:` to the file/directory name in the `--chapters …` argument, e.g. `--chapters /srv/dvds/BigBuckBunny/VIDEO_TS:3` This feature requires mkvmerge to have been built with the `libdvdread` library. Part of the implementation of #2808. <li>* mkvmerge: added `--engage append_and_split_flac` that enables mkvmerge to append and split FLAC tracks, restoring pre-v45 behavior. The resulting tracks will be broken: the official FLAC tools will not be able to decode them and seeking will not work as expected. <li>* MKVToolNix GUI: multiplexer: added support for mkvmerge's new support for reading chapters from DVDs if both have been built with the `libdvdread` library. Part of the implementation of #2808. <li>* MKVToolNix GUI: multiplexer: when deriving languages from file names the GUI will now look for simplified language names instead of the full ones (e.g. instead of looking for "Greek, Modern (1453-)" it would simply look for "Greek"). <li>* MKVToolNix GUI: multiplexer: the options in the "additional command-line options" dialog are now sorted alphabetically. Additionally the `--append-mode` option has been added as one of the only missing global options. <li>* MKVToolNix GUI: chapter editor: the chapter editor can now read chapters from DVDs if MKVToolNix has been build with the `libdvdread` library. Part of the implementation of #2808. <li>* MKVToolNix GUI: header editor: added an option in the preferences for displaying all date & time values in UTC instead of the local time zone. Implements #2814. <li> <li>## Bug fixes <li> <li>* all: fixed a crash when using the `MTX_LOGGER=file` syntax for logging debug messages without specifying a file name to log to. It will now log to a file called `mkvtoolnix-debug.log` in the system's default temporary directory, as initially intended. <li> <li>## Build system changes <li> <li>* The [`libdvdread`](https://www.videolan.org/developers/libdvdnav.html) library will be used if found via `pkg-config`. If it is found, support for reading chapters from DVDs will be enabled in `mkvmerge` and the MKVToolNix GUI. Part of the implementation of #2808. <li>* Boost's Date/Time, Lexical Cast, Range, Range Adaptors, Tri-Bool, Variant libraries are not used anymore. <li>* MKVToolNix now requires a C++ compiler & standard library that support the following features of the C++17 standard: "`std::variant`", "`std::gcd`". For the GNU Compiler Collection (gcc) this means v7 or newer; for clang it means v4 or newer — the same versions required by earlier MKVToolNix versions. <li>* MKVToolNix now requires version 6.1.0 of fmtlib or later for the `fmt::to_string` function and bugfixes to the formatting of floating point numbers. If a system-wide version is installed that's older, the bundled copy will be used. <li>* The bundled version of fmtlib has been updated to release 6.2.1. </ul> </p> <hr/><br/> <p> <b>Changes for v45.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v46_0_0" title="MKVToolNix (Portable) v46.0.0">v46.0.0</a></b> <ul> <li> <li>* mkvmerge: when splitting, the placeholder `%c` can be used in the destination file name. It'll be replaced by the name of the first chapter in the file. Implements #2791. <li>* mkvmerge: when reading MPLS playlists mkvmerge will include a tag named `SOURCE_ID` in the track's statistics tags that conveys the fact that the source was a Blu-ray and what the track's ID was in the source container. When reading Matroska file existing `SOURCE_ID` tags will be kept. The format used is the same format MakeMKV uses. Implements #2774. <li>* mkvmerge: for audio-only files mkvmerge will now write a cue entry every 500ms instead of every 2s. <li>* MKVToolNix GUI: job actions: split up the option "execute when the job finishes successfully or with warnings" into two separate options: "…when finishes successfully" and "…when exits with warnings". Implements #2798. <li> <li>## Bug fixes <li> <li>* mkvmerge: Matroska reader: when regenerating UIDs for chapters mkvmerge will now fix referencing tag chapter UID targets to have the same values. Fixes #2804. <li>* mkvmerge: MP4 reader: fixed a crash that could potentially happen while trying to identify H.265/HEVC tracks. <li>* mkvmerge: MP4 reader: when reading H.265/HEVC tracks without a frame offset table (`ctts` atom) present, mkvmerge did not parse the `hevcC` structure correctly in certain cases, causing no video frames to be output at all or the output not being playable. This fixes #2782, a bug introduced in v45. <li>* mkvmerge: MPLS handling/MPEG TS reader: timestamp restrictions as given in an MPLS file were only honored for the first play item, not for subsequent play items. For those play items the whole referenced file was always copied. Part of the fix of #2789. <li>* mkvmerge: MPLS handling/MPEG TS reader: under certain circumstances mkvmerge copied one frame too many before switching to the next play item. Part of the fix of #2789. <li>* mkvmerge: for audio-only files cues will only be created for I frames (important for e.g. TrueHD where decoding can only start on a sync frame). Fixes #2790. <li>* MKVToolNix GUI: fixed a crash that happened when closing the preferences after having closed at least one multiplexer tab. Fixes #2785. <li>* MKVToolNix GUI: macOS: changed the default of the "elide tab header labels" feature introduced in v45 from "no" to "yes" to mirror how versions before v45 behaved on macOS. </ul> </p> <hr/><br/> <p> <b>Changes for v43.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v44_0_0" title="MKVToolNix (Portable) v44.0.0">v44.0.0</a></b> <ul> <li>* MKVToolNix GUI: header editor: the attachments can now be reordered via drag & drop. Implements #2753. <li> <li>## Bug fixes <li> <li>* mkvmerge: Matroska reader: when encountering certain errors in the track headers such as the codec ID not being present mkvmerge will simply skip those tracks instead of exiting with an error. Fixes #2737. <li>* MKVToolNix GUI: multiplexer: the "ask before overwriting" functionality did not look for the correct file names when splitting was active. Fixes #2741. </ul> </p> <hr/><br/> <p> <b>Changes for v42.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v43_0_0" title="MKVToolNix (Portable) v43.0.0">v43.0.0</a></b> <ul> <li>* MKVToolNix GUI: using one of the command line options `--info`, `--edit-headers` or `--edit-chapters` will make the GUI select the corresponding tool on startup even if no further file name is given. Implements #2723. <li>* MKVToolNix GUI: multiplexer: added a setting in the preferences for changing the location of the MediaInfo executable for when the user accidentally selected the wrong one. <li> <li>## Bug fixes <li> <li>* mkvmerge: AVC/h.264 parser: the order of the NALUs before each key frame was sometimes wrong: mkvmerge wrote SPS & PPS after SEI NALUs. Now SPS & PPS NALUs are always written before the other NALUs. Patch by Torsten Hauska. Part of the implementation of #2709 and part of the fix of #2250. <li>* mkvmerge: AVC/h.264 parser: when additional SPS or PPS NALUs (with IDs that haven't been seen so far) are found mid-stream, mkvmerge will prepend all following key frames with all current valid SPS & PPS NALUs (just like when SPS & PPS NALUs are overwritten mid-stream). Part of the fix of #2250. <li>* mkvmerge: MPEG TS reader: fixed detection of MPEG-1/2 video tracks consisting of very few frames. Fixes #2732. <li>* mkvmerge: Ogg Opus reader: fixed the handling of Ogg Opus streams that contain a just one Ogg page (`mkvmerge` aborted with an exception). Fixes #2722. <li>* MKVToolNix GUI: multiplexer: dragging & dropping XML files with chapters or tags to the GUI's window was broken in v42. Instead of adding the file names to the appropriate input boxes the GUI was running mkvmerge for file identification purposes which then failed. Fixes #2718. </ul> </p> <hr/><br/> <p> <b>Changes for v41.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v42_0_0" title="MKVToolNix (Portable) v42.0.0">v42.0.0</a></b> <ul> <li> <li>## New features and enhancements <li> <li>* mkvmerge: added an option for creating byte-identical files: `--deterministic <seed>`. Part of the implementation of #2698. <li>* mkvmerge: Matroska reader: mkvmerge will remove the `icpf` atom headers if they're present in frames read from Matroska files. Implements #2692. <li>* mkvmerge: MP4 reader: ALAC tracks: the number of channels, sampling frequency and bit depth are now taken from the bitstream in order to fix bogus values on the container level. Implements #2714. <li>* mkvpropedit: when changing track UIDs the referring elements in existing chapters & tags will be updated automatically, too. Part of the implementation of #2700. <li>* mkvinfo: when the option `-p`/`--hex-positions` is used, element positions will be output regardless of the verbosity level. Part of the implementation of #2713. <li>* mkvinfo: added the option `-P`/`--positions` for showing the position of each element in decimal regardless of the verbosity level used. Part of the implementation of #2713. <li>* mkvinfo: added the option `-o`/`--continue` for continuing processing when the first cluster is encountered regardless of the verbosity level used. Part of the implementation of #2713. <li>* mkvinfo: added the option `-a`/`--all` for outputting all sub-elements (even cues & seek head entries) and not stopping at the first cluster regardless of the verbosity level used. Part of the implementation of #2713. <li>* MKVToolNix GUI: multiplexer: added an option in the preferences for disabling adding cover images from Blu-ray discs. Implements #2693. <li>* MKVToolNix GUI: multiplexer: added mkvmerge's new `--deterministic` option in the "additional command-line options" dialog. Part of the implementation of #2698. <li>* MKVToolNix GUI: header editor:: when changing track UIDs the referring elements in existing chapters & tags will be updated automatically, too. Part of the implementation of #2700. <li> <li>## Bug fixes <li> <li>* mkvmerge: HEVC ES parser: fixed a bug in the slice parser calculating the size of a field which in turn could have led to the slice's type being read wrong. Patch by Torsten Hauska. Fixes #2710. <li>* mkvmerge: Matroska reader: fixed a segmentation fault when trying to read a file that uses header removal compression but no removed bytes are present in the track headers. Fixes #2687. <li>* mkvmerge: MPEG elementary stream parser: fixed an invalid memory access and use of uninitialized memory that could happen under certain circumstances. Fixes #2690. <li>* mkvmerge: RealMedia reader: fixed a division by zero when all audio timestamps were zero. Fixes #2689. <li>* mkvmerge: RealMedia reader: fixed an invalid memory access in the video frame assembly code triggered by invalid data in the file. Fixes #2691. <li> <li>## Build system changes <li> <li>* `std::optional` (C++17 feature) is now used instead of `boost::optional`. <li>* `std::regex` is now used instead of `boost::regex`. <li> <li>## Other changes <li> <li>* New man page translations into French, Italian, Russian and Chinese Traditional have been added. </ul> </p> <hr/><br/> <p> <b>Changes for v40.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v41_0_0" title="MKVToolNix (Portable) v41.0.0">v41.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: MP4 reader: added support for BMP covert art images. <li>* MKVToolNix GUI: multiplexer: added an option to disable deriving the destination file name from the file title. Implements #2648. <li>* MKVToolNix GUI: multiplexer: the content of the "stereoscopy" combo box has been simplified making the box's minimum width much smaller, allowing the user to resize the GUI's whole window to a much smaller width. <li>* MKVToolNix GUI: multiplexer: whenever the user changes the "aspect ratio" or "display dimensions" controls, the corresponding radio button will be activated automatically. Implements #2651. <li>* MKVToolNix GUI: Windows: added a setting in the preferences to disable the GUI's dark color mode even if Windows's app color mode is set to dark. Implements #2646. <li>* MKVToolNix GUI: Windows: replaced the dark mode introduced in v39 with another dark mode that's less wasteful with space between widgets. <li> <li>## Bug fixes <li> <li>* mkvmerge: MP4 reader: mkvmerge was reading eight bytes too many for cover art images. This could cause file identification to fail when the cover art was located at the end of the MP4 file. Even if it succeeded, this meant too much data present in the attachment. Fixes #2650. <li>* mkvmerge: MP4 reader: covert art images with unknown image types will be skipped instead of treated as JPEG images. <li> <li>## Build system changes <li> <li>* Qt 5.9.0 or newer is now required for building MKVToolNix GUI. </ul> </p> <hr/><br/> <p> <b>Changes for v39.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v40_0_0" title="MKVToolNix (Portable) v40.0.0">v40.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: MP4 reader: added support for BMP covert art images. <li>* MKVToolNix GUI: multiplexer: added an option to disable deriving the destination file name from the file title. Implements #2648. <li>* MKVToolNix GUI: multiplexer: the content of the "stereoscopy" combo box has been simplified making the box's minimum width much smaller, allowing the user to resize the GUI's whole window to a much smaller width. <li>* MKVToolNix GUI: multiplexer: whenever the user changes the "aspect ratio" or "display dimensions" controls, the corresponding radio button will be activated automatically. Implements #2651. <li>* MKVToolNix GUI: Windows: added a setting in the preferences to disable the GUI's dark color mode even if Windows's app color mode is set to dark. Implements #2646. <li>* MKVToolNix GUI: Windows: replaced the dark mode introduced in v39 with another dark mode that's less wasteful with space between widgets. <li> <li>## Bug fixes <li> <li>* mkvmerge: MP4 reader: mkvmerge was reading eight bytes too many for cover art images. This could cause file identification to fail when the cover art was located at the end of the MP4 file. Even if it succeeded, this meant too much data present in the attachment. Fixes #2650. <li>* mkvmerge: MP4 reader: covert art images with unknown image types will be skipped instead of treated as JPEG images. <li> <li>## Build system changes <li> <li>* Qt 5.9.0 or newer is now required for building MKVToolNix GUI. </ul> </p> <hr/><br/> <p> <b>Changes for v35.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v36_0_0" title="MKVToolNix (Portable) v36.0.0">v36.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: mkvmerge now allows appending AV1, VP8, VP9, H.264/AVC and H.265/HEVC tracks whose pixel dimensions differ. Implements #2582. <li> <li>## Bug fixes <li> <li>* source code: fixed building with Boost 1.71.0. Fixes #2599. <li>* all: fixed the spelling of the H.264 & H.265 codec names. <li>* mkvmerge: Blu-ray MPLS handling: mkvmerge will now find corresponding M2TS files even if the `clip_codec_identifier` playlist item field is not set to `M2TS` in the MPLS file. Fixes #2601. <li>* mkvmerge: fixed handling of text files that use both DOS-style and Unix-style line endings resulting in problems such as text subtitle files not being parsed correctly. Fixes #2594. </ul> </p> <hr/><br/> <p> <b>Changes for v34.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v35_0_0" title="MKVToolNix (Portable) v35.0.0">v35.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: JSON identification: the "codec name" track property will be output as `codec_name`. The JSON schema has been bumped to v12 for this change. <li>* MKVToolNix GUI: job queue: added a new type of action to execute after job completion: deleting source files for of multiplexer jobs. As this is a destructive operation, the action is disabled by default. Implements #869 and #2570. <li> <li>## Bug fixes <li> <li>* mkvmerge: the "codec name" track property wasn't copied from Matroska files. Fixes #2566. <li>* MKVToolNix GUI: multiplexer: Windows: clearing the destination file name will reset the tab name to "<No destination file>" again. Fixes #2571. <li>* MKVToolNix GUI: multiplexer: the file types were not re-translated if the UI language was changed. Fixes #2572. </ul> </p> <hr/><br/> <p> <b>Changes for v33.1.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v34_0_0" title="MKVToolNix (Portable) v34.0.0">v34.0.0</a></b> <ul> <li>* mkvmerge: all subtitle frames are now treated as key frames in order to fix wrong data in source files. Fixes #2541. <li>* mkvmerge: AV1: fixed frame timestamp calculation when reading bitstreams that lack timing information from IVF files. Fixes #2553. <li>* mkvmerge: Matroska reader: fixed an infinite loop that could happen with large video frames and applied timestamp files due to too much data being buffered at the wrong time. Fixes #2550. </ul> </p> <hr/><br/> <p> <b>Changes for v33.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v33_1_0" title="MKVToolNix (Portable) v33.1.0">v33.1.0</a></b> <ul> <li>* MKVToolNix GUI: multiplexer: Windows: using UNC paths (e.g. `\serverVideos`) when the option "automatically set the destination file name" was set in the preferences, the GUI would create a destination file name with forward slashes (e.g. `//server/Videos/outputfile.mkv`), a syntax not supported by `mkvmerge`. Fixes #2533 & #2534. <li>* build system: the programs were accidentally built without stack protection (`-fstack-protector-strong`) on recent versions of gcc and clang. </ul> </p> <hr/><br/> <p> <b>Changes for v32.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v33_0_0" title="MKVToolNix (Portable) v33.0.0">v33.0.0</a></b> <ul> <li>* mkvinfo: when using the `--size` option, mkvinfo will now report the correctly if an element has an unknown size. Part of the fix of #2530. <li>* MKVToolNix GUI: info tool: clusters with an unknown size will now be read and displayed correctly. Part of the fix of #2530. <li>* MKVToolNix GUI: multiplexer: Windows: trying to open Blu-ray index or playlist files failed when the path to the files contained symbolic links (e.g. when mounting a drive in a sub-folder via Windows' disk management utility). Fixes #2522. <li>* MKVToolNix GUI: multiplexer: if a destination file names ends with a number in parenthesis (e.g. a year such as "(2017)"), that number will not be stripped anymore during the process of ensuring the destination file name is unique. Only those suffixes added automatically in prior attempts to make the file name unique will be removed. Fixes #2521. <li>* MKVToolNix GUI: multiplexer: Windows: the GUI will let the user change the drive letter part of the destination file name freely again and only verify its validity right before starting to mux/adding to the job queue. Before it tried to force that into something valid, often resulting in unintentional paths (such as "C:\users\…\DC\files\…"). Fixes #2527. </ul> </p> <hr/><br/> <p> <b>Changes for v31.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v32_0_0" title="MKVToolNix (Portable) v32.0.0">v32.0.0</a></b> <ul> <li># Version 32.0.0 "Astral Progressions" 2019-03-12 <li> <li>## New features and enhancements <li> <li>* mkvinfo: when sizes are output the size of the element's data portion is output in addition to the element's total size. <li>* MKVToolNix GUI: info tool: the element's data portion is shown as an extra column. <li>* MKVToolNix GUI: multiplexer: added column "Delay" to the track list containing the additional delay to apply during multiplexing. Implements #2506. <li> <li>## Bug fixes <li> <li>* all: fixed handling of Unicode code points > U+FFFF. Fixes #2516. <li>* mkvmerge: Windows: mkvmerge was crashing with an exception when trying to identify certain files that can be used on Blu-rays (such as MPEG transport streams of MPLS play list files) and when the file name was given as a UNC path (e.g. `\servernamesharenamepathtofile.m2ts`). The GUI emitted errors such as "the JSON output could not be parsed" in that case. Fixes #2507. <li>* MKVToolNix GUI: the portable mode wasn't detected correctly when the current working directory the GUI was started from wasn't the directory the GUI's executable file was located it. Examples for when this is the case are Windows' "send to" or "open with" functions. Fixes #2501. <li>* MKVToolNix GUI: multiplexer: using button to change the current destination directory to one of the recently used ones did not update the file name according to the "make file name unique" setting. Part of the fix of #2519. <li>* MKVToolNix GUI: multiplexer: the function "set destination file name from selected file's name" will now only change the destination file's name but not its path. Part of the fix of #2519. <li> <li>## Build system changes <li> <li>* libEBML v1.3.7 and libMatroska 1.5.0 are now required as they fix their handling of Unicode code points > U+FFFF (see #2516). </ul> </p> <hr/><br/> <p> <b>Changes for v30.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v31_0_0" title="MKVToolNix (Portable) v31.0.0">v31.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* all programs: added a new option `--abort-on-warnings` that will cause the program to abort after it has emitted the first warning, similar to how it aborts after the first error. Implements #2493. <li>* mkvmerge, mkvextract: when closing files that were opened for writing, cached data will not be flushed to storage automatically anymore. This reverts the workaround implemented for #2469. A new option was added to both programs (`--flush-on-close`) that re-enables flushing for people who are affected by data loss such as described in #2469. <li>The reason is that automatic flushing causes long delays in processing queues when the output by mkvmerge/mkvextract isn't the final product but just an intermediate result to be processed further. <li>Implements #2480. <li>* MKVToolNix GUI: multiplexer: the dialog previewing different character sets for text subtitles will now keep the position of the displayed text when switching between character sets. Implements #2489. <li> <li>## Bug fixes <li> <li>* mkvmerge: AVI reader: using DV type 1 AVIs will now result in an unsupported file type being reported (as the underlying AVI library doesn't support them) instead of crashing mkvmerge. Fixes #2491. <li>* mkvmerge: HEVC: the height of interlaced streams will now be set correctly to the height of the full frame instead of the height of a single interlaced field. Fixes #2446. <li>* mkvmerge: MP4 reader: edit lists consisting solely of elements that mkvmerge doesn't support (such as dwells) are simply ignored. Before no data was read for such tracks at all. Fixes #2487. <li>* mkvmerge: text subtitles: entries with an explicit duration of 0ms will now be handled correctly: the 0ms duration will be stored in Matroska instead of the difference between the current and the following entry. Fixes #2490. <li>* MKVToolNix GUI: multiplexer, chapter editor: fixed drag & drop handling with Qt 5.12.0 and newer. Fixes #2472. <li>* MKVToolNix GUI: multiplexer: the GUI did not clean up temporary files created when running `mkvmerge`. Fixes #2499. <li> <li>## Build system changes <li> <li>* Qt 5.4.0 or newer has required (up from 5.3.0) since version 30.0.0; I just forgot to include this entry. </ul> </p> <hr/><br/> <p> <b>Changes for v29.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v30_0_0" title="MKVToolNix (Portable) v30.0.0">v30.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvextract: WAV extractor: mkvextract will now write W64 files instead of WAV files if the file name extension is `.w64` or if the final file size is bigger than 4 GB, the file size limit for WAV files. Implements #2458. <li>* MKVToolNix GUI: multiplexer: a new button was added next to the "destination file" controls. Clicking it shows a menu with the ten most recently used output directories. Selecting one of them will change the destination file to the selected directory keeping the file name. Implements #2468. <li>* MKVToolNix GUI: multiplexer (preferences): the ten most recently used values for the "relative output directory" and "fixed output directory" settings are now saved. The corresponding settings have been changed into combo boxes allowing quick access to those recent values. <li>* MKVToolNix GUI: multiplexer (preferences): the predefined split sizes and durations can now be customized in the preferences. <li>* MKVToolNix GUI: chapter editor: added an option in the "Chapter editor" menu for appending chapters from an existing file to the currently open editor tab. Part of the implementation of #2439. <li>* MKVToolNix GUI: chapter editor: added an action in the context menu for copying the selected entry and all of its children to another open editor tab. Part of the implementation of #2439. <li> <li>## Bug fixes <li> <li>* mkvmerge: all files opened for writing will now be flushed once before they're closed. This ensures the operating system actually writes all cached data to disk preventing data loss in certain situations such as power outages or buggy drivers in combination with suspending the computer. Fixes #2469. <li>* mkvmerge: AAC: under certain conditions 8 channel audio files were taken for 7 channel ones. <li>* MKVToolNix GUI: multiplexer: removing a file added as an "additional part" will no longer cause a crash. Fixes #2461. <li>* source code: fixed compilation with Boost 1.69.0 after API-breaking change to the `boost::tribool` class. Fixes #2460. </ul> </p> <hr/><br/> <p> <b>Changes for v28.2.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v29_0_0" title="MKVToolNix (Portable) v29.0.0">v29.0.0</a></b> <ul> <li>* The string formatting library used was switched from `boost::format` to [`fmt`](http://fmtlib.net/). See the section "Build system changes" for details. <li> <li>## New features and enhancements <li> <li>* MKVToolNix GUI: added an option in the preferences for disabling automatic scaling for high DPI displays. Implements #2415. <li>* MKVToolNix GUI: the GUI will now prevent the system from going to sleep while the job queue is running. This feature is implemented for macOS, Windows and Linux/Unix systems where the `org.freedesktop.login1.Manager` D-Bus interface is available. Implements #2411. <li> <li>## Bug fixes <li> <li>* mkvmerge: chapter generation: the start timestamps of chapters generated in intervals was wrong for files whose smallest video timestamp was bigger than 0. Fixes #2432. <li>* mkvmerge: MP4 reader: fixed handling of atoms whose size exceeds the parent atom's size. Fixes #2431. <li>* mkvmerge, MKVToolNix GUI's chapter editor: the chapter name template will now also be used when reading Ogg-style chapter files with empty chapter names. Fixes #2441. <li>* mkvextract: AAC: mkvextract will now write the program config element (PCE) before the first AAC raw data packet if the PCE is present in the `AudioSpecificConfig` structure in the `Codec Private` Matroska element. The PCE carries vital information about the number of channels and is required in certain cases. Fixes #2205 and #2433. <li>* mkvpropedit, MKVToolNix GUI's header editor: in situations when a one-byte space must be covered by a new EBML void element the following element must be moved up instead. If that moved element is a cluster, the corresponding cue entries will now be updated to reflect the cluster's new position. Fixes #2408. <li>* MKVToolNix GUI: Windows: the application manifest is now included properly so that Windows actually recognizes it. See #2415. <li> <li>## Build system changes <li> <li>* Qt's D-Bus implementation is now required for building on systems other than macOS and Windows, <li>* The `boost::format` library is not used anymore. <li>* The [`fmt` library](http://fmtlib.net/) is now required. Versions 3 and newer are supported. As not all Linux distributions include packages for the library, its release 5.2.1 comes bundled with MKVToolNix. The `configure` script will check for a system version of the library and use it if present and recent enough. Otherwise it will fall back to the bundled version and link that statically. </ul> </p> <hr/><br/> <p> <b>Changes for v28.1.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v28_2_0" title="MKVToolNix (Portable) v28.2.0">v28.2.0</a></b> <ul> <li>* mkvmerge, mkvinfo, mkvextract, mkvpropedit, MKVToolNix GUI's info tool & chapter editor: fixed a case of memory being accessed after it had been freed earlier. This can be triggered by specially crafted Matroska files and lead to arbitrary code execution. The vulnerability was reported as Cisco TALOS 2018-0694 on 2018-10-25. </ul> </p> <hr/><br/> <p> <b>Changes for v27.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v28_1_0" title="MKVToolNix (Portable) v28.1.0">v28.1.0</a></b> <ul> <li>## Bug fixes <li> <li>* mkvmerge: AV1 parser: fixed an error in the sequence header parser if neither the `reduced_still_picture_header` nor the `frame_id_numbers_present_flag` is set. Part of the fix for #2410. <li>* mkvmerge: AV1 parser: when creating the `av1C` structure for the Codec Private element the sequence header OBU wasn't copied completely: its common data (type field & OBU size among others) was missing. Part of the fix for #2410. <li>* mkvmerge: Matroska reader, AV1: mkvmerge will try to re-create the `av1C` data stored in Codec Private when reading AV1 from Matroska or WebM files created by mkvmerge v28.0.0. Part of the fix for #2410. <li>* MKVToolNix GUI: info tool: the tool will no longer stop scanning elements when an EBML Void element is found after the first Cluster element. Fixes #2413. </ul> </p> <hr/><br/> <p> <b>Changes for v26.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v27_0_0" title="MKVToolNix (Portable) v27.0.0">v27.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: chapters: the timestamps of chapters read from containers or from <li> chapter files can be adjusted (multiplication and addition) with the new <li> `--chapter-sync` option or using the special track ID `-2` for the existing <li> `--sync` option. Part of the implementation of #2358. <li>* MKVToolNix GUI: multiplexer: adjusted & added controls for mkvmerge's new <li> feature of being able to adjust chapter timestamps. Part of the <li> implementation of #2358. <li>* MKVToolNix GUI: multiplexer: the GUI can now ask for confirmation when the <li> user is about to create a file that won't contain audio tracks. It does this <li> by default if at least one source file contains an audio track. Implements <li> #2380. <li> <li>## Bug fixes <li> <li>* mkvmerge: AC-3: dialog normalization gain removal was corrupting E-AC-3 <li> frames irreversibly by writing checksums in places where they didn't <li> belong. Additionally only the first E-AC-3 frame in a Matroska was processed <li> but not additional dependent frames in the same block. Fixes #2386. <li>* MKVToolNix GUI: fixed a leak of Windows font resources leading to a general <li> slowdown and subsequent crash. Fixes #2372. </ul> </p> <hr/><br/> <p> <b>Changes for v25.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v26_0_0" title="MKVToolNix (Portable) v26.0.0">v26.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: chapter generation: if the name template given by <li> `--generate-chapters-name-template` is empty, no names (`ChapterDisplay` <li> master elements with `ChapterString`/`ChapterLanguage` children) will be <li> generated for the chapter atoms. Part of the implementation of #2275. <li>* mkvmerge: chapters: chapter names generated from MPLS files will now use the <li> name template if one is set via `--generate-chapters-name-template`. Part of <li> the implementation of #2275. <li>* mkvmerge: mkvmerge will no longer abort with an error message if no audio, <li> video and subtitle tracks should be multiplexed. This allows copying of <li> chapters from non-chapter source files (e.g. Matroska or MP4 files). <li>* MKVToolNix GUI: the font size in the tool selector on the left will scale <li> with the font size the user selects in the preferences. <li>* MKVToolNix GUI: the GUI will no longer automatically resize the columns in <li> tree and list views to match the content size. Instead it remembers and <li> restores the widths set by the user. Implements #2353. <li>* MKVToolNix GUI: multiplexer: the chapter name template will now be set <li> automatically to the name template in the preferences' "chapter editor" <li> section. Additionally the option `--generate-chapters-name-template …` will <li> be passed to mkvmerge in situations when mkvmerge will generate chapters <li> (either because automatic generation is enabled or if chapters are generated <li> for MPLS playlists). Part of the implementation of #2275. <li>* MKVToolNix GUI: chapter editor: if the chapter name template is empty, <li> chapters will be generated without names. Part of the implementation of <li> #2275. <li>* MKVToolNix GUI: chapter editor: added an option to remove all chapter names <li> to the "additional modifications" dialog. Part of the implementation of <li> #2275. <li> <li>## Bug fixes <li> <li>* mkvmerge: Matroska reader: fixed wrong timestamps when appending Matroska <li> files where the second Matroska file's first timestamp is bigger <li> than 0. Fixes #2345. <li>* mkvmerge: MP4 reader: fixed division by zero errors during file <li> identification if the timescale is 0 in the `MVHD` atom. <li>* mkvmerge: Windows Television DVR files are now recognized as an unsupported <li> file type. This prevents mis-detection as MPEG-2 with an accompanying flood <li> of error messages. Fixes #2347. <li>* MKVToolNix GUI: info tool: under certain circumstances "cues" were shown at <li> the wrong level (inside the previous master element instead of on level <li> 1). Fixes #2361. <li>* MKVToolNix GUI: job queue: fixed invalid memory handling and consequent <li> crashes when using the "edit in corresponding tool & remove from job queue" <li> option if one of the files in that job contained attached files. Fixes <li> #2368. <li> <li>## Build system changes <li> <li>* An AppStream metadata file will be installed in `$prefix/share/metainfo`. <li> </ul> </p> <hr/><br/> <p> <b>Changes for v24.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v25_0_0" title="MKVToolNix (Portable) v25.0.0">v25.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: SRT/ASS/SSA text subtitles: for files for which no encoding has been specified, mkvmerge will try UTF-8 first before falling back to the system's default encoding. Part of the implementation of #2246. <li>* mkvmerge: SRT/ASS/SSA/WebVTT text subtitles: a warning is now emitted if invalid 8-bit characters are encountered outside valid multi-byte UTF-8 sequences. Part of the implementation of #2246. <li>* mkvmerge: Matroska & MPEG transport stream readers: the encoding of text subtitles read from Matroska files can now be changed with the `--sub-charset` parameter. <li>* Linux: starting with release 25 an AppImage will be provided which should run on any Linux distribution released around the time of CentOS 7/Ubuntu 14.04 or later. <li>* macOS: translations: updated the `build.sh` script to build `libiconv` and a complete `gettext`. Together with an additional fix to how translation files are located, MKVToolNix can now use all interface languages on macOS, too. Fixes #2110, #2307, #2323. <li> <li>## Bug fixes <li> <li>* mkvmerge: AVC/h.264: fixed file identification failing for certain elementary streams due to internal buffers not being cleared properly. Fixes #2325. <li>* mkvmerge: HEVC/h.265: fixed file identification failing for certain elementary streams due to internal buffers not being cleared properly. This is the HEVC analog to what was fixed for AVC in #2325. <li>* mkvmerge: MLP code: fixed various issues preventing MLP from being parsed correctly. Fixes #2326. <li>* mkvmerge: TrueHD/MLP packetizer; dialog volume normalization removal isn't attempted if the track is an MLP track as the operation is only supported for TrueHD, not MLP. <li>* mkvmerge: MPEG TS reader: when reading MPLS mkvmerge will now compare the MPLS's start and end timestamps against the transport stream's PTS instead of its DTS. Otherwise the first key frame of a video track might be dropped if it isn't the first in presentation order. Fixes #2321. <li>* mkvmerge: JSON identification: mkvmerge will ensure that all strings passed to the JSON output modules are valid UTF-8 encoded strings by replacing invalid bytes with placeholder characters. This avoids the JSON library throwing an exception and mkvmerge aborting on such data. Fixes #2327. <li>* mkvmerge: audio packetizers: mkvmerge will now keep discard padding values if they're present for packets read from Matroska files. Fixes #2296. <li>* mkvmerge: Ogg Opus reader: packet timestamps aren't calculated by summing up the duration of all packets starting with timestamp 0 anymore. Instead the algorithm is based on the Ogg page's granule position and which packet number is currently timestamped (special handling for the first and last packets in the stream). <li>* This fixes the first timestamp if the first Ogg packet's granule position is larger than the number of samples in the first packet (= if the first sample's timestamp is bigger than 0). mkvmerge will keep those offsets now and inserts "discard padding" only where it's actually needed. * It also improves handling of invalid files where the first Ogg packet's granule position is smaller than the number of samples in the first packet (= the first sample's timestamp is smaller than 0). mkvmerge will now shift all timestamps up to 0 in such a case instead of inserting "discard padding" elements all over the place. * mkvmerge will no longer insert "discard padding" elements if the difference between a) the calculated number of samples in the packet according to the granule position and b) the actual number of samples as calculated from the bitstream is one sample or less and if the packet isn't the last one in the stream. This circumvents certain rounding errors. * The timestamp of the first packet after a gap in the middle of the stream is now calculated based on the Ogg page the packet belongs to, and not based on the timestamps before the gap. <li>Fixes #2280. <li>* mkvmerge: complete rewrite of the progress handling. It's now based upon the total size of all source files and the current position within them instead of the number of frames/blocks to be processed. This simplifies calculation when appending files and fixes rare cases of when progress report was obvious wrong (e.g. stuck at 0% right until the end). Fixes #2150 and #2330. <li>* MKVToolNix GUI: header editor: non-mandatory elements couldn't be removed anymore due to a regression while fixing #2320. They can now be removed again. Fixes #2322. </ul> </p> <hr/><br/> <p> <b>Changes for v23.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v24_0_0" title="MKVToolNix (Portable) v24.0.0">v24.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: MP4 reader: improved the detection of edit lists consisting of two identical entries, each spanning the file's duration as given in the movie header atom. The second entry is ignored in such cases. See #2306. <li>* mkvmerge: JSON identification: the "display unit" video track property is now reported as `display_unit`. The JSON schema has been bumped to v11 for this change. <li>* mkvmerge, mkvextract: AVC/h.264: empty NALUs will now be removed. <li>* mkvextract: VobSub extraction: empty SPU packets will now be dropped during extraction as other tools such as MP4Box cannot handle them correctly. Implements #2293. <li> <li>## Bug fixes <li> <li>* mkvmerge: E-AC-3 parser: fixed determining the number of channels for streams that contain an AC-3 core with dependent E-AC-3 frames. Fixes #2283. <li>* mkvmerge: Matroska reader: fixed mkvmerge buffering the whole file if a video track is multiplexed that consists of only one or a few frames. Fixes #2304. <li>* mkvmerge: the "display unit" video track property will now be kept if it is set in the source file. Fixes #2317. <li>* MKVToolNix GUI: multiplexer: when scanning playlists, all playlists were offered for selection regardless of the value of the "minimum playlist duration" setting. Fixes #2299. <li>* MKVToolNix GUI: multiplexer: deriving track languages from file names: the regular sub-expressions for ISO 639-1 codes could match on empty strings, too, causing matches in wrong places and hence no language being recognized in certain situations. Fixes #2298. <li>* MKVToolNix GUI: header editor: fixed a crash when saving the file fails (e.g. because it isn't writable). Fixes #2319. <li>* MKVToolNix GUI: header editor: the editor was wrongfully claiming that mandatory elements with default values cannot be removed in the "status" text. Fixes #2320. <li>* MKVToolNix GUI: preferences: on macOS & Linux the setting "enable copying tracks by their type" wasn't restored on program start. Fixes #2297. <li> <li>## Other changes <li> <li>* Niels Lohmann's JSON library: the bundled version has been updated from v1.1.0 (git revision 54d3cab) to v3.1.1 (git revision g183390c1). <li>* pugixml library: the bundled version has been updated from v1.8 to v1.9 (git revision e584ea3). </ul> </p> <hr/><br/> <p> <b>Changes for v22.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v23_0_0" title="MKVToolNix (Portable) v23.0.0">v23.0.0</a></b> <ul> <li>* mkvmerge: input: format detection uses file-extension to improve performance and to give preference when several formats match. <li>* mkvmerge: AV1: added support for reading AV1 video from Open Bitstream Unit files. <li>* mkvmerge: AV1: adjusted the code for the AV1 bitstream format changes made up to 2018-05-02 (git revision d14e878). <li>* mkvmerge: MP4 reader: if a track has an edit list with two identical entries, each spanning the file's duration as given in the movie header atom, then the second entry will now be ignored. Improves the handling of files with bogus data; see #2196 and #2270. <li>* MKVToolNix GUI: multiplexer: added options to only enable tracks of certain types by default. Implements #2271. <li>* MKVToolNix GUI: multiplexer: added an option to enable dialog normalization gain removal by default for all audio tracks for which the operation is supported. Implements #2272. <li>* MKVToolNix GUI: multiplexer: when deriving track languages from the file names is active and the file name contains the usual season/episode pattern (e.g. "S02E14"), then only the part after the season/episode pattern will be used for detecting the language. Part of the improvements for #2267. <li>* MKVToolNix GUI: multiplexer: the regular expression used for deriving track languages from the file names can now be customized in the preferences. Part of the improvements for #2267. <li>* MKVToolNix GUI: multiplexer: the user can now customize the list of track languages the GUI recognizes in file names. This list defaults to a handful of common languages instead of the full list of supported languages. Part of the improvements for #2267. <li> <li>## Bug fixes <li> <li>* mkvmerge: MP3 packetizer: removed a memory leak growing linearly with the track's size. <li>* mkvmerge: VobSub packetizer: whenever a VobSub packet doesn't contain a duration on the container level, mkvmerge will now set it from the duration in the SPU packets. Before it was accidentally setting the SPU-level duration to 0 instead. Fixes #2260. <li>* mkvmerge: track statistics tags: if writing the `Date` element is deactivated via `--no-date`, the `_STATISTICS_WRITING_DATE_UTC` isn't written either anymore. Fixes #2286. <li>* mkvmerge, mkvextract, mkvpropedit: removed several small, constant-size memory leaks. <li>* mkvextract: fixed a crash when mkvextract with a non-Matroska file as the source file. Fixes #2281. <li>* MKVToolNix GUI: the central area is now scrollable, allowing the GUI to be resized to almost arbitrary sizes. Fixes #2265. <li>* MKVToolNix GUI: multiplexer: the "copy file title to destination file name" functionality will now replace everything in the destination file name up to the last period instead of only up to the first period. Fixes #2276. <li> <li>## Build system changes <li> <li>* build system: MKVToolNix now requires a compiler that supports the following features of the C++14 standard: "user-defined literals for `std::string`". For the GNU Compiler Collection (gcc) this means v5.x or newer; for clang it means v3.4 or newer. <li>* Windows: linking against and installing shared version of the libraries with MXE is now supported by setting `configure`'s `host` triplet accordingly, e.g. `--host=x86_64-w64-mingw32.shared`. <li> <li>## Other changes <li> <li>* mkvmerge: AV1: support for AV1 must be activated manually by adding `--engage enable_av1` as the AV1 bitstream specification hasn't been finalized yet. <li> </ul> </p> <hr/><br/> <p> <b>Changes for v21.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v22_0_0" title="MKVToolNix (Portable) v22.0.0">v22.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge, MKVToolNix GUI multiplexer: AC-3, DTS, TrueHD: added an option for removing/minimizing the dialog normalization gain for all supported types of the mentioned codecs. Implements #1981. <li>* mkvmerge: AV1: added support for reading AV1 video from IVF, WebM and Matroska files. <li>* mkvmerge: FLAC: mkvmerge can now ignore ID3 tags in FLAC files which would otherwise prevent mkvmerge from detecting the file type. Implements #2243. <li>* mkvinfo: the size and positions of frames within "SimpleBlock" and "BlockGroup" elements are now shown the same way they're shown for other elements (by adding the `-v -v` and `-z` options). <li>* MKVToolNix GUI: multiplexer: added options for deriving the track languages from the file name by searching for ISO 639-1/639-2 language codes or language names enclosed in non-word, non-space characters (e.g. "…[ger]…" for German or "…+en+…" for English). Implements #1808. <li>* MKVToolNix GUI: info tool: implemented reading all elements in the file after the first cluster. Only top-level elements are shown; child elements are only loaded on demand. Implements the rest of #2104. <li>* MKVToolNix GUI: info tool: added a context menu with the option to show a hex dump of the element with the bytes making up the EBML ID and the size portion highlighted in different colors. In-depth highlighting is done for the data in `SimpleBlock` and `Block` elements. <li>* MKVToolNix GUI: chapter editor: added an option to remove all end timestamps to the "additional modifications" dialog. Implements #2231. <li> <li>## Bug fixes <li> <li>* mkvmerge: MP4 reader: fixed reading the ESDS audio header atom if it is located inside a "wave" atom inside the "stsd" atom. <li>* mkvmerge: MP4 reader: AAC audio tracks signalling eight channels in the track headers but only seven in the codec-specific configuration will be treated as having eight channels. <li>* mkvmerge: MPEG TS reader: fixed wrong handling of the continuity counter for TS packets that signal that TS payload is present but where the adaptation field spans the whole TS packet. <li>* mkvmerge: the 'document type version' and 'document type read version' header fields are now set depending on which elements are actually written, not on which features are active (e.g. if a `SimpleBlock` is never written, then the 'read version' won't be set to 2 anymore). Part of the fix for #2240. <li>* mkvmerge: the 'document type version' header field is now set to 4 correctly if any of the version 4 Matroska elements is written. Part of the fix for #2240. <li>* mkvinfo: summary mode: the file positions reported for frames in `BlockGroup` elements did not take the bytes used for information such as timestamp, track number flags or lace sizes into account. They were therefore too low. <li>* mkvpropedit, MKVToolNix GUI header editor: the 'document type version' and 'document type read version' header fields are now updated if elements written by the changes require higher version numbers. Part of the fix for #2240. <li>* mkvpropedit, MKVToolNix GUI header editor: mandatory elements can now be deleted if there's a default value for them in the specifications. Fixes #2241. <li>* source code: fixed a compilation error on FreeBSD with clang++ 5.0. Fixes #2255. <li> <li>## Build system changes <li> <li>* A compilation database (in the form of a file `compile_commands.json`) can be built automatically if the variable `BUILD_COMPILATION_DATABASE` is set to `yes` (e.g. as `rake BUILD_COMPILATION_DATABASE=yes`). </ul> </p> <hr/><br/> <p> <b>Changes for v20.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v21_0_0" title="MKVToolNix (Portable) v21.0.0">v21.0.0</a></b> <ul> <li>* mkvmerge: track statistics tags: the `TagDefault` element will not be written anymore as it was always set to the default value `1` anyway. Implements #2202. <li>* mkvmerge, MKVToolNix GUI: JSON files can now contain C++-style line comments outside of strings (e.g. something like this: `// this is ignored`). Such comments, even though not part of the official JSON specifications, are now ignored when reading JSON files. <li>* MKVToolNix GUI: chapter editor: opening a Matroska file without chapters in it will now open the file in an empty chapter editor instead of showing an error message. Implements #2218. <li>* MKVToolNix GUI: an "info" tool has been added, replacing the functionality of mkvinfo's GUI. The functionality is not on par yet but will be for release v22. Implements most of the functionality of #2104. <li> <li>## Bug fixes <li> <li>* build system: `configure` was treating `--disable-ubsan` and `--disable-addrsan` the same as `--enable-ubsan` and `--enable-addrsan`. Fixes #2199. <li>* build system: an error message is output if a command to execute is not found instead of silently failing. <li>* build system: in addition to looking for the `gettext` C function and library, `configure` now also verifies the presence of the `msgfmt` program instead of simply relying on it. <li>* mkvmerge: appending files with additional parts at the same time was broken if more than one additional part was appended (e.g. when appending files from DVDs with something like `'(' VTS_01_1.VOB VTS_01_2.VOB ')' + '(' VTS_02_1.VOB VTS_02_2.VOB ')'`). In such a situation the content from files `VTS_02_1.VOB` and `VTS_02_2.VOB` where laid out in parallel to the content from the earlier files. <li>* mkvmerge: FLV reader: a single invalid AAC frame was written for AAC audio tracks with codec initialization data longer than five bytes. <li>* mkvmerge: FLV reader: timestamps will be normalized down to 0. Fixes #2220. <li>* mkvmerge: MP4 reader: if an AAC track doesn't contain an AAC-specific decoder configuration in the ESDS portion, then a default decoder configuration will be generated based on the track's header data instead of skipping the track. Fixes #2221. <li>* mkvmerge: MP4 reader: fixed reading HEVC/h.265 video tracks if they're stored as Annex B byte streams inside MP4. Fixes #2215. <li>* mkvmerge: Ogg Opus reader: mkvmerge will now emit a warning instead of aborting when it encounters an Ogg Opus page with no data in the packet. Fixes #2217. <li>* mkvmerge, mkvextract: Matroska parser: fixed a segmentation fault that occurred whenever the first level 1 element after resyncing after an error in the file structure isn't a cluster. Fixes #2211. <li>* mkvmerge, MKVToolNix GUI multiplexer & header editor: fixed a crash during file type detection for attachments if MKVToolNix is installed in a path with non-ASCII characters (e.g. German Umlauts). Fixes #2212. <li>* mkvinfo: the `--hex-positions` parameter did nothing in summary mode. <li>* mkvinfo: Windows: line endings will be written as `\r\n` (carriage return & line feed) again instead of just `\n` (line feed). <li>* mkvpropedit: adding track statistics tags: for tracks with content encoding (compression) mkvpropedit is now accounting the uncompressed number of bytes, not the encoded (compressed) number of bytes. Fixes #2200. <li>* MKVToolNix GUI: multiplexer: the subtitle character set can now be set for appended subtitle files, too. Fixes #2214. <li>* MKVToolNix GUI: multiplexer: when appending, all tracks appended to disabled tracks will start out disabled, too. <li> <li>## Build system changes <li> <li>* mkvinfo: the GUI portion has been removed. mkvinfo is now a pure command-line program again. </ul> </p> <hr/><br/> <p> <b>Changes for v17.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v20_0_0" title="MKVToolNix (Portable) v20.0.0">v20.0.0</a></b> <ul> <li>* mkvmerge: the deprecated options `--identify-verbose` (and its counterpart `-I`), `--identify-for-gui`, `--identify-for-mmg` and `--identification-format verbose-text` <li>* all command line tools: support for the deprecated, old, proprietary format used for option files <li>* all command line tools: support for passing command line options via the deprecated environment variables `MKVTOOLNIX_OPTIONS`, `MKVEXTRACT_OPTIONS`, `MKVINFO_OPTIONS`, `MKVMERGE_OPTIONS` and `MKVPROPEDIT_OPTIONS` <li> <li>* mkvinfo: most of its code was re-written in order to lay the groundwork for <li>including its functionality in MKVToolNix GUI but with more features than <li>the existing mkvinfo GUI. The result is that a lot of its output has been <li>changed slightly while keeping the basic layout. Changes include but aren't <li>limited to: <li> <li>* Several element names are a bit clearer (e.g. `Maximum cache` instead of `MaxCache`). <li>* All timestamps and durations are now output as nanoseconds in formatted form (e.g. `01:23:45.67890123`). All additional formats (e.g. floating point numbers output in seconds or milliseconds) were removed. <li>* Element names for chapters and tags are now translated if a translation is available. <li>* Elements located in wrong positions within the Matroska document are handled better. <li> <li>While mkvinfo's output is mostly kept very stable, it is not designed to be <li>parsed by other utilities. Even though I've tried hard to cram all changes <li>and cleanups into this version, additional changes may be made in the next <li>couple of releases depending on user feedback and bug reports. <li> <li>## New features and enhancements <li> <li>* mkvmerge: AVC/h.264 packetizer (framed): access unit delimiter NALUs will <li>now be removed. Implements #2173. <li> <li>## Bug fixes <li> <li>* mkvmerge: AVC/h.264 parser: when fixing the bitstream timing information <li>mkvmerge will now use exact representations of the desired field duration if <li>possible. For example, when indicating 50 fields/second `num_units_in_tick` <li>is set to 1 and `time_scale` to 50 instead of 5368709 and 268435456. Part of <li>the fix for #1673. <li>* mkvmerge: AVC/h.264 parser: mkvmerge no longer assumes that encountering <li>sequence parameter set or picture parameter set NALUs signal the start of a <li>new frame. Fixes #2179. <li>* mkvmerge: AVC/h.264 packetizer (framed): when mkvmerge is told to fix the <li>bitstream timing information, it will now update all SPS NALUs, not just the <li>ones in the AVCC. Part of the fix for #1673. <li>* mkvmerge: MPEG TS reader: TS packet payloads will only be treated as PES <li>packets if the payload actually starts with a PES start code. The prior <li>behavior led to wrong timestamps and potentially broken frame data. Fixes <li>#2193. <li>* mkvmerge: MPEG TS reader: mkvmerge will now drop incomplete PES packets as <li>soon as an error is detected in the transport stream instead of passing the <li>incomplete frame to the packetizer. An error is assumed either if the <li>`transport_error_indicator` flag is set or if the value of the <li>`continuity_counter` header field doesn't match the expected value. Fixes <li>#2181. <li>* mkvmerge: Opus: when re-muxing Opus from Matroska mkvmerge will now write <li>"block duration" elements for all block groups where a "discard padding" is <li>set, too. Fixes #2188. <li>* mkvmerge: SRT reader: mkvmerge can now handle SRT files with timestamps <li>without decimal places (e.g. `00:01:15` instead of `00:01:15.000`). <li>* mkvmerge: read buffer I/O class: the class could get out of sync regarding <li>the file position of the underlying file I/O class causing wrong data to be <li>returned on subsequent read operations. One result was that trying to <li>identifying MPLS files that refer to very short M2TS files caused mkvmerge <li>to segfault. <li>* mkvmerge: multiplexer core: if there's a gap in audio timestamps, a new <li>block group/lace will be started for the first frame after each gap. Before <li>the fix the frame after the gap was often stored in the previous block group <li>causing the gap to be in the wrong place: at the end of that block <li>group. Fixes #1700. <li>* mkvextract: AVC/h.264: if two consecutive IDR frames with the same <li>`idr_pic_id` parameter and no access unit delimiters are found between them, <li>mkvextract will insert an access unit delimiter in order to signal the start <li>of a new access unit. Fixes #1704. <li>* MKVToolNix GUI: update check dialog: Markdown links will now be converted to <li>clickable links. Fixes #2176. <li>* build system: fixed a race condition when creating new directories if `rake` <li>is run with `-jN` in newer versions of Ruby/`rake`. Fixes #2194. <li> <li>## Build system changes <li> <li>* [cmark](https://github.com/commonmark/cmark), the CommonMark parsing and <li>rendering library in C, is now required when building the GUIs. </ul> </p> <hr/><br/> <p> <b>Changes for v16.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v17_0_0" title="MKVToolNix (Portable) v17.0.0">v17.0.0</a></b> <ul> <li>## Important notes <li> <li>* 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 …`). <li>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. <li> <li>* 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. <li>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. <li>For example, extracting two tracks, the chapters and the tags can be done with the following command: <li>`mkvextract input.mkv tracks 0:video.h265 1:audio.aac chapters chapters.xml tags tags.xml` <li>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. <li> <li>## New features and enhancements <li> <li>* 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`. <li>* mkvextract: the command line interface has been changed to allow extraction of multiple items at the same time. See section "Important notes" for details. <li> <li>## Bug fixes <li> <li>* 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. <li>* mkvmerge: fixed AC-3 being misdetected as encrypted MPEG program streams under certain conditions. <li>* 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. <li>* 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. <li>* mkvmerge: SRT reader: fixed calculating the duration of entries starting with at a negative timestamp. <li>* 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. <li>* 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. <li>* 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. </ul> </p> <hr/><br/> <p> <b>Changes for v15.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v16_0_0" title="MKVToolNix (Portable) v16.0.0">v16.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: MP4 reader: added support for Vorbis. Implements #2093. <li> <li>## Bug fixes <li> <li>* configure: the checks for libEBML and libMatroska have been fixed to require <li> libEBML 1.3.5 and libMatroska 1.4.7 as intended. <li> <li>* mkvmerge: AAC reader: mkvmerge will now emit an error message for AAC files <li> whose header fields imply a sampling frequency or number of channels <li> of 0. See #2107. <li>* mkvmerge: AVC/h.264 ES parser: fixed the calculation of reference <li> information for P and B frames. This also fixes some P frames being marked <li> as B frames and vice versa. <li>* mkvmerge: AVC/h.264 ES parser: only non-key frames that have the NALU header <li> field `nal_ref_idc` set to 0 will be marked as "discardable" in <li> `SimpleBlock` elements. Other half of the fix for #2047. <li>* mkvmerge: HEVC/h.265: the generation of the HEVCC structure stored in <li> `CodecPrivate` was wrong in two places: 1. the position of the number of <li> sub-layers was swapped with reserved bits and 2. the VPS/SPS/PPS/SEI lists <li> did not start with a reserved 1 bit. <li>* mkvmerge: output: the `doc type version` will be set at least to 2 if <li> certain elements are written (`CodecState`, `CueCodecState`, <li> `FlagInterlaced`). <li>* mkvmerge: output: the track header attributes `MinCache` and `MaxCache` will not be <li> written anymore. Fixes #2079. <li>* mkvmerge: Matroska reader: the "key" and "discardable" flags of SimpleBlock <li> elements will be kept as they are. Partial fix for #2047. <li>* mkvmerge: Matroska reader: if present in the file, the "white colour <li> coordinate x" track header attribute was written to both "white colour <li> coordinate x" and "white colour coordinate y" in the output file. <li>* mkvmerge: Opus output: mkvmerge will now put all frames with discard padding <li> into their own block group. Fixes #2100. <li>* MKVToolNix GUI: header editor: removed the check for external modification <li> when saving the file. Fixes #2097. <li>* MKVToolNix GUI: job queue: fixed calculation of total progress when <li> automatic removal of completed is enabled. Fixes #2105. <li> <li>## Build system changes <li> <li>* libEBML v1.3.5 and libMatroska v1.4.8 are now required. In fact v15.0.0 <li> already requires libEBML v1.3.5 and libMatroska v1.4.7 but did not include <li> proper version checks for them (nor was there a NEWS.md entry for the new <li> libMatroska requirement). New is the requirement for libMatroska v1.4.8 due <li> to it fixing writing block groups for tracks with the track number 128 (see <li> #2103). </ul> </p> <hr/><br/> <p> <b>Changes for v14.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v15_0_0" title="MKVToolNix (Portable) v15.0.0">v15.0.0</a></b> <ul> <li>## Important notes <li> <li>* 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. <li> <li>## New features and enhancements <li> <li>* 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. <li>* 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. <li>* MKVToolNix GUI: header editor: added support for editing the video colour attributes. Implements the second half of #2038. <li>* MKVToolNix GUI: header editor: added support for the "video projection" track header attributes. Part of the implementation of #2064. <li>* 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. <li>* mkvmerge: added support for the "video projection" track header attributes. Part of the implementation of #2064. <li>* mkvinfo: added support for the "video projection" track header attributes. Part of the implementation of #2064. <li>* mkvpropedit: added support for editing the video colour attributes. Implements one half of #2038. <li>* mkvpropedit: added support for the "video projection" track header attributes. Part of the implementation of #2064. <li> <li>## Bug fixes <li> <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li>* mkvinfo: fixed a null pointer dereference if an `EbmlBinary` element's data pointer is a null pointer. Fixes #2072. <li> <li>## Build system changes <li> <li>* 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. <li>* libEBML v1.3.5 is now required. <li> <li>## Other changes <li> <li>* 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. </ul> </p> <hr/><br/> <p> <b>Changes for v13.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v14_0_0" title="MKVToolNix (Portable) v14.0.0">v14.0.0</a></b> <ul> <li> <li>## New features and enhancements <li> <li>* mkvmerge: AAC: implemented support for AAC with 960 samples per <li> frame. Implements #2031. <li>* mkvmerge: identification: if the encoding/character set of a text subtitle <li> track is known (e.g. because a byte order mark is present in the file), then <li> it will be output during identification as the `encoding` <li> property. Implements mkvmerge's part of #2053. <li>* mkvmerge: WAV reader: added support for Wave64 files. Implements #2042. <li>* mkvmerge, mkvpropedit, MKVToolNix GUI (chapter editor): added support for <li> chapters in WebM files that is spec-compliant by removing all tag elements <li> not supported by the WebM spec. Implements #2002. <li>* mkvpropedit: added support for tags in WebM files that is spec-compliant by <li> removing all tag elements not supported by the WebM spec. <li>* MKVToolNix GUI: multiplexer: if the encoding/character set of a subtitle <li> track cannot be changed, the GUI will deactivate the "subtitle character <li> set" drop-down box and ignore changes to it when multiple tracks are <li> selected. Additionally, if the track's encoding is known and cannot be <li> changed (e.g. due to a byte order mark in the file), that encoding will be <li> selected in the drop-down box automatically. Both changes signal to the user <li> that she doesn't have to take care of the encoding herself. Implements the <li> GUI's part of <li> #2053. <li>* MKVToolNix GUI: chapter editor: added a function to the "additional <li> modifications" dialog for calculating and setting the end <li> timestamps. Implements #1887. <li>* MKVToolNix GUI: changed the shortcuts for switching between the various <li> tools from `Alt+number` (e.g. `Alt+1` for the multiplexer tool) to <li> `Ctrl+Alt+number` in order to avoid clashing with Windows' input method for <li> arbitrary characters (pressing and holding `Alt` and typing the codepoint on <li> the number pad). Implements #2034. <li>* MKVToolNix GUI: added a "Window" menu and entries with shortcuts for <li> selecting the next (`Ctrl+F6`) respectively previous tab (`Ctrl+Shift+F6`) <li> in the current tool. Implements #1972, #2032. <li>* MKVToolNix GUI: on Windows the GUI will now determine the default font to <li> use by querying Windows for the default UI/message box font instead of using <li> the hardcoded `Segoe UI`. This might fix issues such as #2003 (unverified). <li>* translations: added a Romanian translation of the programs by Daniel (see <li> AUTHORS). <li> <li> <li>## Bug fixes <li> <li>* mkvmerge: AVC/h.264 parser: fixed wrong frame order & timestamp calculation <li> in certain situations when SPS (sequence parameter sets) or PPS (picture <li> parameter sets) change mid-stream. Fixes #2028. <li>* mkvmerge: HEVC/h.265 parser: fixed wrong frame order & timestamp calculation <li> in certain situations when SPS (sequence parameter sets) or PPS (picture <li> parameter sets) change mid-stream. This is the HEVC/h.265 equivalent of <li> #2028. <li>* mkvmerge: MPEG-1/-2 video: the "remove stuffing bytes" feature introduced in <li> v5.8.0 (feature request #734) was broken. In a lot of situations it did not <li> detect the end of a slice correctly and removed 0 bytes that were actually <li> part of the slice structure. Often there were no visual problems as decoders <li> were able to ignore such errors, but in other cases there are visual <li> artifacts upon decoding. As detecting the slice end properly requires <li> parsing the whole slice structure, this feature has been removed <li> again. Fixes #2045. <li>* mkvmerge: MPEG PS reader: fixed mkvmerge trying to handle an "end" code the <li> same way as a "program stream map" code. <li>* mkvmerge: MPEG TS reader: mkvmerge won't emit warnings if the system's <li> `iconv` library doesn't support the ISO 6937 character set. Fixes #2023. <li>* mkvmerge: when appending fails the error message details (e.g. "the number <li> of channels differs: 1 and 2") were often not output. Fixes #2046. <li>* MKVToolNix GUI: multiplex tool: implemented a workaround for a crash that <li> could occur during drag & drop if at least one of the columns is <li> hidden. Fixes #2009. <li>* MKVToolNix GUI: multiplex tool: appended tracks can no longer be enabled <li> (selected for multiplexing) if the track they're going to be appended to is <li> not enabled. Fixes #2039. <li>* MKVToolNix GUI: multiplex tool: if the GUI is set to ensure unique output <li> file names, it will now verify that right before starting to <li> multiplex/adding the job to the queue, too. Fixes #2052. <li>* MKVToolNix GUI: fixed the total progress reverting to 0% instead of staying <li> at 100% when all jobs have finished. This was introduced by the attempt at <li> fixing the computation of the value of total progress bar for multiple jobs <li> running. Fixes #2005. <li>* configure: fixed DocBook detection if `/bin/sh` is `dash`. Patch by Steve <li> Dibb. Fixes #2054. <li> <li>## Build system changes <li> <li>* Boost: the minimum required version has been bumped to 1.49.0. Earlier <li> releases fail to build on my current systems and will therefore not be <li> supported anymore. <li>* configure: when looking for the "nlohnmann JSON" include files configure <li> will now try the path "nlohmann/json.hpp" first, "json.hpp" second (only <li> "json.hpp" was tried before). If neither is found, the copy included in the <li> MKVToolNix sources will be used. Fixes #2048. </ul> </p> <hr/><br/> <p> <b>Changes for v12.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v13_0_0" title="MKVToolNix (Portable) v13.0.0">v13.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: MPEG TS reader: information about multiple programs will be output <li> as container properties during verbose/JSON identification. See #1990 for <li> the use case. <li>* MKVToolNix GUI: multiplex tool: added a column "program" to the tracks <li> list. Certain container types such as MPEG transport streams can contain <li> multiple programs. The new column will contain the service name (think TV <li> station names such as "arte HD") for such streams. Implements the GUI part <li> of #1990. <li>* MKVToolNix GUI: multiplex tool: the dialog asking the user what to do with <li> dropped files (add to current settings, add to new settings etc.) now <li> remembers the previous decision and defaults to it the next time it's <li> shown. Implements #1997. <li>* MKVToolNix GUI: tabs can now be closed by pressing the middle mouse <li> button. Implements #1998. <li> <li>## Bug fixes <li> <li>* mkvmerge: MP4 reader: MPEG-1/2 video read from MP4 files was written with an <li> invalid codec ID (e.g. `V_MPEG7`) in certain cases. Fixes #1995. <li>* mkvmerge: MPEG PS reader: made the file type detection less strict so that <li> garbage at the start of the file doesn't prevent detection. Fixes #2008. <li>* mkvmerge: MPEG PS reader: (E-)AC-3 tracks were not detected if the very <li> first packet for that track didn't contain a full (E-)AC-3 frame. Fixes <li> #2016. <li>* mkvmerge: MPEG TS reader: fixed mkvmerge not detecting all tracks in MPEG <li> transport streams containing multiple programs. Fixes one part of #1990. <li>* mkvmerge: MPEG TS reader: fixed track content being broken for some tracks <li> read from MPEG transport streams containing multiple programs. Fixes another <li> part of #1990. <li>* mkvmerge: JSON identification: the `stream_id` and `sub_stream_id` track <li> properties were output as hexadecimal strings instead of unsigned <li> integers. As the `ts_pid` track property was only used for MPEG transport <li> streams, its value is now output as `stream_id` instead, and the `ts_pid` <li> property has been removed. The JSON schema version has been bumped to 8 due <li> to this change. <li>* mkvmerge: fixed a crash when appending video tracks where one track has a <li> CodecPrivate member and the other one doesn't. <li>* mkvmerge: track statistics tags: the `NUMBER_OF_BYTES` tag is supposed to <li> contain the number of bytes in a track before any of the content encoding <li> schemes such as lossless compression is applied; however, mkvmerge was <li> wrongfully using the number of bytes after the schemes had been <li> applied. Fixes #2022. <li>* mkvmerge: CLPI & MPLS parsers: MPLS and CLPI files with version number <li> `0300` as used on Ultra HD Blu-ray Discs are now accepted as well. Fixes <li> #2010. <li>* mkvpropedit: fixed a crash when the selector used for `--tags` is invalid. <li>* MKVToolNix GUI: fixed computation of value of total progress bar for multiple <li> jobs running. Fixes #2005. <li>* MKVToolNix GUI: multiplexer, adding new attachments: when the GUI checks if <li> there's an attachment with the same name it will now disregard disabled <li> attached files. Fixes #2001. <li>* Debian/Ubuntu packaging: during a `dpkg-buildpackage` run the test suite was <li> failing when a non-English locale was active and MKVToolNix packages had <li> already been installed. Fixes #2011. </ul> </p> <hr/><br/> <p> <b>Changes for v11.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v12_0_0" title="MKVToolNix (Portable) v12.0.0">v12.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* 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. <li>* MKVToolNix GUI: chapter editor: added the extension `*.cue` (for cue sheet files) to the "open chapter file" dialog. <li>* 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. <li>* 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. <li>* mkvpropedit, MKVToolNix GUI: header editor: added support for editing the "date" segment information field. Implements the other half of #1964. <li> <li>## Bug fixes <li> <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li>* mkvmerge: MPEG TS reader: fixed a potential read access from invalid memory addresses in the code parsing the program map table (PMT). <li>* 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. <li>* 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. <li>* 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"). <li>* configure: fixed configure aborting if a `moc`, `uic`, `rcc` or `qmake` binary is found, but the binary's version is too old. Fixes #1979. </ul> </p> <hr/><br/> <p> <b>Changes for v10.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v11_0_0" title="MKVToolNix (Portable) v11.0.0">v11.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: FLAC reader: added support for handling embedded pictures as attachments. Implements #1942. <li>* mkvmerge: MP4 reader: merged pull request #1804 adding support for parsing the "COLR" atom and including its values as track headers. <li>* 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. <li>* 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). <li>* 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. <li> <li>## Bug fixes <li> <li>* mkvmerge: AAC parser: fixed mis-detection of certain data as valid ADTS AAC headers resulting in memory allocation failures. Fixes #1941. <li>* 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. <li>* mkvmerge: AVC/h.264 & HEVC/h.265 parsers: all trailing zero bytes will now be removed from NALUs. Fixes #1952. <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li>* mkvmerge: Matroska reader: invalid track language elements are now treated as if they were set to `und` = "undetermined". See #1929 for context. <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li> <li>## Build system changes <li> <li>* 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. <li>* 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. <li>* 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. <li>* Qt's multimedia component is required for compilation of the GUIs since version 11. </ul> </p> <hr/><br/> <p> <b>Changes for v9.9.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v10_0_0" title="MKVToolNix (Portable) v10.0.0">v10.0.0</a></b> <ul> <li>## New features and enhancements <li> <li>* mkvmerge: AVC/h.264 parser: mkvmerge will now drop all frames before the <li> first key frame as they cannot be decoded properly anyway. See #1908. <li>* mkvmerge: HEVC/h.265 parser: mkvmerge will now drop all frames before the <li> first key frame as they cannot be decoded properly anyway. See #1908. <li>* mkvmerge: HEVC/h.265 parser: added a workaround for invalid values for the <li> "default display window" in the VUI parameters of sequence parameter <li> sets. Fixes #1907. <li> <li>## Bug fixes <li> <li>* mkvmerge: MP4 reader: fixed track offsets being wrong in certain situations <li> regarding the presence or absence of edit lists ('elst' atoms) & composition <li> timestamps ('ctts' atoms). Fixes #1889. <li>* mkvmerge: MP4 reader: offsets in "ctts" are now always treated as signed <li> integers, even with version 0 atoms. <li>* mkvinfo: the timestamps of SimpleBlocks with negative timestamps are now <li> shown correctly. <li>* mkvmerge: Matroska reader: fixed handling BlockGroups and SimpleBlocks with <li> negative timestamps. <li>* mkvmerge: MP3 packetizer: the MP3 packetizer will no longer drop timestamps <li> from source containers if they go backwards. This keeps A/V in sync for <li> files where the source was in sync even though their timestamps aren't <li> monotonic increasing. Fixes #1909. <li>* mkvmerge: AVC/h.264 parser: mkvmerge will now drop timestamps from the <li> source container if no frame is emitted for that timestamp. Fixes #1908. <li>* mkvmerge: HEVC/h.265 parser: mkvmerge will now drop timestamps from the <li> source container if no frame is emitted for that timestamp. Fixes the HEVC <li> equivalent of the problem with AVC described in #1908. <li>* mkvextract: SSA/ASS: fixed extraction when the "Format" line in the <li> "[Events]" section contains less fields than the default for SSA/ASS would <li> indicate. Fixes #1913. </ul> </p> <hr/><br/> <p> <b>Changes for v9.8.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v9_9_0" title="MKVToolNix (Portable) v9.9.0">v9.9.0</a></b> <ul> <li>New features and enhancements <li> <li>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. <li>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. <li>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. <li>GUI: running programs after jobs: added a new variable <MTX_INSTALLATION_DIRECTORY> for the directory the MKVToolNix GUI executable is located in. <li>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. <li>mkvmerge: MP4 reader: "ctts" version 1 atoms are now supported. <li>Bug fixes <li> <li>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. <li>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. <li>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. <li>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. <li>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. <li>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. <li>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. <li>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. <li>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. <li>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. <li>mkvmerge: fixed misdetection of certain AC-3 files as MP3 files which led to an error message that "the demultiplexer could not be initialized". <li>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. <li>mkvmerge: MP4 reader: the timestamps of all multiplexed tracks will now be 0-based properly. <li>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. <li>Build system changes <li> <li>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-root=dir", "–with-po4a=prog" and "–with-po4a-translate=prog. <li>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. </ul> </p> <hr/><br/> <p> <b>Changes for v9.7.1 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v9_8_0" title="MKVToolNix (Portable) v9.8.0">v9.8.0</a></b> <ul> <li>## Important notes <li> <li>* 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. <li> <li>## New features and enhancements <li> <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li>* 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. <li> <li>## Bug fixes <li> <li>* 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. <li>* 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. <li>* 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. <li>* mkvmerge: fixed that the error message "not enough space on disk" was shown twice on some operating systems. Fixes #1850. <li>* mkvmerge, Matroska: if a codec delay is set for a track in the input file, it is kept. Fixes #1849. <li>* 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. <li>* 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. <li> <li>## Build system changes <li> <li>* 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. <li>* If MKVToolNix is built with rake v10.0.0 or newer, its "multitask" feature will be turned on allowing automatic parallel builds. <li>* CURL is no longer used by MKVToolNix and is therefore not required for building anymore. <li> <li>## Other changes <li> <li>* GUI: the update check now uses Qt's networking classes instead of CURL. <li>* 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. </ul> </p> <hr/><br/> <p> <b>Changes for v9.4.1 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v9_4_2" title="MKVToolNix (Portable) v9.4.2">v9.4.2</a></b> <ul> <li> * mkvmerge: bug fix: AVC & HEVC readers: release v9.4.1 contains a change to both readers so that they will refuse to handle files where the detected pixel width or height is equal to or less than 0. This check was wrong in certain cases causing mkvmerge to reject a file as an unsupported file type. This has been fixed while keeping the constraints on width & height having to be positive. </ul> </p> <hr/><br/> <p> <b>Changes for v9.0.1 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v9_1_0" title="MKVToolNix (Portable) v9.1.0">v9.1.0</a></b> <ul> <li>* mkvmerge: MPEG TS/teletext enhancement: included the teletext page number in the JSON/verbose identification output as track property "teletext_page". <li>* 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). <li>* 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. </ul> </p> <hr/><br/> <p> <b>Changes for v9.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v9_0_1" title="MKVToolNix (Portable) v9.0.1">v9.0.1</a></b> <ul> <li>* 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. <li> <li>* 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. <li>* 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. </ul> </p> <hr/><br/> <p> <b>Changes for v8.9.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v9_0_0" title="MKVToolNix (Portable) v9.0.0">v9.0.0</a></b> <ul> <li>2016-03-26 Moritz Bunkus <moritz@bunkus.org> <li>* Released v9.0.0 "Power to progress". <li> <li>2016-03-25 Mike <kona8lend@gmail.com> <li>* build system: implemented support for explicit pre-compiled headers for Linux and Mac OS. <li> <li>2016-03-25 Moritz Bunkus <moritz@bunkus.org> <li>* Installer: fixed support for silent installation and uninstallation. <li> <li>2016-03-24 Moritz Bunkus <moritz@bunkus.org> <li>* mkvmerge: bug fix: fixed two more issues in the conversion of teletext subtitles to SRT subtitles: <li>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). <li>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. <li>Second part of the fix for #1623. <li> <li>2016-03-22 Moritz Bunkus <moritz@bunkus.org> <li>* mkvmerge: MP4/QuickTime reader: audio tracks with the FourCC 'lpcm' are muxed as A_PCM/INT/LIT instead of A_QUICKTIME. <li>* 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. <li>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. <li>Fixes #1633. <li> <li>2016-03-21 Moritz Bunkus <moritz@bunkus.org> <li>* all: new feature: added a new translation of both the programs and the man pages to Korean by Potato (see AUTHORS). <li>* 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. <li>2016-03-20 Moritz Bunkus <moritz@bunkus.org> <li>* 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). <li> <li>2016-03-18 Moritz Bunkus <moritz@bunkus.org> <li>* 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. <li> <li>2016-03-16 Moritz Bunkus <moritz@bunkus.org> <li>* mkvmerge: bug fix: fixed two issues in the conversion of teletext subtitles to SRT subtitles: <li>1. Consecutive teletext packets with the same content are now merged into a single entry instead of resulting in multiple entries. <li>2. The calculation of a packet's duration was wrong in certain situations. <li>Part of the fix for #1623. <li> <li>2016-03-14 Moritz Bunkus <moritz@bunkus.org> <li>* MKVToolNix GUI: merge tool (playlist selection dialog) enhancement: the playlist items are sorted by their position within the playlist by default. <li>* MKVToolNix GUI: merge tool (playlist selection dialog) enhancement: double-clicking on a playlist will select and add that playlist. <li> <li>2016-03-12 Moritz Bunkus <moritz@bunkus.org> <li>* mkvmerge: enhancement: added the number of bits per sample to the verbose/JSON identification output for FLAC files. <li> <li>2016-03-11 Moritz Bunkus <moritz@bunkus.org> <li>* mkvextract: bug fix: fixed the duplication of VPS, SPS, PPS and SEI NALUs when extracting h.265/HEVC tracks. See #1076 and #1621. <li>* 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. <li> <li>2016-03-09 Moritz Bunkus <moritz@bunkus.org> <li>* 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. <li> <li>2016-03-07 Moritz Bunkus <moritz@bunkus.org> <li>* 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. <li>* 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. <li> <li>2016-03-01 Moritz Bunkus <moritz@bunkus.org> <li>* 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. <li>Implements mkvmerge's and the GUI's part of #1586. <li> <li>2016-02-28 Moritz Bunkus <moritz@bunkus.org> <li>* 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. <li> <li>2016-02-27 Moritz Bunkus <moritz@bunkus.org> <li>* 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. <li> <li>2016-02-25 Moritz Bunkus <moritz@bunkus.org> <li>* 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. <li>Implements the feature enhancement part of #1610. <li>* 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. <li>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. <li>Fixes the bug part of #1610. <li> <li>2016-02-24 Moritz Bunkus <moritz@bunkus.org> <li>* MKVToolNix GUI: new chapter editor feature: added an option to multiply all chapter timecodes by a factor to the "additional modifications" dialog. Implements #1609. </ul> </p> <hr/><br/> <p> <b>Changes for v8.8.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v8_9_0" title="MKVToolNix (Portable) v8.9.0">v8.9.0</a></b> <ul> <li>* MKVToolNix GUI: the default font size adjustment has been deactivated for the time being as it causes problems on high DPI displays. See #1602. <li>* MKVToolNix GUI: bug fix: ampersands (&) in file names were shown as keyboard shortcuts in tab titles in various tools (merge tool, chapter and header editors, job output tool). Fixes #1603. <li> <li>2016-02-20 Moritz Bunkus <moritz@bunkus.org> <li>* MKVToolNix GUI: header editor enhancement: when the user drags & drops files on an open header editor tab the GUI will ask the user what to do with them: either open the files as new header editor tabs or add the files as new attachments to the current tab. The action can also be set as the default. Implements #1585. <li>* MKVToolNix GUI: chapter & header editor enhancement: Matroska files are initially opened in read-only mode and only later re-opened in read/write mode in order to enable reading from write-protected files. Part of the implementation of #1594. <li>* MKVToolNix GUI: chapter & header enhancement: the error messages shown when a Matroska file could not be parsed have been improved to include the most likely reasons. Part of the implementation of #1594. <li>* MKVToolNix GUI: chapter editor enhancement: added a menu entry for removing chapters from an existing Matroska file. Inspired by #1593. <li>* MKVToolNix GUI: chapter editor enhancement: it is now possible to save chapters to Matroska files after having removed all entries (editions and chapter atoms). This effectively removes the chapters from the file. Implements #1593. <li> <li>2016-02-18 Moritz Bunkus <moritz@bunkus.org> <li>* MKVToolNix GUI: job queue enhancement: added keyboard shortcuts for removing all completed jobs and for removing successfully completed jobs. Implements #1599. <li>* MKVToolNix GUI: merge tool enhancement: added icons to the context menu actions in the "attachments" sub-tab. Implements #1596. <li>* MKVToolNix GUI: merge tool enhancement: made the context menu entries in the "attachments" sub-tab clearer. Implements #1597. <li> <li>2016-02-10 Moritz Bunkus <moritz@bunkus.org> <li>* mkvmerge: bug fix: fixed the handling of AVIs with a negative video height (which signals that the rows are arranged top-to-bottom). <li> <li>2016-01-31 Moritz Bunkus <moritz@bunkus.org> <li>* MKVToolNix GUI: job queue bug fix: fixed an invalid memory access in the "edit in corresponding tool and remove from queue" functionality. <li>* MKVToolNix GUI: re-write, merge tool bug fix: the file identification is now based on mkvmerge's JSON output instead of its verbose output. This also fixes the merge tool not showing names of attachments inside Matroska files properly if those names contain spaces (#1583). <li>* MKVToolNix GUI: merge tool bug fix: the "mux this" combo box was disabled if a single attachment was selected. <li>* mkvmerge: bug fix: removed spurious output generated during file identification in the HEVC detection code (e.g. "Error No Error"). <li>* mkvmerge: bug fix: fixed the output of the "playlist_file" and "other_file" properties of the "container" entity in the JSON identification format from a single string to an array of strings. The format version has been bumped to 3 due to this change. <li> <li>2016-01-30 Moritz Bunkus <moritz@bunkus.org> <li>* docs: added a Polish translation of the man pages by Daniel Kluz (see AUTHORS). <li>* MKVToolNix GUI: "run program after XYZ" enhancement: configurations can now be deactivated without having to change them. Implements #1581. <li> <li>2016-01-24 Moritz Bunkus <moritz@bunkus.org> <li>* mkvmerge: bug fix: fixed parsing of AAC in MP4 with a program config element with an empty comment field at the end of the GA specific config. Fixes #1578. <li> <li>2016-01-19 Moritz Bunkus <moritz@bunkus.org> <li>* mkvmerge: enhancement: when reading Matroska files created by HandBrake that contain chapters the existing edition UIDs and chapter UIDs are removed and random ones created. This is necessary as HandBrake assigns 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. Implements an improvement for issues such as #1561. <li>* MKVToolNix GUI: merge tool bug fix: the GUI no longer requires at least one source file to be present before muxing can start in order to allow creation of track-less files. Fixes #1576. <li> <li>2016-01-16 Moritz Bunkus <moritz@bunkus.org> <li>* MKVToolNix GUI: enhancement: the "escape for Windows' cmd.exe" mechanism will only escape arguments that actually need escaping in order to produce easier to read command lines. <li> <li>2016-01-15 Moritz Bunkus <moritz@bunkus.org> <li>* mkvmerge: QuickTime/MP4 reader: fix a division by zero in the index generation for certain old audio codecs that have certain header fields (bytes_per_frame, samples_per_packet) set to 0. <li> <li>2016-01-13 Moritz Bunkus <moritz@bunkus.org> <li>* mkvinfo: bug fix: global elements (EBML void and CRC-32 elements) are now handled correctly if they're located inside the segment info or the chapter translate parents <li> </ul> </p> <hr/><br/> <p> <b>Changes for v8.5.1 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v8_5_2" title="MKVToolNix (Portable) v8.5.2">v8.5.2</a></b> <ul> <li>2015-11-04 Moritz Bunkus <moritz@bunkus.org> <li>* Released v8.5.2. <li> <li>2015-11-03 Moritz Bunkus <moritz@bunkus.org> <li>* MKVToolNix GUI: bug fix: the file/track columns aren't resized to fit their content when expanding/collapsing tree nodes anymore. Such expansion also happened when moving entries with the "move up/down" buttons. Fixes #1492. <li>* mkvmerge: bug fix: fixed the values of the "previous/next segment UID" elements when splitting by parts with segment linking enabled. Fixes #1497. <li>* mkvmerge: bug fix: mkvmerge no longer creates a "next segment UID" field in the last file when splitting and segment linking is active. <li> <li>2015-10-22 Moritz Bunkus <moritz@bunkus.org> <li>* mkvpropedit, MKVToolNix GUI header editor: enhancement: added the "codec delay" track header field as an editable property. <li>* mkvmerge: bug fix: fixed an endless loop when updating track headers caused by the fix for "Re-rendering track headers: data_size != 0 not implemented yet". Fixes #1485. </ul> </p> <hr/><br/> <p> <b>Changes for v8.2.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v8_3_0" title="MKVToolNix (Portable) v8.3.0">v8.3.0</a></b> <ul> <li> * MKVToolNix GUI: chapter editor enhancement: pressing return will cause the next appropriate chapter control to be selected depending on where the focus currently is: from a chapter input to the first chapter name, from a chapter name to the next chapter name and from the last chapter name to the next chapter entry's start time. Implements #1358. </ul> </p> <hr/><br/> <p> <b>Changes for v8.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v8_1_0" title="MKVToolNix (Portable) v8.1.0">v8.1.0</a></b> <ul> <li>* mmg: bug fix: fixed handling of the characters [ and ] in container and track properties. <li>* MKVToolNix GUI: merge tool enhancement: moved the »output filename« controls below the three tabs so they're always visible. Also added an option in the preferences to move them back inside the »output« tab. Implements. </ul> </p> <hr/><br/> <p> <b>Changes for v7.9.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v8_0_0" title="MKVToolNix (Portable) v8.0.0">v8.0.0</a></b> <ul> <li>* MKVToolNix GUI: improved locating the mkvmerge executable on non-Windows systems. Fixes #1246. </ul> </p> <hr/><br/> <p> <b>Changes for v7.8.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_9_0" title="MKVToolNix (Portable) v7.9.0">v7.9.0</a></b> <ul> <li>* build system: configure will now check for Qt by default. If at least v5.2.0 is found then the Qt versions of mkvinfo's GUI and the new mkvtoolnix-gui will be enabled. You can affect this detection with the options --disable-gui (turns off all GUIs; works the same as before), --disable-qt (will compile thewxWidgets GUI for mkvinfo and mmg) and --without-mkvtoolnix-gui (will compile the Qt version of mkvinfo's GUI but no mkvtoolnix-gui). </ul> </p> <hr/><br/> <p> <b>Changes for v7.6.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_7_0" title="MKVToolNix (Portable) v7.7.0">v7.7.0</a></b> <ul> <li>2015-02-08 Moritz Bunkus <moritz@bunkus.org> <li>Released v7.6.0. <li> <li>2015-02-03 Moritz Bunkus <moritz@bunkus.org> <li>all programs: bug fix: Since release 7.0.0 the wrong exit code was used when warnings were finished (0 instead of 1). Fixes #1101. <li> <li>2015-02-02 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: bug fix: Appending chapters with the same chapter UID was dropping all sub-chapters from the one of the two merged chapters. Now the sub-chapters are merged recursively as well. <li>mkvmerge: bug fix: The wrong Codec ID was written when reading PCM tracks from Matroska files in Big Endian byte order. Fixes #1113. <li> <li>2015-01-23 Moritz Bunkus <moritz@bunkus.org> <li>all: new feature: added a Serbian (Latin) translation of the programs by Danko (see AUTHORS). <li> <li>2015-01-17 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: bug fix: If splitting was active and AC3 tracks read from Matroska files were shorter than a split point then the following output file would contain an AC3 packet with the timecode of 00:00:00 somewhere in the middle. Fixes #1104. <li> <li>2015-01-14 Moritz Bunkus <moritz@bunkus.org> <li>mmg: bug fix: If a chapter track from a Matroska file is selected then the »language« drop-down box is disabled. Fixes #1105. <li> <li>2015-01-05 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: bug fix: On Windows the end-of-file-reached status wasn't tracked correctly for certain file operations. This could manifest in e.g. mkvmerge not finding tracks in MPEG transport streams when probing MPLS playlist files. Fixes #1100. <li>mmg: bug fix: When scanning for play lists the window presenting the results listed some properties in an unescaped way (e.g. »\s« instead of spaces). <li>mmg: bug fix: When adding MPLS files mmg was only offering to scan for more playlists if there were at least two additional MPLS files present. This has been fixed to one MPLS file (in addition to the one just added). </ul> </p> <hr/><br/> <p> <b>Changes for v7.5.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_6_0" title="MKVToolNix (Portable) v7.6.0">v7.6.0</a></b> <ul> <li>2015-02-08 Moritz Bunkus <moritz@bunkus.org> <li> <li>Released v7.6.0. <li> <li>2015-02-03 Moritz Bunkus <moritz@bunkus.org> <li> <li>all programs: bug fix: Since release 7.0.0 the wrong exit code was used when warnings were finished (0 instead of 1). Fixes #1101. <li> <li>2015-02-02 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: Appending chapters with the same chapter UID was dropping all sub-chapters from the one of the two merged chapters. Now the sub-chapters are merged recursively as well. <li>mkvmerge: bug fix: The wrong Codec ID was written when reading PCM tracks from Matroska files in Big Endian byte order. Fixes #1113. <li> <li>2015-01-23 Moritz Bunkus <moritz@bunkus.org> <li> <li>all: new feature: added a Serbian (Latin) translation of the programs by Danko (see AUTHORS). <li> <li>2015-01-17 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: If splitting was active and AC3 tracks read from Matroska files were shorter than a split point then the following output file would contain an AC3 packet with the timecode of 00:00:00 somewhere in the middle. Fixes #1104. <li> <li>2015-01-14 Moritz Bunkus <moritz@bunkus.org> <li> <li>mmg: bug fix: If a chapter track from a Matroska file is selected then the »language« drop-down box is disabled. Fixes #1105. <li> <li>2015-01-05 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: On Windows the end-of-file-reached status wasn't tracked correctly for certain file operations. This could manifest in e.g. mkvmerge not finding tracks in MPEG transport streams when probing MPLS playlist files. Fixes #1100. <li>mmg: bug fix: When scanning for play lists the window presenting the results listed some properties in an unescaped way (e.g. »\s« instead of spaces). <li>mmg: bug fix: When adding MPLS files mmg was only offering to scan for more playlists if there were at least two additional MPLS files present. This has been fixed to one MPLS file (in addition to the one just added). </ul> </p> <hr/><br/> <p> <b>Changes for v7.4.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_5_0" title="MKVToolNix (Portable) v7.5.0">v7.5.0</a></b> <ul> <li>2015-01-04 Moritz Bunkus <moritz@bunkus.org> <li> <li>Released v7.5.0. <li> <li>mkvmerge: bug fix: If the target drive is full then a nicer error message is output instead of simply crashing due to an uncaught exception. <li>mkvmerge: bug fix: Fixed reading MPEG transport streams in which all PATs and/or PMTs have CRC errors. Fixes #1100. <li> <li>2015-01-03 Moritz Bunkus <moritz@bunkus.org> <li> <li>all: bug fix: Re-wrote the whole checksum calculation code. This lead to a fix for the Adler32 checksum algorithm that was triggered under certain circumstances. Adler32 is used in mkvinfo's output (e.g. in summary mode or if checksums are activated), in the h.265/HEVC bitstream and TrueAudio (TTA) file headers. <li> <li>2015-01-01 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: fixed handling of HE-AACv2 with object type »parametric stereo«. <li>mkvmerge: new feature: implemented support for MP4 DASH files. Implements #1038. <li> <li>2014-12-31 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: new feature: implemented reading MPEG-H p2/HEVC video tracks from MP4 files. Implements #996. <li> <li>2014-12-30 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvinfo: bug fix: track statistics: the duration (and therefore the estimated bitrate) was wrong for files in which the frame with the maximum timecode wasn't the last frame in the file. Fixes #1092. <li>mkvmerge: new feature: implemented support for AAC in LOAS/LATM multiplex if read from MPEG transport streams or raw LOAS/LATM AAC files. Implements #877 and fixes the underlying issue in #832. <li> <li>2014-12-21 Moritz Bunkus <moritz@bunkus.org> <li> <li>build system: libEBML and libMatroska have been changed to provide pkg-config configuration files. Therefore MKVToolNix' build system has been switched to look for both libraries via pkg-config. <li> <li>2014-12-20 Moritz Bunkus <moritz@bunkus.org> <li> <li>all: bug fix: several fixes have gone into libEBML and libMatroska that prevent illegal memory access (both reading from and writing to unallocated addresses). The bugs #1089 and #1096 have thus been fixed. <li> <li>2014-12-19 Moritz Bunkus <moritz@bunkus.org> <li> <li>build system: libMatroska v1.4.2 is now required as part of a fix for #1096. <li> <li>2014-12-18 Moritz Bunkus <moritz@bunkus.org> <li> <li>build system: libEBML v1.3.1 is now required as a part of a fix for #1089. <li>mkvinfo: bug fix: mkvinfo will abort with a proper error message if the first element found is not an EBML head element. See #1089. <li>all: enhancement: improved exception messages that can occur when reading damaged Matroska files to make it clearer for the user what's happening. See #1089. <li> <li>2014-12-16 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: new feature: Added support for reading h.265/HEVC video tracks from MPEG transport streams. Implements #995. <li>mkvinfo: bug fix: Timecodes output with ms resolution are now rounded to ms instead of simply cut off. Fixes #1093. </ul> </p> <hr/><br/> <p> <b>Changes for v7.3.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_4_0" title="MKVToolNix (Portable) v7.4.0">v7.4.0</a></b> <ul> <li>Released v7.4.0. <li> <li>2014-12-10 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: mkvmerge was sometimes dropping lines from teletext subtitles read from MPEG transport streams. See #773. <li> <li>2014-12-05 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: The PCM packetizer was producing wrong track statistics by disregarding the last packet's duration when reading PCM data from packaged sources (Matroska, MP4 files). Fixes #1075. <li>build system: enhancement: configure will look for a system version of the pugixml library and use that instead of the bundled version if it is found. Fixes #1090. <li>mkvextract: bug fix for chapter & tag extraction: If locale is set to a non-UTF locale (including C or POSIX) then no XML data was output at all even if the XML data contained ASCII characters only. Fixes #1086. This also fixes mkvextract writing two BOMs when extracting tags with the »--redirect-output« option on Windows. <li> <li>2014-11-19 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvinfo: bug fix: summary mode: reported frame types in block groups are now derived from the number of references found and not by the references' values. <li> <li>2014-11-16 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: Fixed muxing open GOPs after I frames in MPEG-1/2 video (patch by Stefan Pöschel). Fixes #1084. <li> <li>2014-11-15 Moritz Bunkus <moritz@bunkus.org> <li> <li>mmg: bug fix: VP9 video tracks are accepted in WebM mode. <li> <li>2014-11-05 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: Cherry-picked several commits from DivX' mkvmerge fork for improved HEVC handling. Fixes #1076. <li> <li>all: new feature: added a Catalan translation of the programs by Antoni Bella Pérez (see AUTHORS). <li> <li>2014-11-04 Moritz Bunkus <moritz@bunkus.org> <li> <li>mkvmerge: bug fix: Fixed the handling of Big Endian PCM tracks read from MP4 files. Fixes #1078. <li> <li>2014-10-22 Moritz Bunkus <moritz@bunkus.org> </ul> </p> <hr/><br/> <p> <b>Changes for v7.2.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_3_0" title="MKVToolNix (Portable) v7.3.0">v7.3.0</a></b> <ul> <li>mkvmerge: new feature: implemented support for reading teletext subtitles from MPEG transport streams. They're converted to SRT-style subtitles (CodecID S_TEXT/UTF8). Implements #773. <li>mkvmerge: bug fix: probing MPEG transport streams with certain types of broken MPEG-2 inside caused mkvmerge to exit with an error message. Such tracks are now ignored instead. <li>mkvmerge, mmg's chapter editor: fixed the default value for the »language« element if it isn't present in a chapter XML file. <li>MKVToolNix GUI: implemented drag & drop in the files pane. <li>mkvinfo (Qt version on Windows): bug fix: the console window is closed if the GUI is launched. <li>mkvmerge: bug fix: Reading tracks from MPEG transport streams resulted in the track being cut off at points with a five minute gap in between frames. It is due to timecode wrap detection introduced in v6.9.0. As it affects subtitles the most the wrap detection has been relaxed for them. <li>MKVToolNix GUI: implemented drag & drop in the track pane. <li>mkvmerge: new feature: added support for PCM in MPEG program streams (.vob – DVDs) and transport streams (.ts, .m2ts – Blu-rays). Implements #763. <li>MKVToolNix GUI: fixed missing command line switch for audio sync/stretch. <li>MKVToolNix GUI: implemented drag & drop in the job queue. <li>MKVToolNix GUI: implemented storing the job queue when the application exits and retrieving it when it starts again. <li>Installer: bug fix: the shortcut for the GUI preview on the desktop is removed upon uninstallation. If the user opts not to have shortcuts on the desktop then no shortcut is created for the GUI preview either. <li>MKVToolNix GUI: fixed clearing the file/track/attachment lists when starting a new config or when loading an existing one. <li>MKVToolNix GUI: implemented setting the output file name automatically in four different modes (don't set at all; place in previous output directory; place in fixed output directory; place in parent directory of first source file) with an option to make them unique by appending a running number. <li>MKVToolNix GUI: implemented setting the file title automatically from added files that already have a title. </ul> </p> <hr/><br/> <p> <b>Changes for v7.1.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_2_0" title="MKVToolNix (Portable) v7.2.0">v7.2.0</a></b> <ul> <li>2014-09-13 Moritz Bunkus <moritz@bunkus.org> <li>Released v7.2.0. <li>MKVToolNix GUI: included a first preview version in the Windows installer and portable releases. <li> <li>2014-09-08 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: bug fix: Fixed calculating AC3 delay from garbage data when reading AC3 from AVIs. This stopped working in release 5.4.0 due to commit 97cc2121. <li> <li>2014-09-06 Moritz Bunkus <moritz@bunkus.org> <li>mkvextract: bug fix: SSA/ASS files with sections after "[Events]" in their CodecPrivate are now handled correctly. Fixes #1057. <li> <li>2014-09-05 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: bug fix: Fixed handling certain edit list types in MP4 files that are used for positive track delays. Fixes #1059. <li> <li>2014-08-09 Moritz Bunkus <moritz@bunkus.org> <li>source: Fixed compilation with Boost 1.56.0 which changed the»indexed« range adaptor in an incompatible way. <li>mkvpropedit, mmg’s header editor: bug fix: when editing files with missing track UID elements such an element will be generated automatically instead of crashing and leaving the file in an unplayable state. Part of a fix for #1050. <li>mkvmerge: bug fix: Reading Matroska files with missing track UID elements will no longer cause mkvmerge to abort with an error. A warning is printed and a new unique track ID generated instead. Part of a fix for #1050. </ul> </p> <hr/><br/> <p> <b>Changes for v7.0.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_1_0" title="MKVToolNix (Portable) v7.1.0">v7.1.0</a></b> <ul> <li>* all: bug fix: Fixed file seeking code for »seek relative to endof file « case. <li>* mmg: bug fix: Selecting the root of the chapter editor tree will disable the language/country inputs properly as changing those fields doesn't make sense for the root. </ul> </p> <hr/><br/> <p> <b>Changes for v6.9.1 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v7_0_0" title="MKVToolNix (Portable) v7.0.0">v7.0.0</a></b> <ul> <li>mkvmerge: enhancement: In addition to the track statistics tags »BPS«, »DURATION«, »NUMBER_OF_BYTES« and »NUMBER_OF_FRAMES« mkvmerge will write two more tags identifying which application wrote the statistics (»_STATISTICS_WRITING_APP«) and when the file in question was written: »_STATISTICS_WRITING_DATE_UTC«. »_STATISTICS_WRITING_APP« will always contain the same string contained in the segment info header element »WritingApp«. »_STATISTICS_WRITING_DATE_UTC« will contain the same timestamp as in the segment info header element »Date«, though »_STATISTICS_WRITING_DATE_UTC« is actually a string representation instead of an integer value. <li>Additionally a tag named »_STATISTICS_TAGS« is written containing the names of the tags that mkvmerge has set automatically. It equals the following currently: »BPS DURATION NUMBER_OF_BYTES NUMBER_OF_FRAMES«. <li>build system: Boost's "date/time" library is now required. <li>mkvmerge: bug fix: If a single subtitle track contains two or more entries at the same timecode then the cue duration and cue relative position elements written were wrong. <li>mkvinfo: bug fix: fixed wrong progress percentage shown during saving the information to text files. Fixes #1016. <li>mkvmerge: new feature: Added a global option for disabling writing the tags with statistics for each track: --disable-track-specific-tags. <li>mkvmerge: new feature: When identifying a Matroska file in verbose identification mode track-specific tags will be output as well. The format is »tag_<tag name in lower case>:<tag value>», e.g. for a tag named »BPS« with the value »224000« the output would be »tag_bps:224000«. Enhancement for #1021. <li>mkvmerge: new feature: mkvmerge will write track-specific tags with statistics (»BPS« for the average number of bits per second, »DURATION« for the duration, »NUMBER_OF_BYTES« and »NUMBER_OF_FRAMES« for the track's size in bytes and its number of frames/packets). Implements #1021. <li>mkvmerge: bug fix: Changed the file type detection order again. The text subtitle formats are now probed after those binary formats that can be detected quickly and unambiguously. This avoids some mis-detection if e.g. Matroska files as ASS text subtitles if they do contain such a track. <li>mmg: enhancement: The chapter editor will only use fast-mode parsing when loading chapters from Matroska files. <li>all: bug fix: fixed invalid memory access in the cleanup procedures which only occurred if the output was redirected with the »--redirect-output« command line parameter. <li>mkvmerge: enhancement: The last chapter entry read from MPLS files is removed if it is at most five seconds long. Patch by Andrew Dvorak (see AUTHORS). <li>mkvmerge: enhancement: added the attachment UID to the verbose identification output of Matroska files. <li>mmg: bug fix: Selecting a subtitle track correctly sets the »character set« drop-down box if no character set was set for this track. Fixes #1008. <li>mmg: enhancement: the subtitle character set cannot be set anymore for subtitle tracks read from Matroska files as mkvmerge ignores that setting for said container anyway (text subs are always encoded in UTF-8 in Matroska). <li>mmg: enhancement: mmg will look for the »mkvmerge« executable in the same directory as the »mmg« executable is located it if the location hasn't been set by the user on all operating systems (before: only on Windows). Improves detection if »mkvmerge« is not in the $PATH. </ul> </p> <hr/><br/> <p> <b>Changes for v6.9.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v6_9_1" title="MKVToolNix (Portable) v6.9.1">v6.9.1</a></b> <ul> <li>fixed a severe bug that wasn’t present in 6.8.0 </ul> </p> <hr/><br/> <p> <b>Changes for v6.7.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v6_8_0" title="MKVToolNix (Portable) v6.8.0">v6.8.0</a></b> <ul> <li>2014-03-02 Moritz Bunkus <moritz@bunkus.org> <li>Released v6.8.0. <li>2014-02-28 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge, mkvextract: new feature: added support for h.265/HEVC by merging the patches from DivX/Rovi Corp. So far HEVC is only supported as elementary streams and read from other Matroska files. <li>2014-02-22 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: enhancement: The deprecated ISO 639-1 code "iw" is now recognized for Hebrew. <li>2014-02-15 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: bug fix: The AC3 packetizer will re-derive the sampling frequency and the number of channels from the bitstream. This way obviously invalid information from the source container like a sampling frequency of 0 Hz will be fixed. <li>2014-02-05 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: enhancements: AVI reader: audio chunks with obvious wrong size information (bigger than 10 MB) will be skipped. <li>2014-02-03 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: bug fix: When reading M2TS files belonging to an MPLS playlist mkvmerge will now only copy packets whose timestamps lie between the »in time« and »out time« restrictions from the playlist's entry corresponding to that M2TS file. Fixes #985. <li>2014-01-22 Moritz Bunkus <moritz@bunkus.org> <li>all: Windows 64bit: fixed return value checks for opening files. Fixes #972. <li>2014-01-21 Moritz Bunkus <moritz@bunkus.org> <li>all: Windows: when redirecting the program's output with cmd.exe (e.g. »mkvinfo file.mkv > info.txt«) the programs will no longer write two line feed characters (\r) per carriage return character (\n). Fixes #970. <li>all: Windows: the default charset for the files created with »--redirect-output« has been changed from the system's local charset to UTF-8. Just like before it can be changed with »--output-charset«. See #970. <li>all: bug fix: Windows: messages written to the console (cmd.exe) are not re-encoded to the local charset and back to UTF-16 before they're handed over to ConsoleWriteW(). This fixes outputting Unicode characters to the console that are not part of the local charset. Fixes #971. <li>2014-01-18 Moritz Bunkus <moritz@bunkus.org> <li>extract: bug fix: using names of non-existing files in »attachments«, »chapters«, »cuesheet« or »tags« mode caused mkvextract to crash instead of emitting a proper error message. Fixes #964. <li>2014-01-17 Moritz Bunkus <moritz@bunkus.org> <li>mmg: bug fix: fixed the check for WebM-compatible track types for Opus. <li>2014-01-12 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: bug fix: fixed muxing Sorenson v3 (SVQ3) video from QuickTime files. <li>2014-01-11 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge, mkvextract, mkvpropedit: enhancement: attachments in Matroska files with a missing FileUID element are not ignored anymore even though they violate the specs. mkvmerge generates a new FileUID instead. <li>2014-01-10 Moritz Bunkus <moritz@bunkus.org> <li>mkvmerge: re-built with the 64bit build for Windows with a newer compiler version in order to fix #957. It was due to a bug in gcc: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56742 <li>mmg: bug fix: mkvmerge's file identification is written to a temporary file with --redirect-output and from there into mmg instead of directly from mkvmerge. This prevents from character re-coding done by wxWidgets 3.0.0 on Windows. Fixes #959. <li>2014-01-09 Moritz Bunkus <moritz@bunkus.org> <li>installer: enhancement: the architecture (32bit vs 64bit) is mentioned in the interface. <li>installer: bug fix: the installation directory for 64bit builds will default to the proper directory (»C:\Program Files« instead of »C:\Program Files (x86)«). Fixes #956. </ul> </p> <hr/><br/> <p> <b>Changes for v6.4.1 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v6_5_0" title="MKVToolNix (Portable) v6.5.0">v6.5.0</a></b> <ul> <li>* mkvmerge: enhancement: filler NALUs will now be removed from framed h.264/AVC tracks (such as the ones read from Matroska/MP4 files) just like they have already been when handling unframed tracks. <li> * mkvextract: new feature: implemented support for extracting VP9 tracks into IVF files. <li> * mkvmerge: new feature: implemented support for VP9 read from IVF and Matroska/WebM files. Implements #899. <li> * mkvextract: enhancement: using the same track/attachment ID multiple times in "tracks", "attachments" or "timecodes_v2" mode will result in an error message instead of one empty file. Implements #914. <li> * mmg: bug fix: With wxWidgets 2.9.x/3.0.x debug message will no longer appear as modal dialogs but only go to the log window. <li> * mkvmerge: bug fix: fixed a crash when reading empty global tag files. <li> * build system: bug fix: fix autodetection of Boost's library path if it is installed in the multiarch directories (e.g. /usr/lib/i386-linux-gnu or /usr/lib/x86_64-linux-gnu). <li> * mmg: bug fix: saved window widths were growing by 1 pixel each time mmg was exited. <li> * documentation: Added a German translation of the man pages <li> * mkvmerge: bug fix: Reading OGM files with chapter entries not encoded in the system's local character set has been fixed. During identification the number of chapter entries is still output by removing any non-ASCII characters from the chapter entries. When muxing an additional warning is output if parsing those chapter entries fails, e.g. due to the format being wrong or due to the charset guessed wrongly. <li> * mkvmerge: bug fix: The "duration" element was calculated wrong if the first element in the file wasn't the one with the smallest timestamp. To be precise, it was too short by the difference between the first timestamp and the smallest one (e.g with video sequences timestamped 80ms, 0ms, 40ms, 120ms... the duration was 80ms too short). </ul> </p> <hr/><br/> <p> <b>Changes for v6.4.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v6_4_1" title="MKVToolNix (Portable) v6.4.1">v6.4.1</a></b> <ul> <li>mkvmerge: bug fix: fixed packet ordering regression introduced in 6.4.0 if --default-duration is used for a track. </ul> </p> <hr/><br/> <p> <b>Changes for v6.3.0-1 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v6_4_0" title="MKVToolNix (Portable) v6.4.0">v6.4.0</a></b> <ul> <li>mkvextract: new feature: Implemented extraction of Opus tracks into OggOpus files. <li>mkvinfo: bug fix: The track information summary enabled with -t/--track-info counted bytes in SimpleBlocks twice. <li>mkvmerge: bug fix: CueRelativePosition was wrong for BlockGroups: it pointed to the Block inside the group instead of the BlockGroup itself. CueRelativePosition elements for SimpleBlock elements are not affected. Fixes #903. <li>mkvmerge: new feature: Implemented final Opus muxing. <li>mmg: bug fix: The "jobs" folder will be created in the same mmg.exe is located in for the portable version. The installed version will still keep the folder where has already been (%APP_DATA%\mkvtoolnix\jobs). <li>mmg: bug fix: Closing mmg's window while it was minimized caused mmg to appear hidden and unmovable when started the next time. <li>mmg: bug fix: Fixed overly long startup time with wxWidgets 2.9.x (especially on Windows) by using alternative methods for initializing certain controls. Makes startup time on par with wxWidgets 2.8. See #893. <li>mkvinfo: new feature: Added support for the new Matroska elements DiscardPadding, CodecDelay and SeekPreRoll. <li>build system: libMatroska 1.4.1 is now required for building. </ul> </p> <hr/><br/> <p> <b>Changes for v6.3.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v6_3_0-1" title="MKVToolNix (Portable) v6.3.0-1">v6.3.0-1</a></b> <ul> <li>Added new builds for Windows (6.3.0-1): same source, but built against a different version of the wxWidgets library in order to circumvent a bug in the library. </ul> </p> <hr/><br/> <p> <b>Changes for v6.2.0 - <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm/v6_3_0" title="MKVToolNix (Portable) v6.3.0">v6.3.0</a></b> <ul> <li>mkvmerge: bug fix: When appending unframed AVC/h.264 tracks and setting the default duration the second and all following source parts will use the same default duration as set for the first part. Fixes #889. <li>all: enhancement (Windows only): mmg will store its settings in a file "mkvtoolnix.ini" in the same folder mmg.exe is located in if MKVToolNix hasn't been installed via its installer. If it has been installed then the settings are stored in the Windows registry. This way MKVToolNix is truly portable. <li>mmg: new feature: mmg's windows and dialogs will remember and restore their positions and sizes. Implements #878. <li>mkvmerge: bug fix: AVC/h.264 output module: fixed writing the wrong values if --fix-bitstream-timing-information is used. Fixes #888. <li>mkvmerge: bug fix: FLV reader: Implemented deriving the video dimensions for FLV1 type tracks from the frame content if they're not given within a script tag. Fixes #880. <li>mkvmerge: bug fix: Fixed handling MPEG transport streams with broken PES packet streams. Fixes #879 and #887. <li>mkvextract: bug fix: mkvextract writes the correct value for the "block alignment" value in the header of WAV files (mostly affects mono PCM audio tracks). Fixes #883. <li>all: new feature: added a Portuguese translation of the programs by Ricardo Perdigão (see AUTHORS). </ul> </p> <hr/><br/> <p> <a href="/software/audio_video/video_editing/mkvtoolnix_portable.cfm"><<Back to software description</a> </p> </div> <div id="rightBar"> <div class="rightBar_box ni_box" style="width:300px" id="ad-software-sidebar-300x250-placeholder"> <div id='div-gpt-ad-1657642387841-0' style='min-width: 300px; min-height: 250px;'> <script> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1657642387841-0'); }); </script> </div> </div> <div class="rightbar_box"> <div id='div-gpt-ad-box-300x600'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.defineSlot('/2323545/afterdawn-v5-fin', [[300, 600]], 'div-gpt-ad-box-300x600').addService(googletag.pubads()); googletag.enableServices(); googletag.display('div-gpt-ad-box-300x600'); }); </script> </div> </div> <div class="rightBar_box"> <h3><a href="https://www.afterdawn.com/software/top_downloads/" class="rightbar_header">Top downloads</a></h3> <ul> <li class="row_1"><a title="Format Factory is a multifunctional media converter." class="windows osLogoSmall" href="https://www.afterdawn.com/software/audio_video/convert_video/format_factory.cfm"><span class="iconContainer"></span>Format Factory</a></li> <li class="row_0"><a title="With ManyCam you can use your webcam with multiple programs simultaneously." class="windows osLogoSmall" href="https://www.afterdawn.com/software/audio_video/webcam_tools/manycam.cfm"><span class="iconContainer"></span>ManyCam</a></li> <li class="row_1"><a title="Media Player Classic is an extremely light-weight media player for Windows. It looks just like the good-old Media Player v6.4, but has lots of nice extra features." class="windows osLogoSmall" href="https://www.afterdawn.com/software/audio_video/media_players/media_player_classic_for_win98_me.cfm"><span class="iconContainer"></span>Media Player Classic for Win98/ME</a></li> <li class="row_0"><a title="The Dude network monitor is a new application by MikroTik which can dramatically improve the way you manage your network environment." class="windows osLogoSmall" href="https://www.afterdawn.com/software/network/network_administration/the_dude.cfm"><span class="iconContainer"></span>The Dude</a></li> <li class="row_1"><a title="The Vegas Pro 9 collection integrates two powerful applications that work seamlessly together to provide an efficient and intuitive environment for video and broadcast professionals." class="windows osLogoSmall" href="https://www.afterdawn.com/software/audio_video/video_editing/vegas_pro_64.cfm"><span class="iconContainer"></span>Sony Vegas Pro (64-bit)</a></li> <li class="row_0"><a title="IObit Unlocker is a utility that can free files locked by a running process, allowing you to delete the file, rename the file or otherwise alter it. " class="windows osLogoSmall" href="https://www.afterdawn.com/software/system_tools/misc_system_tools/iobit_unlocker.cfm"><span class="iconContainer"></span>IObit Unlocker</a></li> <li class="row_1 more_link"><a href="https://www.afterdawn.com/software/top_downloads/">More top downloads</a></li> </ul> </div> <div class="rightBar_box"> <h3><a href="https://www.afterdawn.com/software/latest_updates/" class="rightbar_header">Latest updates</a></h3> <ul> <li class="row_1 more_link"><a href="https://www.afterdawn.com/software/latest_updates/">More latest updates</a></li> </ul> </div> <div class="rightBar_box"> <h3>Help us</h3> <ul> <li class="row_1"><a href="/software/general/submit_software.cfm" class="rightbar_link" rel="nofollow">Submit software</a></li> <li class="row_0"><a href="/software/general/submit_update.cfm" class="rightbar_link" rel="nofollow">Submit software update</a></li> </ul> </div> </div> <script> var monitorAdspaceTimeout="", monitorAdspaceTime=50, monitorAdspaceIframeCount=0, monitorAdspaceIframeMax=20; var monitorAdspace = function() { clearTimeout(monitorAdspaceTimeout); if($("body").hasClass("large")) return; if($("#ad-top-banner-placeholder div").length == 1) { monitorAdspaceTimeout = setTimeout(monitorAdspace,monitorAdspaceTime); } else { if($("#ad-top-banner-placeholder iframe").length > 0 && monitorAdspaceIframeCount++<monitorAdspaceIframeMax) { monitorAdspaceTimeout = setTimeout(monitorAdspace,monitorAdspaceTime); } if($("#ad-top-banner-placeholder").width()>740){ $("body").addClass("large"); // Resize logo if serving a wide ad $(window).resize(); // Trigger ad position update $("#ad-top-banner-placeholder").css({ "margin-right" : Math.floor(($("div.centerSection:first").width()-$("#ad-top-banner-placeholder").width())/2)+"px" }); } } }; monitorAdspaceTimeout = setTimeout(monitorAdspace,monitorAdspaceTime); </script> <div class="divider"></div> </div> <div class="rightSKY" id="ad-right-160x600-placeholder"> <script type='text/javascript'> if(typeof(hideSkyScraper) != "boolean") { tmntag.adTag('div-gpt-ad-tmn-atf-skyscraper'); } </script> </div> <div> <div class="footer"> <div class="footer_bg" style="display: none;"></div> <div class="footer_advertisement"> <center> <div id="ad-bottom-leaderboard-placeholder"> <script type='text/javascript'>tmntag.adTag('div-gpt-ad-tmn-btf-leaderboard');</script> </div> </center> </div> <style> div.footer{ color: white; font-size: 1.1em; } div.footer .copy { clear: both; text-align: center; color: #aaa; padding: 10px; } div.footer .copy a { text-decoration: none; } div.footer img.icon { height: 1.1em; } div.footer .column h3 { margin-top: 35px; } div.footer .column div.move { position: relative; top: -25px; left: 32px; } .goToTop { position: absolute; bottom: 5px; right: 5px; font-size: 1.5em; font-weight: bold; } .goToTop a { text-decoration: none; } </style> <div class="column"> <a class="footerLogo" href="https://www.afterdawn.com/"><img src="https://cdn.afterdawn.fi/v4/topBar/logoDAWNv4.gif" border="0" width="230" height="81" alt="AfterDawn" /></a> <div class="move"> <ul> <li> <a href="https://www.afterdawn.com/general/company.cfm">About us</a> </li> <li> <a href="https://www.afterdawn.com/general/adprices.cfm">Advertising / Media kit</a> </li> <li> <a href="https://www.afterdawn.com/general/feedback.cfm">Feedback</a> </li> <li> <a href="https://www.afterdawn.com/general/legal.cfm">Privacy policy & Terms of Use</a> </li> </ul> </div> </div> <div class="column"> <h3>Sections:</h3> <ul> <li> <a href="https://www.afterdawn.com/news/">Tech News</a> </li> <li> <a href="https://www.afterdawn.com/guides/">Guides and Tutorials</a> </li> <li> <a href="https://www.afterdawn.com/software/">Software Downloads</a> </li> <li> <a href="https://www.afterdawn.com/software/top_downloads/">Top Downloads</a> </li> <li> <a href="https://forums.afterdawn.com/">Forums</a> </li> <li> <a href="https://www.afterdawn.com/glossary/">Glossary</a> </li> </ul> </div> <div class="column"> <h3>Follow us:</h3> <ul> <li> <a href="https://www.facebook.com/pages/AfterDawn/134850391475">Facebook</a> </li> <li> <a href="https://twitter.com/afterdawn">Twitter</a> </li> <li> <a href="https://www.youtube.com/user/afterdawncom">YouTube</a> </li> <li> <a href="https://www.instagram.com/afterdawncom/">Instagram</a> </li> <li> RSS Feeds: <ul> <li> <a href="http://feeds.afterdawn.com/afterdawn">Latest News</a> </li> <li> <a href="https://rss.afterdawn.com/software_updates.xml">Software Updates</a> </li> </ul> </li> </ul> </div> <div class="copy"> © 1999-2024 <a href="https://www.afterdawn.com/">AfterDawn Oy</a>. All rights reserved </div> <div class="goToTop"> <a href="#">Back to Top ⇧</a> </div> <div class="disclaimer oct2011"> <div class="sales">AfterDawn is powered by <a href="https://upcloud.com/signup/?promo=afterdawn" rel="sponsored" target="_blank"><img src="https://cdn.afterdawn.fi/logos/upcloud_logo_horizontal_white_40px.png" width="166" border="0" height="45" alt="Powered by UpCloud" style="vertical-align:middle; top:0px;" loading="lazy;" /></a></div> </div> </div> </div> </div> </div> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js"></script> <script type="text/javascript" src="https://cdn.afterdawn.fi/min/g=adengswjs&1517570638"></script> <!-- Start Quantcast tag --> <script type="text/javascript"> _qoptions={ qacct:"p-11i4zqNdAFVL6" }; </script> <script type="text/javascript" src="https://edge.quantserve.com/quant.js"></script> <noscript> <img src="https://pixel.quantserve.com/pixel/p-11i4zqNdAFVL6.gif" style="display: none;" border="0" height="1" width="1" alt="Quantcast"/> </noscript> <!-- End Quantcast tag --> <div id="fb-root"></div> <script><!--//<![CDATA[ window.fbAsyncInit = function() { FB.init({ appId: '131531713583995', xfbml: true, version: 'v2.3' }); }; (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); //]]>--></script> <script type='text/javascript'> var adNames = adNames || []; // Initialize array if not initialized </script> <script> $('img[src="https://aka-cdn-ns.adtech.de/images/AdTracImage.gif"]').parent().remove(); $(window).resize(function() {$(adNames).placeAd();}); $(window).resize(); $("div.ad-adcode").show(); </script> <!-- Correct fb_xd_fragment Bug Start --> <script> document.getElementsByTagName("html")[0].style.display="block"; </script> <!-- Correct fb_xd_fragment Bug End --> <!-- Page generation including global variables overhead 224ms --> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"errorBeacon":"bam.nr-data.net","licenseKey":"a60c345c66","agent":"","beacon":"bam.nr-data.net","applicationTime":224,"applicationID":"68128913","transactionName":"YVFbMhBSCkBSVkRYWlgbagMQRQhWRxpzd3h6Z1wUFF8BRw==","queueTime":0}</script> <script type='text/javascript'>tmntag.adTag('div-gpt-ad-oop');</script> </body> </html>