mkvtoolnix/tests/test-0726hevc_in_matroska_appending.rb
Moritz Bunkus d69915c2e6
HEVC packetizer: copy parser instance at start of muxing process
When appending tracks, there's one packetizer instance for each source
file, in case of the HEVC packetizer each with its own HEVC ES parser
instance. In order to properly process all parameter sets all
packetizer instances must use the same ES parser instance, though.

So far the appended packetizers only copied the reference to the
preceding packetizer's ES parser instance the moment the connection
was made by mkvmerge's muxing core. This turns out to be too late:
there are situations in which data is passed to the appended
packetizer before that second "connect now" call has been made for
some reason. In that case that data was passed to the appended
packetizer's ES parser instance which is then thrown away in favor of
the preceding packetizer's ES parser instance, losing the frames in
the process.

The fix is rather obvious: copy the reference to the ES parser right
at the start of muxing when the first connection phase is run, before
any data is actually processed by them.

Fixes #3170.
2021-07-25 18:34:04 +02:00

9 lines
261 B
Ruby
Executable File

#!/usr/bin/ruby -w
# T_726hevc_in_matroska_appending
describe "appending HEVC/H.265 in Matroska, ensuring all data is passed to the correct parser instance"
files = Dir.glob("data/h265/issue-3170-sample-source-file-*").sort
test_merge "#{files.join(' + ')}"