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.
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.
Implements #2480.
The features removed are:
* mkvmerge: the options `--identify-verbose` (and its counterpart
`-I`), `--identify-for-gui`, `--identify-for-mmg` and
`--identification-format verbose-text`
* all command line tools: the old, proprietary format used for option
files
* all command line tools: support for passing command line options via the
environment variables `MKVTOOLNIX_OPTIONS`, `MKVEXTRACT_OPTIONS`,
`MKVINFO_OPTIONS`, `MKVMERGE_OPTIONS`, and `MKVPROPEDIT_OPTIONS`
This adds a new track property in JSON/verbose identification mode
called "multiplexed_tracks". It's an array of track IDs that describe
which of the tracks mkvmerge reports as separate ones were originally
part of the same source track (e.g. TrueHD+AC-3 in a single track in
MPEG transport streams).
Implements #1835.
The old code was pretty convoluted and hard to reason about. On top of
that it didn't buffer PES packets properly before trying to parse the
PES headers. This lead to accesses beyond the end of the buffer.
Some of the sub-tests in 449 have to work with uninitialized data due to
the file structure errors in the source files. Therefore the data's
content may actually change from run to run. Such a change was triggered
with change f82360d. Therefore only test whether or not muxing succeeds
for those sub-tests, not what the actual content looks like.
Frontends like gMKVExtractGUI currently use mkvinfo for determining the
offset between tracks. This is an attempt to provide that information
with mkvmerge.
"playlist_file" must be an array of strings, not a single string. In
verbose identification output mode this property has always been output
multiple times. In JSON only one of those was actually output, the last
one. Additionally the JSON schema didn't contain "playlist_file" at all.