mbox

[FFmpeg-devel,v3,0/4] Initial implementation of TTML encoding/muxing

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

Message

Jan Ekström Jan. 22, 2021, 10:37 a.m. UTC
I've intentionally kept this initial version simple (no styling etc) to focus
on the basics. As this goes through review, additional features can be added
(I had initial PoC for styling implemented some time around previous VDD), and
there is another patch set in my queue which would then add support for muxing
TTML into MP4.

Changes from the second version:
  - Added the requested character escape modes for attribute values,
    AV_ESCAPE_MODE_XML_ATT_VALUE_SINGLE_QUOTED and
    AV_ESCAPE_MODE_XML_ATT_VALUE_DOUBLE_QUOTED as per XML spec, 2.3.
  - As we no longer have just one XML-related escape mode, make the base one
    be AV_ESCAPE_MODE_XML_CHAR_DATA according to what it is escaping for.
  - Utilize AV_ESCAPE_MODE_XML_ATT_VALUE_DOUBLE_QUOTED in ffprobe, as all
    it seems to write are double quoted attribute values.

Jan

Jan Ekström (3):
  avutil/{avstring,bprint}: add XML attribute value escape modes
  ffprobe: switch to av_bprint_escape for XML escaping
  {avcodec,avformat}: add TTML encoder and muxer

Stefano Sabatini (1):
  avutil/{avstring,bprint}: add XML escaping from ffprobe to avutil

 Changelog                  |   1 +
 doc/general_contents.texi  |   1 +
 fftools/ffprobe.c          |  32 +++----
 libavcodec/Makefile        |   1 +
 libavcodec/allcodecs.c     |   1 +
 libavcodec/ttmlenc.c       | 179 +++++++++++++++++++++++++++++++++++++
 libavcodec/version.h       |   4 +-
 libavformat/Makefile       |   1 +
 libavformat/allformats.c   |   1 +
 libavformat/ttmlenc.c      | 166 ++++++++++++++++++++++++++++++++++
 libavformat/version.h      |   4 +-
 libavutil/avstring.h       |   9 +-
 libavutil/bprint.c         |  41 +++++++++
 tests/fate/subtitles.mak   |   3 +
 tests/ref/fate/sub-ttmlenc | 122 +++++++++++++++++++++++++
 tools/ffescape.c           |   9 +-
 16 files changed, 544 insertions(+), 31 deletions(-)
 create mode 100644 libavcodec/ttmlenc.c
 create mode 100644 libavformat/ttmlenc.c
 create mode 100644 tests/ref/fate/sub-ttmlenc