Subject: [Cellar] MKVToolNix v25.0.0 released

From: Moritz Bunkus <[email-masked]>
Date: Thu, 12 Jul 2018 21:28:27 +0200

Hello everyone,

July's release of MKVToolNix is here: v25.0.0. After two smaller ones,
this one packs quite a number of bug fixes and enhancements, including
fixing a regression in the GUI's header editor preventing elements
from being removed that was introduced in v24.0.0. Sorry about that.

AV1 support hasn't changed. While the bitstream format's been
finalized in the meantime, the mapping to Matroska & WebM hasn't. It's
currently being discussed on the CELLAR mailing list.

Here are the usual links:

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

The Windows and macOS binaries as well as the Linux AppImage are
available already. The other Linux binaries are still being built and
will be available of the course of the next couple of hours.

Here are the NEWS since the previous release:

------------------------------------------------------------
# Version 25.0.0 "Prog Noir" 2018-07-12

## New features and enhancements

* 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.
* 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.
* mkvmerge: Matroska & MPEG transport stream readers: the encoding of text
  subtitles read from Matroska files can now be changed with the
  `--sub-charset` parameter.
* 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.
* 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.

## Bug fixes

* mkvmerge: AVC/h.264: fixed file identification failing for certain
  elementary streams due to internal buffers not being cleared properly. Fixes
  #2325.
* 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.
* mkvmerge: MLP code: fixed various issues preventing MLP from being parsed
  correctly. Fixes #2326.
* 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.
* 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.
* 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.
* mkvmerge: audio packetizers: mkvmerge will now keep discard padding values
  if they're present for packets read from Matroska files. Fixes #2296.
* 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).

  * 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.

  Fixes #2280.
* 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.
* 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.
------------------------------------------------------------

Have fun :)

mosu