From patchwork Thu Mar 4 17:48:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 26096 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 0BAD544A146 for ; Thu, 4 Mar 2021 19:48:40 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DE46E68ABD7; Thu, 4 Mar 2021 19:48:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0EB67687F3D for ; Thu, 4 Mar 2021 19:48:34 +0200 (EET) Received: by mail-lf1-f53.google.com with SMTP id p21so44598780lfu.11 for ; Thu, 04 Mar 2021 09:48:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=Lg6rVJD9ioe4lH4TwJ4435LwOyOsOsOVgwnELAEMf8g=; b=TqUpmc3PMWiddHceN9CJ2+YW+Hl1isyY33WMG/jFu/1JEIDxfcftOjFQtzl9MwVoTD hH9TXSNSX1C7t5JbTrWC2QP63Rya30MU6QenfbTuVVbkwYDk34W8s409oJf0M1po11Hb smvfOrbHD1BM/MJ/91gGI5e7gX1pwxklMl65IqpZoPbLAYtXMpGPejtlefSsKsMhp37m q3jmTZwbi8O9BVv1719zAL8nXITOlvwM1DntssJF8Vk0CrtzRLo889TOQm0u9+LqXU8g 1l9h1e+ixUj3Ft3zoOA9IRilYsaa5VBiQTd32HcOWaXY5XWsIifZw1Ythyjic/sUTSr0 DNxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=Lg6rVJD9ioe4lH4TwJ4435LwOyOsOsOVgwnELAEMf8g=; b=J04skg57jDBLCxPdJ+vV75XPULJMCAvGGp/jgZy2qec/kZ+fka7x7CW3Iz45TcmAu3 kcldgA0kc8cZNMT+mJaeEcQPzdxQY0MRF4kMMRVHm0tGTcsMB4SgAuWD+xLAKpx0SV2C gbfmD/9zRIMb5s6UI5ENTAObuf2Hc/iIxXkeTXtX7qcQ58wXPD4lyxnilu8dapLkyDxS 2ILve9igyts8yY1XDLwsS+Xa7z5ZY3fRNF7DDywGyENLpXl6mNYb5KQ93dtfdfGuQKDQ AjI2vCDjGYozYLgvb85RxjFbmVe7ZzHoC6PBNmRFm9rQ7mpFgW+bN3gMMGcAcUoJDdfv xNqw== X-Gm-Message-State: AOAM531y/ShwlEkCeYNeLE1Dz3qUgUbukaLKDhpPmXnB2q/Hilq2E8Bf jWos/SqtKEtOe9qxPs8y3SMsL5aH2JM= X-Google-Smtp-Source: ABdhPJwi3ZA671WvfLEpu6r4jAvOYcRF8IJKYeP5ZqgbBtCEJ87ANcQpx9LReaVmPbnweSpoT9UwOw== X-Received: by 2002:a05:6512:303:: with SMTP id t3mr2981844lfp.196.1614880113239; Thu, 04 Mar 2021 09:48:33 -0800 (PST) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id n25sm9549lfe.86.2021.03.04.09.48.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Mar 2021 09:48:32 -0800 (PST) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 4 Mar 2021 19:48:25 +0200 Message-Id: <20210304174830.53798-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v7 0/5] Initial implementation of TTML encoding/muxing X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 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 sixth version: - Split the lavc and lavf bits. Jan Jan Ekström (4): ffprobe: switch to av_bprint_escape for XML escaping avcodec: enable usage of err_recognition for encoders avcodec: add TTML encoder avformat: add TTML muxer Stefano Sabatini (1): avutil/{avstring,bprint}: add XML escaping from ffprobe to avutil Changelog | 1 + doc/APIchanges | 3 + doc/general_contents.texi | 1 + fftools/ffprobe.c | 32 ++---- libavcodec/Makefile | 1 + libavcodec/allcodecs.c | 1 + libavcodec/avcodec.h | 2 +- libavcodec/options_table.h | 18 ++-- libavcodec/ttmlenc.c | 210 +++++++++++++++++++++++++++++++++++++ libavcodec/ttmlenc.h | 28 +++++ libavcodec/version.h | 2 +- libavformat/Makefile | 1 + libavformat/allformats.c | 1 + libavformat/ttmlenc.c | 174 ++++++++++++++++++++++++++++++ libavformat/version.h | 2 +- libavutil/avstring.h | 14 +++ libavutil/bprint.c | 29 +++++ libavutil/version.h | 2 +- tests/fate/subtitles.mak | 3 + tests/ref/fate/ffprobe_xml | 2 +- tests/ref/fate/sub-ttmlenc | 122 +++++++++++++++++++++ tools/ffescape.c | 7 +- 22 files changed, 619 insertions(+), 37 deletions(-) create mode 100644 libavcodec/ttmlenc.c create mode 100644 libavcodec/ttmlenc.h create mode 100644 libavformat/ttmlenc.c create mode 100644 tests/ref/fate/sub-ttmlenc