The Blu-ray specs state that `out_time` is the end time of the last
video presentation unit from the corresponding play item. Therefore a
packet with `timestamp == out_time` must not be copied anymore.
Part of the fix of #2789.
MPLS play items contain timestamp restrictions (`in_time` and
`out_time`) that determine which part of the referenced file must be
copied. So far only the first play item's restrictions were
honored. For all other play items in an MPLS playlist the whole files
were copied.
mkvmerge's structure already read those restrictions and passed them
on to all the readers created for the individual files. However, those
readers did not act on them.
Now the restrictions are set before the file headers are read, and the
function parsing those headers takes them into account.
Fixes#2789.
One list less was parsed then was actually present in the hevcC,
causing e.g. no picture parameter sets to be available to the ES
parser. Therefore no frames were output.
Fixes#2782.
Using the three-argument variant of the `connect()` call means that Qt
doesn't have an object to track; it just calls a functor. If that
functor uses a pointer to an object, then removing said object means
that the functor will still be called and access a pointer to invalid
memory.
Using the four-argument variant instead allows Qt to automatically
remove the connection when the object in question is removed.
This happens in the case that a multiplexer tab is opened (e.g. on
program startup) closed, and later the preferences are changed.
Fixes#2785.
On macOS the default `xsltproc` installation has the same limit (3000)
as on Linux, but for some reason it exceeds that limit on
macOS. Bumping it to 10000 lets builds succeed on macOS, too.
Fixes#2754.
MP4 files normally contain `ctts` atoms that, together with the
regular atoms for timestamps, determine the presentation timestamps of
all frames. This is important for codecs where the decoding and
presentation order differs, especially AVC & HEVC with B frames.
Matroska timestamps must be presentation timestamps.
When an MP4 file doesn't contain a `ctts` atom for such a track the
timestamps in the MP4 are actually decoding timestamps, not
presentation timestamps. In such a case `mkvmerge` must determine the
presentation timestamps by determining the presentation order by
decoding the frame headers.
Fixes#2777.
The multiplexer tool already verifies the conditions for existing
files taking its own "splitting enabled?" setting into
account. That's knowledge the generic jobs tool doesn't
have. Therefore the info/mux tools do their own check and only let the
job tool pose the question to the user.
The check for existing jobs on the other hand now also also takes into
account whether or not existing mux jobs have splitting enabled.
Fixes#2758.