when the last offsets in the stco atom are close to 4GB, the addition of the moov atom size can overflow, causing corruption near the end of the mp4 file. this patch upgrades all stco atoms to co64 when such an edge case is detected. in order to accomplish this, the implementation was changed to walk the atom tree, instead of searching for the strings 'stco'/'co64'. this was required since when an stco atom is changed to co64, its size changes, and the sizes of all containing atoms (moov, trak, etc.) have to be updated as well.
dc16c9dd90 qt-faststart - stco offset bug fix
tools/qt-faststart.c | 400 ++++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 345 insertions(+), 55 deletions(-)