[FFmpeg-devel,0/4] Initial region (styling) support for TTML

Message ID 20210330082346.8404-1-jeebjp@gmail.com
Headers show


Jan Ekström March 30, 2021, 8:23 a.m. UTC
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 .


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       | 311 ++++++++++++++++++++++++++++++++++---
 libavcodec/ttmlenc.h       |   6 +
 libavformat/ttmlenc.c      |  78 +++++++++-
 tests/ref/fate/sub-ttmlenc |  88 ++++++-----
 4 files changed, 423 insertions(+), 60 deletions(-)