Dependent frames are part of the same Matroska block as the
previous regular frame. The old code assumed there was only a single
AC-3 frame in a Matroska block, though. For files containing dependent
frames, this meant:
• Only the first AC-3 frame's dialog normalization gain was
overwritten.
• Only the last AC-3 frame's second checksum was updated.
Additionally mkvmerge assumed wrongfully that E-AC-3 frames contain
two CRCs just like regular AC-3 frames do whereas E-AC-3 frames only
contain a CRC at the end of the frame, not at the start.
The result was:
• Mixed dialog normalization gain levels
• The first and last AC-3 frames were invalid as their header
data (first frame) respectively their checksum (last frame) was
wrong.
Fixes#2386.