Message ID | 20210414065725.8828-1-jeebjp@gmail.com |
---|---|
Headers | show |
Series | Initial region (styling) support for TTML | expand |
On Wed, Apr 14, 2021 at 9:57 AM Jan Ekström <jeebjp@gmail.com> wrote: > > Now sets alignment, font size, font family and the region's position > and size according to the ASS styles passed to the encoder. Regions are > relatively important in TTML, since the spec-defined default region is in > raster location (similar to the default with HTML) - it starts from the > top left corner and covers the whole screen. > > Mapping of the ASS script resolution to the cell resolution and using cells as > sizing metric is not perfect, but while TTML does have a pixel based reference > sizing by means of setting an extent to the root tt element, it is specifically > disallowed in the EBU-TT profile, as well as apparently generally frowned upon > as opposed to defining the cell resolution. In general, mapping to cell resolution > seems to give "close enough" results, though. > > FATE test output still passes https://github.com/skynav/ttt/ validation, > and visually the result can be verified against such renderers as > http://sandflow.com/imsc1_1/index.html . > > Changes from v1: > * Removal of unnecessary intermediate AVBprints by printing elements in three > steps instead of attempting to do a single one. A bit less pretty, but lets > us write straight into the actual output buffer. > * Removal of some local scopes. Seems like I'd been utilizing them as a > convenient way of having variable definitions after initial sanity checks. > * Merging of script play X/Y resolution being zero or smaller checks into just > <= 0 checks. > * Utilization of extradata buffers as-is after verifying that the buffer ends > with a null. Removes the requirement to copy strings out of the extradata into > the lavf context, and thus the deinit/free function was no longer necessary. > > The diff can be checked as follows on my git repository: > https://github.com/jeeb/ffmpeg/compare/ttml_add_default_region_v1..ttml_add_default_region_v2 > (more easily readable due to file limiting with the following command: > git diff ttml_add_default_region_v1..ttml_add_default_region_v2 -- libavcodec/ttmlenc.* libavformat/ttmlenc.* > ) > > Jan > > Jan Ekström (4): > avcodec/ttmlenc: split header writing into its own function > avformat/ttmlenc: enable writing out additional header values > avcodec/ttmlenc: add initial support for regions and styles > avcodec/ttmlenc: add support for region positioning and sizing > > libavcodec/ttmlenc.c | 267 ++++++++++++++++++++++++++++++++++--- > libavcodec/ttmlenc.h | 6 + > libavformat/ttmlenc.c | 70 +++++++++- > tests/ref/fate/sub-ttmlenc | 88 +++++++----- > 4 files changed, 371 insertions(+), 60 deletions(-) > > -- > 2.30.2 > If there is no further interest, I will start applying this set in a day or two, as this actually makes subtitles look like you'd expect them to look like :) (due to the TTML default region starting from the top left corner). Jan