Files
taglib/tests
Ryan Francesconi 85b6a9eb93 MP4: Guard against deleting shared mdat on QT chapter remove
The previous fix for orphaned chapter mdats assumed the chapter text
mdat was dedicated and derived its location from stco[0] - 8.  In
audiobooks that co-locate chapter text at the start of the primary
audio mdat (stco[0] == audioMdat.offset + 8), that arithmetic lands
on the audio mdat header, the "mdat" signature check passes, and the
full audio payload gets removed -- shrinking a 484 MB audiobook to
5.4 MB.

Fix: resolve the chapter mdat by finding the top-level mdat whose
data range contains stco[0], then re-parse after the trak/tref
removals and confirm no other track's stco/co64 points into that
mdat before deleting it.  Shared mdats are left intact; the dead
chapter text bytes remain as harmless padding.

Add a regression test that writes a chapter track, patches its
stco[0] to point into the primary audio mdat (simulating the
audiobook layout), removes the chapter track, and verifies the
audio mdat is byte-identical afterwards.
2026-04-23 12:14:00 -07:00
..
2024-01-21 20:46:27 +01:00
2023-09-16 08:22:36 +02:00
2023-09-16 08:22:36 +02:00
2023-09-16 08:22:36 +02:00
2023-09-16 08:22:36 +02:00
2023-09-16 08:22:36 +02:00
2024-01-21 20:46:27 +01:00
2023-12-07 05:00:00 +01:00
2023-09-16 08:22:36 +02:00
2023-12-18 17:29:39 +01:00
2026-03-31 11:14:44 -05:00
2023-12-07 05:00:00 +01:00
2023-09-16 08:22:36 +02:00
2023-09-16 08:22:36 +02:00
2023-09-16 08:22:36 +02:00
2023-12-07 05:00:00 +01:00