Version 63.0.0 "Everything" 2021-11-14
New features and enhancements
* mkvmerge: AC-3 parser: E-AC-3 with BSID values > 10 and ≤ 15 are recognized
now, too.
* mkvmerge: when using language codes for track selection (e.g. `-a und,en`)
all tracks that do not have a language property (due to their container not
providing one, e.g. AVIs) will be treated as if they did have one set to
`und` ("undetermined") as that is the language the track will have in the
Matroska file anyway. Before this change it wasn't possible to match such
tracks via language codes.
* MKVToolNix GUI: only on Windows: when compiled with Qt ≥ 5.14 and < 6 (which
is the case for the officially provided binaries) fractional screen scaling
will be enabled. This means that the GUI will be scaled appropriately if
Windows is set to 125%, 150% or 175% instead of being too small or too
large.
* MKVToolNix GUI: the spinner in the bottom right corner will now be hidden
when no jobs are currently running.
* MKVToolNix GUI: header editor: a new column has been added to the tree view
showing the status of the "track enabled" flag. The information is also
shown on the track overview page on the right.
* MKVToolNix GUI: header editor: users can now reorder tracks by dragging &
dropping.
Bug fixes
* mkvmerge: AVI reader: fixed reading AVI files that contain `vprp` video
properties header chunks; reading aborted too early.
All checksums have been double-checked against existing RMD160 and
SHA512 hashes
The following distfiles could not be fetched (for legal reasons?):
./multimedia/adobe-flash-player/distinfo adobe-flash-player-32.0.0.465/flash_player_npapi_linux.i386.tar.gz
./multimedia/adobe-flash-player/distinfo adobe-flash-player-32.0.0.465/flash_player_npapi_linux.x86_64.tar.gz
./multimedia/libdvdcss/distinfo libdvdcss-1.4.3.tar.bz2
Version 62.0.0 "Apollo" 2021-10-10
New features and enhancements
* all: IETF BCP 47/TFC 5646 language tags: all ISO 639 languages are now
available, even the ones that aren't of types "Constructed", "Living" or
"Special".
* mkvmerge, mkvpropedit: chapters: both programs will now write elements set
to their default value, too (e.g. the legacy language element if it's set to
`eng`). This is done to be more consistent with how MKVToolNix GUI writes
chapters.
* MKVToolNix GUI: multiplexer: when adding new files as attachments the GUI
checks if there are other attachments with the same name. If so, the GUI
would ask whether to skip the affected files or add them anyway. There's now
an option in the preferences to always skip such files, and it's enabled by
default.
* MKVToolNix GUI: chapter editor: removed the support for explicitly setting
the legacy country elements. Instead the legacy country elements are derived
from the region parts of the IETF BCP 47 languages.
Bug fixes
* mkvmerge: fixed a crash when splitting by chapters is enabled but there are
no chapters at all.
* mkvmerge: the error message when trying to split by a chapter number that
doesn't exist contained the wrong number of chapters that actually do
exist.
* mkvmerge: AVC ES parser: fixed mkvmerge aborting due to uncaught exception
when encountering bad SPS data.
* mkvmerge: AVC/H.264 parser: re-added the hack `--engage
all_i_slices_are_key_frames` which was accidentally removed in release v61.
* mkvmerge: AVI reader: fixed a crash trying to allocate too big of a memory
chunk due to an integer overflows in check conditions.
* mkvmerge: HEVC ES parser: fixed another issue with frame type
recognition. Certain frames were marked as B frames/discardable on the
container level even though they could be reference pictures. Now only SLNR
pictures (sub-layer non-reference) are marked that way.
* mkvmerge: HEVC ES reader: improved file content detection for HEVC ES files
with wrong file name extensions (e.g. `.mkv`), which fixes them being
mis-detected as something else, e.g. DTS.
* mkvmerge: HEVC ES parser: "end of sequence" NALUs are kept now, and no
superfluous flushing will be done when one is found. This prevents splitting
NALUs into two different Matroska blocks when they should really be part of
a single one, also causing problems with erroneous timestamps. Mostly
affects DoVi NALUs.
* mkvmerge: Matroska reader, TrueHD: mkvmerge will now probe much more TrueHD
frames trying to find the first sync frame. This fixes track detection in
situations when a TrueHD doesn't start with a sync frame, e.g. when the
source file's the result of splitting between sync frames.
* mkvmerge, MKVToolNix GUI's chapter editor: IETF BCP 47/RFC 5646 language
tags: when reading chapters from MPLS playlist files, the `ChapLanguageIETF`
element will now be set to the configured default chapter language, not just
the legacy `ChapterLanguage` element.
* mkvmerge, mkvpropedit, MKVToolNix GUI's chapter editor: IETF BCP 47 elements
will now always be created before writing chapters unless IETF BCP 47
elements are disabled.
* mkvmerge, mkvpropedit, MKVToolNix GUI's chapter editor: when a chapter
display element contains legacy language & country elements but no IETF BCP
47 elements and IETF BCP 47 elements aren't disabled, the IETF BCP 47
elements created will contain the region from the legacy element.
* mkvmerge, mkvpropedit, MKVToolNix GUI's chapter editor: Legacy country
elements are now created when IETF BCP 47 elements are present & contain a
region code allowed in legacy country elements.
Build system changes
* The `tools` sub-directory is now always built. The corresponding `configure`
option `--with-tools` has been removed. The `install` target still doesn't
install them, though.
Version 61.0.0 "So" 2021-08-30
New features and enhancements
* all: IETF BCP 47/RFC 5646 language tags: implemented support for officially
registered IANA language tag extensions.
* mkvmerge: track selection: when using language tags for selecting which
tracks to keep, mkvmerge will now use component-based language tag matching
instead of comparing them verbatim. This means that only those components
(language, region etc.) the user specified will be required to exist and be
equal. For example, if a file contains three subtitle tracks with languages
`es` (generic Spanish), `es-MX` (Spanish as spoken in Mexico) and `es-ES`
(Spanish as spoken in Spain), the user can use `--stracks es` to match all
three tracks or be more specific with e.g. `--stracks es-MX` which would
only match one track. Similarly inverting the selection with e.g. `--stracks
!es` would get rid of all three tracks, not just the one for the generic
Spanish.
* MKVToolNix GUI: multiplexer: deriving track languages from file names: the
GUI can now detect full BCP 47/RFC 5646 language tags in file names.
* MKVToolNix GUI: multiplexer: deriving track languages from file names: the
default list of boundary characters now includes `-`.
* MKVToolNix GUI: multiplexer: the GUI now defaults to the "lower" process
priority setting for new installations in order to leave more room for other
applications, especially interactive ones. Up to and including v59 the
default was the "normal" process priority. v60 changed that to "lowest",
which turned out to be much slower on Windows for no real gain over
"lower". The setting will be auto-corrected by the GUI if the settings file
were saved last with a version between v60.0.0.0 & v60.0.0.17 & "lowest" &
it is still set to "lowest".
* HEVC dumper development tool: the tool has been renamed to `xvc_dump` and
extended to be able to dump AVC/H.264 bitstreams, too. It now also detects
the type of bitstream framing (ISO 14496-15 vs. ITU-T H.264/H.265 Annex B).
Bug fixes
* all: IETF BCP 47/RFC 5646 language tags: fixed a corner case of wrongfully
allowing scripts/variants not listed in any of the entries in the prefix
list when the prefix list contains prefixes restricting scripts/variants and
a prefix solely with the language at the same time (example: the variant
`ekavsk` with its prefixes `sr`, `sr-Cyrl` and `sr-Latn` where
e.g. `sr-ekavsk` and `sr-Cyrl-ekavsk` should be allowed but not
`sr-Bali-ekavsk`).
* mkvmerge: HEVC/H.265: the frame type of B frames was often wrongfully
signalled as P frames instead, both with `BlockGroup` (missing second
references) and `SimpleBlock` ("discardable" flag not set) elements.
* mkvmerge: SSA/ASS packetizer: the frame numbers will now be re-calculated
when appending SSA/ASS tracks so that frame numbers of appended tracks are
always strictly higher than frame numbers of the track they're appended to.
* mkvmerge, MKVToolNix GUI's chapter editor: BCP 47/RFC 5646 language tags:
when BCP 47 language tags are used with a language code that isn't part of
ISO 639-2, the programs will now write a legacy language element set to
`und` ("undetermined") instead of not writing such an element at all or
writing one with an invalid code.
* mkvmerge, MKVToolNix GUI's chapter editor: BCP 47/RFC 5646 language tags:
the programs will ensure that the legacy and IETF language elements written
will be unique within the scope of the same "chapter display" element.
* mkvinfo, MKVToolNix GUI's info tool: in summary mode the frame type was
reported wrong for `BlockGroup` elements in which the `ReferenceBlock`
elements were located behind the `Block` element.
Build system changes
* all: `std::codecvt_utf8` is now used instead of Boost's
`utf8_codecvt_facet`. The bundled copy the latter in `lib/boost` has
therefore been removed.
Version 60.0.0 "Are We Copies?" 2021-07-31
New features and enhancements
* all: IETF BCP 47/RFC 5646 language tags: added support for language families
from ISO 639-5 that aren't part of 639-2.
* all: IETF BCP 47/RFC 5646 language tags: implemented support for Alpha 2
country codes of the "user-defined" category: `AA`, `QM`–`QZ`, `XA`–`XZ` and
`ZZ`.
* all: IETF BCP 47/RFC 5646 language tags: updated the various lists of valid
subtags from the official specs.
* MKVToolNix GUI: multiplexer: pressing the keyboard shortcut for the track's
"Language" label (Alt+L for English) will now open the language dialog.
* MKVToolNix GUI: multiplexer: added an option in the preferences for turning
off the colored boxes indicating which file each track belongs to.
Bug fixes
* all: IETF BCP 47/RFC 5646 language tags: fixed validating extended language
& variant subtags against their allowed prefixes (e.g. a valid tag with a
country code as in `de-CH-1996` is recognized as valid while two generally
known variants that aren't allowed together as in `de-1901-1996` is
recognized as invalid).
* all: IETF BCP 47/RFC 5646 language tags: when looking up a language for a
two- or three-letter code, the programs will no longer compare that code
with language names as that was unintended, ambiguous (e.g. the code "Ga"
could be interpreted as the 639-2 alpha-2 code for "Irish" or as the name of
the language called "Ga") and only worked with languages whose name was at
most three letters long.
* mkvmerge: HEVC/H.265: appending Matroska files with HEVC tracks might lead
to the loss of the first couple of frames from each of the second and all
following files.
* mkvmerge, mkvextract: HEVC/H.265 parser: fixed the programs aborting when
parsing VPS or SPS NALUs with invalid content due to unhandled
exceptions.
* MKVToolNix GUI: multiplexer: when the option "use legacy MIME types for font
attachments" is enabled, the GUI will now use `application/x-truetype-font`
for font collection files.
* MKVToolNix GUI: multiplexer: fixed escaping the `mkvmerge` argument in the
"Show command-line options" dialog for the "Windows (cmd.exe)" mode.
* MKVToolNix GUI: multiplexer: when adding multiple files at once, the GUI
will sort file names with numbers the way a human would expect it to. For
example, `1.mp4`, `9.aac`, `10.srt`, `11.srt` are now sorted exactly that
order instead of `1.mp4`, `10.srt`, `11.srt`, `9.aac`.
* MKVToolNix GUI: header editor: the header editor will now honor the "use
legacy MIME types when adding font attachments" setting when adding new
attachments.
Version 59.0.0 "Shining Star" 2021-07-10
New features and enhancements
* mkvmerge: WebVTT parser: the parser now follows the specs' rules for parsing
timestamps more closely by being more lenient: it allows arbitrary number of
spaces & tabs at the start of the line & around the arrow; it allows any
number of digits for the hours.
* MKVToolNix GUI: multiplexer: when adding a Blu-ray playlist without scanning
for other playlists the GUI will now look for disc library information & let
the user select which one to use if there's more than one entry.
* MKVToolNix GUI: multiplexer: added an option for sorting files & tracks by
track types when adding them to multiplex settings. The order is: video
first followed by audio, subtitles and other types. Files & tracks can still
be reordered manually later. The option is enabled by default & can be found
in the preferences → "Multiplexer" page → "Adding files" section.
* MKVToolNix GUI: multiplexer: added an option for recognizing file name
sequences such as `movie.001.mp4`, `movie.002.mp4`, `movie.003.mp4` when
adding multiple files at once. If a sequence is detected, the only first
file will be added while the second and following file names will be
appended to the first one. The option is enabled by default & can be found
in the preferences → "Multiplexer" page → "Adding files" section.
* MKVToolNix GUI: multiplexer: added small colored boxes for each file & track
in order to indicate from which file each track is read. The colors used can
be configured in the preferences → "Multiplexer" page → "File & track
colors" section.
Bug fixes
* build system: fixed compilation with fmt v8.
* mkvmerge: SRT subtitle reader: characters that aren't valid according to the
assumed encoding of the file will now be replaced by the Unicode
"Replacement Character" U+FFFD instead of keeping the invalid characters,
potentially violating the Matroska specs.
* mkvmerge: WebVTT parser: the parser now accepts timestamps with hours
larger than 99.
* mkvextract: TTA extraction, only on Windows: fixed removing the temporary
file created during extraction.
* mkvmerge, mkvpropedit, MKVToolNix GUI's multiplexer & header editor: MIME
type detection is now done using Qt instead of the `magic` library. The main
impact is the MIME types of TrueType & OpenType fonts are now detected
correctly.
* mkvmerge, mkvinfo, MKVToolNix GUI's info tool: only on Windows: displaying
dates before 1970-01-01 00:00:00 UTC or after 2038-01-19 03:14:08 UTC was
broken. Note that the header editor was not affected.
* MKVToolNix GUI: only on 64-bit Windows: under certain conditions, the 64-bit
Windows binaries crashed when opening dialog windows. Even though the
underlying bug hasn't been identified, the investigation showed that
building it with newer versions than 10.2.0 of the mingw/gcc cross-compiler
enabled the crashes, while binaries built with 10.2.0 were fine. This
affected v57 and v58 which were built with gcc versions 10.3.0 and 11.1.0
respectively. For the time being I've switched back to building Windows
binaries with gcc 10.2.0.
* MKVToolNix GUI: multiplexer: when adding files to the multiplexer by running
the GUI's executable with file names as command line arguments, the source
directory will be remembered as the "last open directory" again, causing
subsequent uses of the "open file" dialog to start in the same directory.
* MKVToolNix GUI: multiplexer: the "default track flag" column in the track
list was missing its icons. Additionally it contained text even for things
that aren't regular tracks and therefore do not actually have that flag
(e.g. chapters or tags).
* MKVToolNix GUI: multiplexer: the default for the dialog asking the user what
to do with dragged & dropped files if they've never seen the dialog is back
to adding the files to the current multiplex settings instead of "add as
additional parts" which was an unintentional default.
* MKVToolNix GUI: multiplexer: the "show command line" dialog will now always
use backward slashes for the "Windows (cmd.exe)" mode and forward slashes
for the "Linux/Unix shells" mode, regardless of the operating system it's
currently running on.
Build system changes
* The Qt library is now required for building all applications, even the
command-line ones, as they use Qt's MIME type detection capabilities. In
turn this means that you cannot disable the Qt usage anymore; either Qt5 or
Qt 6 is required.
You can still chose not to build MKVToolNix GUI, though. A new option has
been added to `configure` for this purpose: `--disable-gui`.
* The `gmp` library is now required.
* The `magic` library is not used anymore.
* The `PCRE2` & `JPCRE2` libraries are not used anymore. The bundled version
of `JPCRE2` was removed.
* Boost's "rational" library is not used anymore.
* `configure`: the option `--enable-appimage` has been removed. The location
of the relevant directories within an AppImage is now detected
automatically.
* The bundled `fmt` library was updated to v8.0.0.
Version 58.0.0 "Supper's Ready" 2021-06-13
New features and enhancements
* mkvmerge, MKVToolNix GUI's multiplexer: the handling of the "default track"
flag has been changed to match the recent changes to the Matroska
specifications. The new semantics are that if it is set, it is supposed to
signal to the player that this track is eligible for being played by
default, potentially taking other factors such as user preferences regarding
languages into account.
This implies that more than one track of each type can have this flag
set. For example, a Blu-ray disc with three audio tracks might have
the main audio in both English and Japanese, whereas the third audio
track contains the director's comments. In such a case the first two
tracks should have the "default track" flag set, the third one
shouldn't.
Earlier `mkvmerge` was enforcing that only one track of each type could have
the flag set. This restriction has been removed, both in `mkvmerge` and in
the GUI's multiplexer.
`mkvpropedit` and the GUI's header editor are unaffected as they've always
allowed to set the flag on as many tracks as the user wanted.
* mkvmerge: AVC/H.264 & HEVC/H.265 identification: added the stream's pixel
dimensions (AVC only; were present for HEVC already) & default
duration.
* mkvmerge, mkvextract: HEVC/H.265: added support for reading single-layer
Dolby Vision from Annex B type bitstreams (elementary streams, MPEG
transport streams). Patch by quietvoid.
* mkvinfo: the option `-X`/`--full-hexdump` now affects all binary elements,
not just the frame data in `SimpleBlock` and `BlockGroup` elements.
* MKVToolNix GUI: multiplexer: the "delay" and "sync" options can now be used
for chapters in source files, too.
* MKVToolNix GUI: when moving list entries up & down with the optional buttons
or the keyboard shortcuts (instead of using drag & drop), the GUI ensures
that the top-most selected entry remains visible after the move.
* MKVToolNix GUI: added an option in the preference to use legacy MIME types
for font attachments instead of the current standard ones
(e.g. 'application/x-truetype-font' instead of 'font/sfnt' and 'font/ttf').
Bug fixes
* build system: fixed filtering out optimization options when compiling the
file `iso639_language_list.cpp` (before only numeric optimization levels
were filtered out and only if it wasn't the last option in the list of
flags).
* build system: when libmagic was detected via `pkg-config`, MKVToolNix was
actually compiled without support for libmagic due to a preprocessor symbol
not being defined.
* mkvmerge: MP4 reader: fixed an issue with timestamps overflowing when the
file's or the track's time scale is large.
* mkvmerge, mkvextract: fixed key frame handling for `BlockGroup` elements
with a forward reference but no backward references. Patches by Tom Yan.
* mkvmerge, mkvpropedit, MKVToolNix GUI's chapter editor: the programs will no
longer omit writing mandatory elements set to their default value if other
elements of the same type are present in the same master. This affects
mostly the "chapter language" element which may occur multiple times within
the same "chapter display" master. If it does occur multiple times and one
of them is set to "English" (which is that element's default value), that
element will now be written, too.
* mkvmerge, mkvpropedit, MKVToolNix GUI's chapter editor: when parsing chapter
files IETF & legacy language elements as well as legacy country elements
will now be properly generated depending on which exist already, especially
when there's more than one language and/or country element in a "chapter
display" element.
* mkvmerge, mkvpropedit, MKVToolNix GUI's chapter editor: fixed reading
OGM-style chapter files with timestamps that don't have exactly three
decimal places. Any number of decimal places between one and nine is now
supported for nanosecond precision.
* MKVToolNix GUI: chapter editor: added/fixed support for "chapter display"
elements with multiple languages or countries.
Build system changes
* Qt 6: added support for building with Qt 6. `configure` will look for Qt 6
first and only continue looking for Qt 5 if Qt 6 isn't found or disabled via
`--disable-qt6`.
Qt 6 detection works by first looking for the `qmake6` binary. Its location
can be specified with the `--with-qmake6=…` option.
All other Qt 6 related facts (such as compiler & linker flags or the
position of the other required tools such as `lconvert`, `moc`, `rcc` and
`uic`) will be derived from the output generated by `qmake6`.
Note that at this point Qt 6 is not yet supported for the cross-compilation
build to Windows, nor is a static Qt 6 build supported yet.
Note that the command line options `--enable-static-qt`,
`--with-qt-pkg-config-modules` and `--without-qt-pkg-config` only apply to
the Qt 5 and have no effect on Qt 6.
* Qt 5: the options for specifying the position of the tools (`--with-moc=…`,
`--with-rcc=…` and `--with-uic=…`) have been removed. Their position will
now be derived from the output generated by `qmake`.
* `configure`: completely disabling the GUI now requires passing both
`--disable-qt6` and `--disable-qt` options.
* Boost's multi-precision library is now required.
* Boost v1.66 or newer is now required.
Other changes
* The Windows build is now using an updated version of the
`file`/`magic` library for MIME type detection of attachments. This
affects fonts whose MIME types will now be the current standard MIME
types (e.g. `font/sfnt` or `font/ttf` for TrueType fonts). As this
might pose problematic with older players that only support the
legacy MIME type (e.g. `application/x-truetype-font`), a new option
was added in the GUI's preferences to use the legacy MIME types
instead of the current standard ones. This is off by default.
Builds for other operating systems have already been using newer
versions of the `file`/`magic` library for a long time.
Version 57.0.0 "Till The End" 2021-05-22
New features and enhancements
* mkvmerge: MP4 reader: added support for reading Dolby Vision from MP4 files
(FourCCs `dvh1` and `dvhe`; configuration records `dvcC`, `dvvC` and `hvcE`
will be converted into block addition mappings).
* mkvmerge: SRT subtitles: mkvmerge now accepts empty text files with the
extension `.srt` as SRT subtitle files, enabling the creation of empty SRT
tracks.
* mkvmerge, mkvextract: HEVC/H.265: access unit delimiter NALUs will no longer
be discarded, neither during muxing nor during extraction.
* MKVToolNix GUI: preferences: switched the order & wording of controls in the
"enabling items" panel to make it clearer that certain controls define
exceptions.
Bug fixes
* mkvmerge: HEVC/H.265 parser: several NALU types, notably the Dolby
Vision-specific NALUs ("unspecified 62" and "unspecified 63") and suffix SEI
NALUs, are now stored with the frame they belong to instead of with the next
frame.
* mkvmerge: HEVC/H.265 packetizer: fixed setting the track's default duration
when reading HEVC/H.265 from Matroska files that don't have a default
duration set.
* mkvmerge: HEVC/H.265 packetizer: fixed the calculation of the duration of
frames so that `SimpleBlock` elements can be used again instead of
`BlockGroups` with `BlockDuration` elements.
* mkvmerge, mkvextract: HEVC/H.265 parser: fixed issues with ordering &
duplication of certain NALUs (parameter set & prefix SEI NALUs).
* MKVToolNix GUI: multiplexer: when dragging & dropping files to the
multiplexer, the source directory will be remembered as the "last open
directory" again, causing subsequent uses of the "open file" dialog to start
in the same directory.
* mkvinfo: fixed the position of frames in block groups containing "block
duration" elements in summary mode (e.g. for subtitle tracks).
Build system changes
* `configure` will now try to detect `libmagic` via `pkg-config` and fall back
to including & linking directly if it cannot be found via `pkg-config`.
Version 56.1.0 "My Friend" 2021-04-09
New features and enhancements
* mkvmerge: AAC: added support for LOAS/LATM files with channel configuration
indexes 9–21 (e.g. channel count 22.2 for index 13) according to Rec. ITU-R
BS.1196-7 & ISO/IEC 23008-3:2019.
Bug fixes
* mkvmerge: HEVC/H.265 parser: fixed invalid memory access that could happen
when reading certain types of HEVC data (e.g. with changing parameter sets
mid-stream) from certain containers (e.g. Matroska). This bug was introduced
in release 56.0.0.
* mkvextract: AAC: mkvextract will now abort with an useful error message when
the user tries to extract a track whose 'audio-specific config' element in
`CodecPrivate` signals a number of channels of 7 or greater than 8 as that
isn't supported by the ADTS format.
Build system changes
* configure: the `--enable-ubsan` option hasn't actually enabled anything
since release 39.0.0.
Version 56.0.0 "Strasbourg / St. Denis" 2021-04-05
New features and enhancements
* mkvmerge, mkvpropedit: tags: the programs will no longer write tag elements
that are mandatory and set to their default value (e.g. "tag language" set
to `und` = undetermined).
* mkvmerge, mkvpropedit, MKVToolNix GUI chapter editor: chapters: the programs
will no longer write chapter elements that are mandatory and set to their
default value (e.g. "chapter language" set to `eng` = English or "Chapter
flag enabled" = 1).
* mkvextract: chapters: mkvextract will no longer add a `ChapterLanguage`
element set to `eng` to the generated XML content if the source file doesn't
contain such an element.
* MKVToolNix GUI: multiplexer: when using the "tab widget below the files &
tracks" layout option for the track properties the elements in the "general
options" tab will use six rows à four columns instead of twelve rows à two
columns, greatly reducing the required height.
Bug fixes
* mkvmerge: AAC reader: fixed mkvmerge aborting to read AAC files bigger than
2 GB with a message about not being able to allocate memory.
* mkvmerge: chapters: `ChapLanguageIETF` elements were still created when the
option `--disable-language-ietf` was given after an option leading to the
creation of chapters. Now the position doesn't matter anymore.
* mkvmerge: chapters: when the option `--disable-language-ietf` is used,
`ChapLanguageIETF` elements won't be written even when sources are read
(Matroska files or XML chapters files) that do contain those elements.
* mkvmerge: tags: when the option `--disable-language-ietf` is used,
`TagLanguageIETF` elements won't be written.
* mkvmerge: tags: mkvmerge will no longer write language elements for the
track statistics tags it creates, making the effective language
"undetermined" due to `und` being the default value for the legacy tag
language element.
* mkvmerge: tags: the XML tag parser will now validate all `<Simple>` children
of `<Tag>` elements, not just the first for each `<Tag>`.
* mkvmerge: tags: the XML tag parser now uses the spec-compliant `und`
("undetermined") as the default language for `<Simple>` tags instead of
`eng`.
* mkvmerge, mkvpropedit: tags: mkvmerge will no longer set the "target type"
for track statistics tags (earlier it used `MOVIE`). The "target type value"
will still be set to `50`.
* mkvmerge, mkvextract: HEVC/H.265: both programs will now normalize the
placement of VPS, SPS and PPS NALUs. Each key frame is prefixed with exactly
one copy of the currently active parameter sets. This fixes certain classes
of bugs related to splitting/appending.
* mkvinfo: when compiled with newer versions of the `fmt` library, certain
numbers were not output correctly (e.g. a track's audio sampling frequency
of 48000 might be output as 48).
* MKVToolNix GUI: multiplexer: deriving the track language from the file name
will match languages case insensitively again (like versions prior to
v55).
* MKVToolNix GUI: multiplexer: under certain circumstances keyboard shortcuts
such as `Ctrl+W` for closing the active tab or `Ctrl+R` for starting to
multiplex ceased to work until the user did certain other things (such as
switching to a different tool & back to the multiplexer or opening the
multiplexer menu). This started with v54.
* MKVToolNix GUI: chapter editor: the editor will no longer create empty
`ChapterCountry` elements when adding a chapter name with no default country
selected in the preferences.
Build system changes
* The bundled `fmt` library was updated to v7.1.3.
Version 55.0.0 "Waiting For Space"
Bug fixes
* all programs, only on Windows: fixed checking existence of & creating
directories with UNC paths such as `\\server\share\folder\file.mkv`.
* all programs, only on Windows: implemented several workarounds for bugs in
`std::filesystem` wrt. UNC paths. The effect of those bugs was that Blu-rays
and DVDs couldn't be added from UNC paths.
* mkvmerge, only on Windows: fixed non-ASCII characters getting mangled in the
destination file name when splitting is active.
* MKVToolNix GUI, only on Windows: fixed the GUI hanging when trying to browse
for files on drives that don't actually exist.
* MKVToolNix GUI, only on Windows: the GUI did not remember UNC paths as the
"most recently used source directory" properly.
* MKVToolNix GUI: only on Windows: when dragging & dropping files from other
applications to MKVToolNix GUI the GUI will force the drop action to be a
copy action, no matter which keys were pressed by the users. This prevents
Windows Explorer from deleting the dragged file when the user presses shift
while dropping the file onto MKVToolNix GUI.
* MKVToolNix GUI, only on Windows: when using the file dialog for selecting a
file name to save to (e.g. when browsing for the destination file name in
the multiplexer or saving an attachment in the header editor) non-ASCII
characters in the default file name were mangled.
* MKVToolNix GUI: multiplexer: the user can now configure what to do when
using the "Add source files" button independently of the setting for what
happens when files are dragged & dropped onto the GUI. The same options are
available, but they're distinct settings, allowing for different use
cases.
* MKVToolNix GUI: multiplexer: deriving the track language from file names
doesn't use one big regular expression of all enabled languages
anymore. Instead, the file name is split into parts on a list of characters
(such as `.` or `(` and `)`; configurable in the preferences). This prevents
the regular expression becoming too big for the regular expression library
to handle when many languages are enabled.
* MKVToolNix GUI: preferences: the language lists for "deriving track
languages" and "enabling items by language" always included all the ISO
639-3 languages, even if those weren't enabled in the "often-used languages"
pane.
Other changes
* mkvmerge, MKVToolNix GUI multiplexer: the functionality for changing the
length of the NALU "size" field for AVC/H.264 and HEVC/H.265 tracks has been
removed. The corresponding command-line option will continue to be
recognized by mkvmerge as not to break existing third-party applications,
but it won't actually do anything.
Version 54.0.0 "F Maj Pixie"
New features and enhancements
* mkvmerge: added support for using ISO 639-3 language codes in IETF BF47
language tags.
* mkvmerge: AC-3 parser: added support for byte-swapped AC-3 data.
* mkvmerge: Matroska reader: for audio tracks that have the bit depth track
header set mkvmerge will now keep that header even for codecs that don't
require it for decoding.
* mkvmerge: MPEG transport stream reader, PCM audio tracks: mkvmerge will now
re-order the channels for 5.1, 7.0 and 7.1 channel tracks from the Blu-ray
layout to the WAVEFORMATEXTENSIBLE layout expected in Matroska.
* mkvmerge, mkvinfo, mkvpropedit, MKVToolNix GUI: added support for the
following new track header elements: "hearing impaired" flag, "visual
impaired" flag, "text descriptions" flag, "original" flag, "commentary"
flag.
* MKVToolNix GUI: added support for using ISO 639-3 language codes in IETF
BF47 language tags. As there are several thousand of them, they're
deactivated by default and must be activated in the preferences ("GUI" →
"Often used selections" → "Languages").
* MKVToolNix GUI: multiplexer: when adding Blu-rays the user can select
multiple playlists to add simultaneously in the "select playlist to add"
dialog.
* MKVToolNix GUI: multiplexer: the file name extensions "eb3" and "ec3" were
added for Dolby Digital Plus & "mpl" for Dolby TrueHD in the file
dialogs.
* MKVToolNix GUI: multiplexer: when adding multiple files the dialog asking
the user what to do with them has gained a new checkbox. If enabled, all
files containing at least one video track will always be placed in newly
created multiplex setting.
* MKVToolNix GUI: multiplexer: added a menu entry in the "Multiplexer" for
adding all files that are currently in the clipboard.
Bug fixes
* all: Windows: fixed compatibility with gettext 0.21 and newer on mingw.
* all: Windows: fixed several of the programs having problems with certain
Unicode characters (primarily emojis) in file names (e.g. mkvextract
wrongfully complaining about an "invalid mode" or the GUI not being able to
find parts of Blu-ray file structures).
* mkvextract: AAC: fixed wrong channel mask field in the ADTS headers for 7.1
channel layouts.
* mkvextract: h.265/HEVC extraction: if the first frame starts with the
parameter sets (SPS, PPS & VPS), the ones from CodecPrivate aren't written
and the ones from the first frame are kept.
* mkvmerge: fixed the calculation of chapter timestamps read from NTSC
DVDs.
* MKVToolNix GUI: IETF BCP 47 language widget: the language combo box will now
always contain the language code the user enters in the free-form field,
even if it isn't in the list of often-used languages the user configured in
the preferences.
* MKVToolNix GUI: multiplexer: when browsing for the destination file name the
default directory is now chosen according to the preferences regarding how
the destination file name should be formed. For example, if the policy is
set to "fixed output directory" then that output directory will be the one
initially set when the directory selection dialog is opened.
* MKVToolNix GUI: multiplexer: fixed the removal of appended source files if
the "delete source files" end-of-job action is enabled.
* MKVToolNix GUI: chapter editor: when importing chapters from DVDs the IETF
BCP 47 language elements will be set, too, not just the legacy language
elements.
Build system changes
* libEBML v1.4.2 and libMatroska v1.6.3 are now required. The optional,
bundled copies of both libraries have been updated to those versions. This
bump in requirements fixes several heap overflow bugs in libEBML.
* MKVToolNix is now using the C++17 library feature "file system library"
instead of Boost's "file system" and "system" libraries. For the GNU
Compiler Collection (gcc) libstdc++ this means v8 or newer is required; for
clang's libc++ it means v7 or newer. For macOS this means that provided disk
image will only run on 10.15 "Catalina" or newer.
Version 53.0.0 "Fool's Gold"
New features and enhancements
* mkvmerge: AVI reader: added support for reading the video aspect ratio from
the video properties header (`vprp` chunk) if present and setting the
display dimensions accordingly.
* mkvmerge: MP4 reader: for h.264/AVC tracks that don't have an
`AVCConfigurationBox` (`avcC` atom) in their sample description (`stsd`)
atom or whose `avcC` atom contains no content `mkvmerge` will now re-derive
the `AVCConfigurationBox` from the bitstream.
* mkvextract: mkvextract will now check if any of the destination file names
is the same as the source file name and abort with an error if that's the
case.
* MKVToolNix GUI: when querying the user for a file name for saving things
(e.g. multiplexer settings or an attachment in the header editor), the
automatically suggested file name will now be based on the
situation-specific file names (e.g. the destination file name for
multiplexer settings or the attachment's name when saving an attachment in
the header editor) instead of the directory's name.
* MKVToolNix GUI: multiplexer: when deriving track languages from file names
the GUI will now select the right-most match instead of the left-most
one. For example, "La.vie.en.rose.(fr).srt" will now be detected as French
(fr) instead of English (en).
* MKVToolNix GUI: preferences: the items in the "pre-defined …" lists can now
be renamed by double-clicking with the mouse or pressing the F2 key.
* Windows installer: the `bluray_dump` command-line utility will be installed
into the `tools` sub-directory. `bluray_dump` can read & dump certain file
types used on Blu-rays: `.mpls` playlists, `.clpi` clip information
databases, `.bdmv` index files, `bdmt_….xml` disc library databases and
`tnmt_….xml` track & chapter name databases.
Bug fixes
* mkvmerge: stretching chapter timestamps with `--chapter-sync` now works
correctly with floating point values including fractions of floating point
numbers (e.g. `12.3/45.67`). The tooltips in the GUI have been adjusted
accordingly.
* mkvmerge: MPEG 1/2 video handling: the "default duration" header field was
often half the value it actually should be, resulting in all video frames
having an explicit block duration with the correct value. This has been
fixed with a patch by Tom Yan.
* mkvmerge: MPEG 1/2 video handling: the data stored in `Codec private` and
`Codec state` doesn't contain extensions other than sequence & sequence
display extensions anymore. Fix by Tom Yan.
* mkvmerge: tag handling: when remuxing a Matroska file with the
`--no-track-tags`, existing `SOURCE_ID` track tags are now skipped, too.
* MKVToolNix GUI: multiplexer: the drop-down boxes with pre-defined track
names now follow the order set in the preferences instead of sorting the
entries alphabetically.
Version 52.0.0 "Secret For The Mad"
New features and enhancements
* MKVToolNix GUI: job queue: the maximum number of jobs to run concurrently
can now be increased in the preferences. The default remains
at 1.
* MKVToolNix GUI: the GUI will now add a context-specific default extension to
file names selected for saving on platforms that don't add one itself
(e.g. GNOME). For example, when saving multiplexer settings the extension
`.mtxcfg` will be added.
* MKVToolNix GUI: added an option to the preferences for the window to stay on
top of other windows.
Bug fixes
* mkvextract: h.265/HEVC extraction: the code for skipping extraction of
prefix SEI NALUs in the first frame was skipping two bytes too few,
resulting in broken processing of all following bytes. Patch by Mike Chen.
* libEBML: the optional, bundled version of libEBML was updated to v1.4.1.
Build system changes
* libEBML v1.4.1 is now required due to a bug in libEBML that caused pointers
to just-freed memory being returned to the caller under certain invalid data
constellations, causing use-after-free errors in all of MKVToolNix's
programs.
Version 51.0.0 "I Wish" 2020-10-04
New features and enhancements
* mkvmerge, mkvpropedit, MKVToolNix GUI: IETF BCP 47 language tags: added
missing support for UN M.49 regions for which there are no corresponding ISO
3166 alpha codes. This enables language tags such as `es-419` = Spanish in
Latin America and the Caribbean.
* MKVToolNix GUI: IETF BCP 47 language tags: the text in the widget displaying
the current language & the corresponding edit button is now displayed like a
link (depending on the theme: different color & underlined), making it
clearer that not just the edit button can be clicked but the text, too.
Bug fixes
* mkvmerge: AV1 parser: fixed mkvmerge crashing after uncaught exceptions due
to certain data conditions. Found by fuzzying.
* mkvmerge: AV1 packetizer: the duration of frames wasn't set properly. When
appending AV1 IVF or OBU files this meant that the last frame of the Nth
file and the first frame of file N+1 had the same timestamp.
* mkvmerge: DTS reader: fixed handling of buffers with an odd length when
byte-swapped DTS is detected so that mkvmerge doesn't abort with a failed
assertion. Found by fuzzying.
* mkvmerge: h.264/AVC and h.265/HEVC elementary stream readers: mkvmerge will
no longer claim to recognize data that looks like AVC or HEVC but with
invalid video width/height values as that lead to failed assertions in
libEBML later. Found by fuzzying.
* mkvmerge: h.265/HEVC parser: fixed mkvmerge aborting after uncaught
exceptions due to certain data constellations found by fuzzying.
* mkvmerge: IVF reader: fixed mkvmerge crashing with a "division by zero"
error due to certain data conditions. Found by fuzzying.
* mkvmerge: fixed mkvmerge aborting with a "division by zero" error due to the
timestamp scaling factor being 0 after handling certain data constellations
found by fuzzying.
* mkvmerge: track statistics: fixed a "division by zero" error when the
content's shorter than 1ms. Found by fuzzying.
* mkvmerge, mkvinfo, mkvextract, mkvpropedit: Matroska access class: fixed an
invalid memory access under certain data conditions. Found by fuzzying.
* MKVToolNix GIU: IETF BCP 47/RFC 5646 language tags: the GUI will no longer
open the language dialog when clicking on a disabled language display
widget.
* MKVToolNix GUI: IETF BCP 47 language tags: the "variants" combo-boxes were
not populated even when the language tag was valid and contained at a
variant.
* MKVToolNix GUI: IETF BCP 47 language tags: when no language is selected, at
least one of the other components (extended subtags, region, or variants)
has something selected and "private use" is not empty, the GUI would claim
this to be a valid tag, which it isn't.
* MKVToolNix GUI: multiplexer: when the tracks/chapters/tags selection changes
from "at least one entry selected" to "no entry selected", the input
controls will be reset to their default state and not just disabled.
Build system changes
* `configure` now checks for the presence of the a system-wide installed copy
of the JPCRE2 C++ wrapper library for the PCRE2 library and uses that if
it's new enough (at least v10.32.1). If not, the bundled version will be
used as a fallback.
Version 50.0.0 "Awakenings"
New feature: IETF BCP 47 language tags
* I've written up a [nice FAQ
entry](https://gitlab.com/mbunkus/mkvtoolnix/-/wikis/Languages-in-Matroska-and-MKVToolNix)
about the switch to using IETF BCP 47 language tags, how they interact with
legacy language elements, how the programs actually behave and how to
disable their use if necessary.
* mkvmerge: IETF BCP 47/RFC 5646 language tags: mkvmerge will now accept full
BCP 47 language tags for all options taking a language. mkvmerge will always
write "LanguageIETF" track header elements. If the language tag contains a
valid ISO 639-2 language code it will also set the legacy "Language" track
header element to the included ISO 639-2 code.
* mkvmerge: IETF BCP 47/RFC 5646 language tags: if present the "LanguageIETF"
track header element will be reported as the `language_ietf` property in
JSON identification mode.
* mkvmerge: IETF BCP 47/RFC 5646 language tags in chapters: mkvmerge will now
write "ChapLanguageIETF" elements when creating chapter atoms, either when
reading the simple chapter format or when generating chapters due to the
`--generate-chapters` command line option.
* mkvmerge: IETF BCP 47/RFC 5646 language tags in tags: mkvmerge will now
write "TagLanguageIETF" elements when creating "simple tag" elements, either
when reading tag XML files or when generating them.
* mkvmerge: IETF BCP 47/RFC 5646 language tags: added an option
`--disable-language-ietf` that causes mkvmerge to only write the legacy
language elements.
* mkvmerge, mkvpropedit, MKVToolNix GUI's chapter editor: IETF BCP 47/RFC 5646
language tags in chapters: when reading XML chapter files the programs will
now add "ChapLanguageIETF" elements for atoms that don't contain them. The
values are derived from existing "ChapterLanguage" elements.
* mkvpropedit: IETF BCP 47/RFC 5646 language tags: setting/deleting the track
language now acts on both the old language element as well as the
"LanguageIETF" track header element.
* mkvpropedit: IETF BCP 47/RFC 5646 language tags: added an option
`--disable-language-ietf` that causes mkvpropedit to apply changes to the
`language` track header property only to the legacy language track header
element.
* mkvinfo: IETF BCP 47/RFC 5646 language tags: added support for the
"LanguageIETF" track header element.
* MKVToolNix GUI: multiplexer: added full support for IETF BCP 47/RFC 5646
language tags for both track and chapter languages.
* MKVToolNix GUI: chapter: added full support for IETF BCP 47/RFC 5646
language tags for chapter languages.
* MKVToolNix GUI: header editor: added full support for IETF BCP 47/RFC 5646
language tags for track header languages. The header editor allows editing
of the legacy language elements and the IETF BCP 47 language elements
independent of each other.
Other new features and enhancements
* mkvmerge: the chapter generation mode `when-appending` now also works with
the splitting modes `parts:` & `parts-frames:` when using the `…,+…` syntax
for appending other sections of the source file to the same destination
file.
* MKVToolNix GUI: multiplexer: the file selection dialogs now include the
extension `.dtsma` for DTS files.
* mkvmerge: MP4 reader: sped up parsing MP4 DASH files with a lot of segments
(`trun` atoms) quite a bit.
* The PCRE2 regular expression library is now used instead of `std::regex` for
big performance improvements in all places where regular expressions are
used for parsing big chunks of text, e.g. in the subtitle parsers.
* all programs: Windows: all programs now support long file names on Windows
10 release 1604 if they're turned on in the registry.
Bug fixes
* MKVToolNix GUI: preferences: under certain conditions changing the selected
entry in the page tree on the left did not cause the page shown on the right
to be updated.
* mkvmerge: splitting text by a fixed string (e.g. `,`) is now done by using
`std::string.find()` instead of using a regular-expression-based text
splitting function, greatly improving its performance.
* mkvmerge: mkvmerge will now read-buffer file I/O when probing text file
formats which increases its speed significantly on Windows.
* mkvmerge: MP4 reader: fixed handling of `tkhd` atoms of version 1.
Build system changes
* The PCRE2 library (the 8-bit variant) is now required.
Version 49.0.0 "Sick Of Losing Soulmates" 2020-08-02
New features and enhancements
* mkvmerge: added support for copying the new track header elements
`BlockAddIDName`, `BlockAddIDType`, `BlockAddIDValue` and
`BlockAddIDExtraData` from Matroska files if they exist.
* mkvinfo: added support for the new track header elements
`BlockAdditionMapping`, `BlockAddIDName`, BlockAddIDType`, `BlockAddIDValue`
and `BlockAddIDExtraData`.
* MKVToolNix GUI: multiplexer: the list of recent directories can now be
edited in the preferences → "Multiplexer" → "Destination file
name".
* 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).
* mkvmerge: SRT reader: empty lines inside entries were doubled.
* mkvmerge: subtitles: when calculating the rounded duration of each entry the
error from rounding the corresponding timestamp will be taken into
account.
* mkvextract: SSA/ASS extraction: mkvextract is no longer inserting empty
lines before the `Dialogue:` lines.
* mkvextract: USF subtitles: start & end timestamps were too high by a factor
of 1.000.000.
* MKVToolNix: info tool: when saving to a text file the checkbox "Save as
default for saving output to text files" did nothing.
* 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.
* configure: fixed detection of QtDBus.
Build system changes
* libMatroska v1.6.1 is now required. The bundled version has been updated to
that version.
Version 48.0.0 "Sick Of Losing Soulmates" 2020-06-27
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".
* 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.
* MKVToolNix GUI: header editor: added an option to remove all attachments to
the tree context menu.
* 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.
Bug fixes
* mkvmerge: fixed a segmentation fault when exiting prematurely due to write
errors such as the destination having run out of space.
* mkvmerge: DTS: fixed wrong channel count for DTS tracks with XCh
extensions.
* mkvmerge: MPEG TS reader: fixed detecting h.264/AVC and h.265/HEVC tracks
that consist of only a single frame.
* mkvmerge: MPEG TS reader: fixed handling of unbounded PES sizes for tracks
that consist of only a single PES packet.
* 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.
* 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.
* 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.
* 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.
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`.
Version 47.0.0 "Black Flag"
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 `:<title number>` 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.
* 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.
* MKVToolNix GUI: multiplexer: added support for mkvmerge's new support for
reading chapters from DVDs if both have been built with the `libdvdread`
library.
* 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").
* 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.
* MKVToolNix GUI: chapter editor: the chapter editor can now read chapters
from DVDs if MKVToolNix has been build with the `libdvdread` library.
* MKVToolNix GUI: header editor: added an option in the preferences for
displaying all date & time values in UTC instead of the local time
zone.
Bug fixes
* 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.
Build system changes
* 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.
* Boost's Date/Time, Lexical Cast, Range, Range Adaptors, Tri-Bool, Variant
libraries are not used anymore.
* 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.
* 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.
* The bundled version of fmtlib has been updated to release 6.2.1.
Version 46.0.0 "No Deeper Escape"
New features and enhancements
* 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.
* 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.
* mkvmerge: for audio-only files mkvmerge will now write a cue entry every
500ms instead of every 2s.
* 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".
Bug fixes
* mkvmerge: Matroska reader: when regenerating UIDs for chapters mkvmerge will
now fix referencing tag chapter UID targets to have the same values.
* mkvmerge: MP4 reader: fixed a crash that could potentially happen while
trying to identify H.265/HEVC tracks.
* 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.
* 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.
* mkvmerge: MPLS handling/MPEG TS reader: under certain circumstances mkvmerge
copied one frame too many before switching to the next play item.
* 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).
* MKVToolNix GUI: fixed a crash that happened when closing the preferences
after having closed at least one multiplexer tab.
* 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.
Version 45.0.0 "Heaven in Pennies"
New features and enhancements
* mkvmerge: mkvmerge has never supported appending & splitting FLAC audio
tracks. mkvmerge will now emit error messages when the user attempts either
instead of continuing and creating invalid FLAC tracks.
* MKVToolNix GUI: added an option in the preferences to turn on eliding text
on tab headers. If enabled, tab names will be shortened so that all tab
headers fit into the window's width.
* MKVToolNix GUI: added an option in the preferences to disable all tooltips.
* MKVToolNix GUI: Windows: debug output sent via Qt's to Windows' debugging
facility will use a more verbose message format including the application
name, making it easier to filter for in SysInternal's "Debug View" utility.
* MKVToolNix GUI: multiplexer: if the file identification fails due to a JSON
parser error, the output generated by `mkvmerge` will be output via Qt's
debugging facility (viewable with SysInternal's "Debug View" utility on
Windows; on other systems it's output on `STDERR`) allowing insight into
what's gone wrong.
* MKVToolNix GUI: multiplexer: if an error occurs during file identification,
the name of the processed file will be mentioned in the error message.
* MKVToolNix GUI: multiplexer: if an error occurs during identification of
multiple files, the GUI will ask the user whether to continue or abort the
identification process.
* MKVToolNix GUI: job queue: added an option in the preferences for removing
completed jobs when exiting the program depending on their status.
Bug fixes
* mkvmerge: H.265/HEVC packetizer: fixed changing the NALU size length, it was
using the wrong offset into the `hevcC` structure.
* mkvmerge: MP4 reader: fixed calculating the duration of video tracks that
only contain a single frame.
* mkvmerge: MP4 reader: if there's no frame offset table (`ctts` atom) present
for H.265/HEVC video tracks, mkvmerge will determine the timestamp order
itself instead of relying on the timestamps in the MP4 being in the
presentation order required by Matroska.
* mkvpropedit: Windows: mkvpropedit wasn't caching when reading the file to
modify, slowing down operations such as adding track statistics tags
considerably.
* MKVToolNix GUI: multiplexer: when using the title as part of the destination
file name (both automatically as well as using the "copy title to
destination file name" function) all characters that aren't valid in a file
name are replaced by hyphens.
* MKVToolNix GUI: multiplexer: the "copy title to destination file name"
function was broken when the "make file name unique" option in the
preferences was disabled. In that case the file base name was removed
regardless of what the title was set to at the time.
* MKVToolNix GUI: multiplexer: when using the "show command line" menu option
on Windows the path to the `mkvmerge` executable was shown with forward
slashes instead of backslashes. This is a purely cosmetic fix as Windows
supports both forward and backward slashes.
* MKVToolNix GUI: multiplexer: when adding Blu-ray playlists the GUI used to
only look for the English version of the disc library information (title &
cover images). Now the GUI will present all disc library entries in the
"select playlist to add" dialog & let the user chose which one to use (if
any).
* MKVToolNix GUI: multiplexer, info tool: fixed the "warn before overwriting"
check wrt. jobs creating the same file.
Version 44.0.0 "Domino"
New features and enhancements
* MKVToolNix GUI: header editor: the attachments can now be reordered via drag
& drop.
Bug fixes
* mkvmerge: Matroska reader: when encountering certain errors in the track
headers such as the codec ID not being present mkvmerge will simply skip
those tracks instead of exiting with an error.
* MKVToolNix GUI: multiplexer: the "ask before overwriting" functionality did
not look for the correct file names when splitting was active.
Version 43.0.0 "The Quartermaster":
New features and enhancements
* MKVToolNix GUI: using one of the command line options `--info`,
`--edit-headers` or `--edit-chapters` will make the GUI select the
corresponding tool on startup even if no further file name is
given.
* MKVToolNix GUI: multiplexer: added a setting in the preferences for changing
the location of the MediaInfo executable for when the user accidentally
selected the wrong one.
Bug fixes
* mkvmerge: AVC/h.264 parser: the order of the NALUs before each key frame was
sometimes wrong: mkvmerge wrote SPS & PPS after SEI NALUs. Now SPS & PPS
NALUs are always written before the other NALUs. Patch by Torsten
Hauska.
* 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).
* mkvmerge: MPEG TS reader: fixed detection of MPEG-1/2 video tracks
consisting of very few frames.
* mkvmerge: Ogg Opus reader: fixed the handling of Ogg Opus streams that
contain a just one Ogg page (`mkvmerge` aborted with an exception).
* 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.
Version 42.0.0 "Overtime":
New features and enhancements
* mkvmerge: added an option for creating byte-identical files:
`--deterministic <seed>`.
* mkvmerge: Matroska reader: mkvmerge will remove the `icpf` atom headers if
they're present in frames read from Matroska files.
* 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.
* mkvpropedit: when changing track UIDs the referring elements in existing
chapters & tags will be updated automatically, too.
* mkvinfo: when the option `-p`/`--hex-positions` is used, element positions
will be output regardless of the verbosity level.
* mkvinfo: added the option `-P`/`--positions` for showing the position of
each element in decimal regardless of the verbosity level used.
* mkvinfo: added the option `-o`/`--continue` for continuing processing when
the first cluster is encountered regardless of the verbosity level
used.
* 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.
* MKVToolNix GUI: multiplexer: added an option in the preferences for
disabling adding cover images from Blu-ray discs.
* MKVToolNix GUI: multiplexer: added mkvmerge's new `--deterministic` option
in the "additional command-line options" dialog.
* MKVToolNix GUI: header editor:: when changing track UIDs the referring
elements in existing chapters & tags will be updated automatically,
too.
Bug fixes
* mkvmerge: HEVC ES parser: fixed a bug in the slice parser calculating the
size of a field which in turn could have led to the slice's type being read
wrong.
* 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.
* mkvmerge: MPEG elementary stream parser: fixed an invalid memory access and
use of uninitialized memory that could happen under certain
circumstances.
* mkvmerge: RealMedia reader: fixed a division by zero when all audio
timestamps were zero.
* mkvmerge: RealMedia reader: fixed an invalid memory access in the video
frame assembly code triggered by invalid data in the file.
Build system changes
* `std::optional` (C++17 feature) is now used instead of `boost::optional`.
* `std::regex` is now used instead of `boost::regex`.
Other changes
* New man page translations into French, Italian, Russian and Chinese
Traditional have been added.
Version 41.0.0 "Smarra"
New features and enhancements
* mkvmerge: Matroska reader: Vorbis tracks: stream comments (aka Vorbis
comments) will be converted to Matroska attachments (for cover arts) and
Matroska track tags (for other comments). Additionally the stream comments
will be removed from Vorbis headers.
* mkvmerge: MP4 reader: added support for reading Opus audio from MP4
files.
* mkvmerge: MP4 reader: added support for reading VP9 video from MP4
files.
* mkvmerge: Ogg reader: Vorbis, Opus & VP8 streams: stream comments (aka
Vorbis comments) will be converted to Matroska attachments (for cover arts)
and Matroska track tags (for other comments). Additionally the stream
comments will be removed from Vorbis headers.
* mkvmerge: WAV reader: added support for reading RF64 files.
* MKVToolNix GUI: multiplexer: the list of predefined track names is now split
up into three lists, one for each track type (audio, video &
subtitles).
* MKVToolNix GUI: multiplexer: when trying to add thumbnails for a Blu-ray the
GUI will determine the thumbnail's pixel size from the thumbnail files if
the XML file doesn't contain that information. This works for JPEG and PNG
files.
* MKVToolNix GUI: general: line edits & combo boxes will now have a "clear
text" button appear whenever they're not empty.
* MKVToolNix GUI: update check: the dialog showing the latest news & version
information states explicitly where the links take the user (the MKVToolNix
`NEWS.md` file and YouTube respectively).
Bug fixes
* mkvmerge: Matroska reader: mkvmerge did not copy the codec's private data
when reading WavPack from Matroska files.
* mkvmerge: MPLS handling: re-added caching when using MPLS playlists as input
files.
* mkvmerge: MPEG TS reader: when reading an MPLS playlist, the calculation of
the minimum timestamp to use for shifting all output timestamps to zero was
wrong. It was wrongfully considering timestamps from packets it would not
copy due to the MPLS's timestamp restrictions. This could lead to the first
timestamps in the output file being quite large, e.g. more than a couple of
minutes, causing sync problems when multiplexing together with other
files.
* MKVToolNix GUI: multiplexer: the automatic switch between aspect ratio &
display width/height wasn't reflected in the configuration generated for
`mkvmerge`. The user had to change between the two settings manually
* MKVToolNix GUI: multiplexer: the progress dialog shown when scanning a
Blu-ray wasn't closed properly in certain situations.
* MKVToolNix GUI: general: the configured font was not applied to a lot of
controls (e.g. the file & track lists or the menu entries) on application
startup. Instead the user had to open & close the preferences in order for
the font to be applied to all controls.