In #2306 a file was provided with an edit list consisting of two
identical entries that span the whole duration of the file as given by
the file headers. The difference to earlier provided files is that the
edits don't start at 0 but slightly later. Therefore a check for
"starting at 0" seems counterproductive.
Fixes#2306.
Empty ISO 639-1 codes led to `<ISO_639_1_CODES>` looking like
e.g. `de|en||nl`. That would also match an empty string. Therefore the
whole regex would match where it wasn't supposed to. An example:
File name: `This... is strange.[eng].srt`
With the default regex, the first `..` is what would be matched, the
capturing parenthesis would be empty, and therefore no language would
be detected.
Fixes#2298.
MP4Box doesn't like empty SPU packets and aborts with the message
"Corrupted data found in file…". As empty SPU packets serve no
purpose, just drop them during extraction.
Implements #2293.
On Windows the setting names aren't case sensitive, but on other
systems they are. This means that writing something as `abcTheseTypes`
and reading it back as `abcThesetypes` won't work.
Fixes#2297.
Taking an `int` was done due to clang-tidy's modernize checks
bemoaning the use of integers 0 and 1 instead of `true` and `false`
for Boolean parameters. However, that had the unintended consequence
of truncating values if the values given to the parameter is e.g. a
`uint64_t` for which a bit was tested with "value & (1 << shift)" —
which relied on implicit conversion to bool.
`FindNextID` considers anything that looks like an ID to be valid. If
the resulting ID is neither a known global nor an element from the
passed context, a Dummy Element is returned instead.
Therefore mkvextract must verify that the element found is indeed an
EBM Head element in order to determine whether or not the source file
is actually a Matroska/WebM file.
Fixes#2281.
The previous interface required an optional boolean parameter in order
to indicate whether a memory region passed to memory_c should be
managed by memory_c. That was confusing and easy to get wrong.