From patchwork Tue Mar 2 09:00:36 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: 26051 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 9F2B944AFB3 for ; Tue, 2 Mar 2021 11:06:09 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6E8DC68AB77; Tue, 2 Mar 2021 11:06:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 66D9B68A831 for ; Tue, 2 Mar 2021 11:06:03 +0200 (EET) Received: by mail-lf1-f48.google.com with SMTP id 18so21545301lff.6 for ; Tue, 02 Mar 2021 01:06:03 -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=05JPCAeAQMa9okJeuPXyZwcYMe7st+SmewxhZdHbhoA=; b=chwfZda1yqEqJvbV/xqaghdFNB70tW67wJIKUU5w6M5G6xaAMaDuXwLKGDVnxe0oVO WV/6uEJddwbSh6BSxfhQNM0oliM4QdksrOmFZjgCzAYEUadynpidnWwUTnPLLS5q9JLq VilSAkN6vMCg/nqa1Gaj7Lk0DBQ6Hgq25IxBxDExO1Hz8Fwlf2Okoqf82ExZFQ7Dpcxg XRLLp3lhCUzPfz8LhuzNyTKxx+tfIJFNcrZ2c+tB329y1/gm4iVWjW9e6vFZudU20Z0Z PG7N+lhjnCGAa5WCP4Ji/Xv8Aq1lpTNHcxCLJLrKJmU7khN0Gv89B7wCyh1sbkVdF3u3 oVag== 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=05JPCAeAQMa9okJeuPXyZwcYMe7st+SmewxhZdHbhoA=; b=aZawrbj4+1TmHALI9A6pYh/R3HlG2CDzL+jmb4V3JWRIxI+wdoZGQ0II0oxcCJvNjq aLB2oJQc+IZSrpBAEGXCk156U6z7WEsnE/RQP2PHuju+lgAtmA5H14Dg1Bz1AfCR5Awn Bt9ISe0kONXUhIiP9K62EepOHNGeTkGkzYXLrajQmKklKmncnSyGLqcJwz5Tqa0x0TKk CZUn/YVynl1YEXUCw3xNoSogFWsiperSsXlQdUrU2SQrLjokh6dM1n30tyIdPUBEtHje tY6qIKOZH/54/4+tOjuVSjAJ7PI/6EF/UJCuBF4ljwtTsWC7FyN/lFHWN+PzBtNiFbIP 55mw== X-Gm-Message-State: AOAM532C4Nlt6mnLCGdmiWSRuYuc3G8e//scPtEdi/1f1jm81qLNq5S5 lkJG2vByKGAc2zZmY7/qtMDl1ZwkY7s= X-Google-Smtp-Source: ABdhPJyrU2I/uLvKccebY7jX1THJA8MTkCHBNMUWgjsQg6Tj/xzaR2pEROgp9B5i7yxYJGjg5vZWPQ== X-Received: by 2002:a2e:8002:: with SMTP id j2mr11941810ljg.31.1614675643755; Tue, 02 Mar 2021 01:00:43 -0800 (PST) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id u9sm1791626ljj.0.2021.03.02.01.00.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Mar 2021 01:00:43 -0800 (PST) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 2 Mar 2021 11:00:36 +0200 Message-Id: <20210302090040.10484-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v6 0/4] 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 fifth version: - Fixed a stupid mistake in tools/ffescape. - Reworked the err_recognition commit based on comments from James and Anton. Jan Jan Ekström (3): ffprobe: switch to av_bprint_escape for XML escaping avcodec: enable usage of err_recognition for encoders {avcodec,avformat}: add TTML encoder and 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