#10203 closed defect (fixed)

ASS encoder inserts null character into middle of output

Reported by: Tim Angus Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: ass assenc
Cc: Tim Angus, Marton Balint Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

Some matroska files embed ASS format subtitles. The header for said subtitles include the header for the subtitle stream in the "codec private data" section. It's not clear whether the last byte of this data is supposed to be 0, i.e. a null terminator for the string data. Among other tools, older versions of Handbrake do include the null terminator and there are many files out in the wild created using Handbrake. Using ffmpeg to extract subtitles for such a file, this header is copied directly to the output file, including the null terminator, if it was present. This results in a file in which there is a null terminator after the header, but preceeding the actual content of the subtitle file. Obviously this is not correct.

As a data point, of the ~600 mkvs I have locally, 22 of them have ASS subtitles, and of them 20 include the null terminator, so it doesn't appear to be a rare phenomenon.

As another data point, the tool mkvextract from mkvtoolnix avoids the ambiguity by first assuming that the source buffer is *not* null terminated, and then manually adding a (possibly second) null terminator. The buffer is then interpreted as a null terminated string and processed that way.
(https://gitlab.com/mbunkus/mkvtoolnix/-/blob/main/src/extract/xtr_textsubs.cpp#L117)

A small test file that exhibits the problem may be found here:
https://0x0.st/oFTT.mkv

Patch available here, that essentially replicates how mkvtoolnix does things: http://ffmpeg.org/pipermail/ffmpeg-devel/2023-January/306017.html

How to reproduce:

% ffmpeg -y -i oFTT.mkv -copyts -an -vn -c:s copy out.ass

Use xxd or a text viewer that shows special characters, and observe the '\0' between the end of the [V4+ Styles] section and the start of the [Events] section.

Change History (3)

comment:1 by Tim Angus, 14 months ago

Cc: Tim Angus added
Version: unspecifiedgit-master

comment:2 by Marton Balint, 13 months ago

Cc: Marton Balint added
Status: newopen

Sent an alternate patch, please test if you can

http://mplayerhq.hu/pipermail/ffmpeg-devel/2023-March/307948.html

comment:3 by Marton Balint, 13 months ago

Resolution: fixed
Status: openclosed
Note: See TracTickets for help on using tickets.