Commit Graph

3 Commits

Author SHA1 Message Date
Moritz Bunkus
f53b618904
E-AC-3 dialog norm gain removal: handle dependent frames correctly
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.
2018-09-25 21:15:20 +02:00
Moritz Bunkus
2a14dbf4d0 TrueHD: implement dialog normalization gain removal
Last part of the implementation of #1981.
2018-03-09 19:16:10 +01:00
Moritz Bunkus
9e47700739 tests: add case for dialog normalization removal 2018-03-08 21:03:24 +01:00