mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-12-25 12:27:21 +00:00
d69915c2e6
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.
9 lines
261 B
Ruby
Executable File
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(' + ')}"
|