From patchwork Tue Jun 22 06:54:32 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: 28600 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2042:0:0:0:0 with SMTP id z2csp2700014iod; Mon, 21 Jun 2021 23:54:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzk41qBR01xz4TOsejIe2bJG3W4VLHT57LPam/0Aa5aO1a8y44W6+UpZ+RMaCBtlCTm+vC0 X-Received: by 2002:a50:aa87:: with SMTP id q7mr2834780edc.97.1624344897729; Mon, 21 Jun 2021 23:54:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624344897; cv=none; d=google.com; s=arc-20160816; b=VhvMKyR+twjwnwKHHftpsjQCNjR5lwyiwJDDxzZ2vqjhHrXzW5VpR5RIRcKvBzITm1 oLHBMfx6USaMPRXXfZyoL2+71g352qEKhm2NUaeGfmpeGkK5tzZL7HPyr9YFno4eJ2os 6irc+jcCEx5NziL12FPIJM6mOBu73UQRixjk4kZHFWm4aC0+jB8qKa/okp7Ll6KlXt0K 8TWETVoIkcyHIZHpUVGOyrZE3frn000AmnIgx7YdPNVLtdCpvVBkibFZZBmiYxF0UiiK wStC0PMsky7DSYmI6uomDujeObX6CmGTV4cm67GO3hwNyxzdY3ycfV3nc7MhkKO+FeY2 5nkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=6hs6JVuNPKbkhXqWNxsqWkKwNjSSmjRq32AudCbB1t8=; b=JPsWwnnfLPpFOtVB7lVcI7jVmfv7jw7uam0YHDGMS1DF801DXBMM5BmfEeSHexukxU 7P4+3CfAc2+jEv+nsGzlrUW1wp/mb4CvYkCss+mXAm0YymtWuk16CyRp97pQuqnRdcAC h5d2CmpTCnJF6LtTLkf3Td2gX9F7yVreXdYOIODLo2w5n71tOGJJ55Wb9PooIPKFfhlC NazzIFVyac3HNi6zSP9CNP30V8/T13T55V6b/Np4f6/059en1tP4ScMVF8Io6wmp+03J pTxiX9KC+KYRlahEQDWdgfP8EFyMpxEpnY9BbYjB8xQ7keejQWHQ1pgMF/NOFe3tHNaW XS0A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=OmaHiOVr; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hu7si6044566ejc.142.2021.06.21.23.54.55; Mon, 21 Jun 2021 23:54:57 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=OmaHiOVr; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D3D10680815; Tue, 22 Jun 2021 09:54:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com [209.85.208.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 95581680815 for ; Tue, 22 Jun 2021 09:54:44 +0300 (EEST) Received: by mail-lj1-f177.google.com with SMTP id d13so28541945ljg.12 for ; Mon, 21 Jun 2021 23:54:44 -0700 (PDT) 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=PZ8Nmo76X6PxPJOZJZBkMKcvI+HxPDKyPsSdlC6Uedk=; b=OmaHiOVruq7eCk16NtiOU2WoB18TMiMlW5M+m2kXIocXqeYldwjXng6Oc/4Ghjk0Vq cfRq9dX0nETfZKVQ/S4wA4VFf/R8qRwZ4FiaHekT4KOSjinOv21vI9Cpl0DOPWBPbGCB XnVTPwPJVFkXrnYXsTkPLmqdsjeL+FEcV9y0St2uvuK3ASPCS3s2fqV6LHC5Ri2QfDrs nWmYTE8HH52Yur/qN4NaJwLwDikaUZ32Sw2a72UoSiS+mWA/ZNIAIFBcn0vmt62Djiy5 eBLk8LDypVKz38AGzbGrOp749SARHc7oQJzMagJh7Zb4svA8aViRk/4CsbkK8F8YwEZC hYfA== 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=PZ8Nmo76X6PxPJOZJZBkMKcvI+HxPDKyPsSdlC6Uedk=; b=WWsy15b1Sp9mLQM4p9gPyevY63SFDlMyvDPh0/nO8PuDDp9SD28TbqPyyoagGntcMT b90wR8aYwVzvK22vfukzdL1+wniP+gvRlfVZG0frY9HyGlYpjXwoMuaDQdu9rHIJ056z tTXNdaDwaOH1jGCKBlGETACQRUqMsTCglkei8r+aNkwROzgR+t0I4LR5iqNbtQlLeg5j GIpqdrspCjpRnZMkr1QFhY48JqIhxB5p6Co2fIfwvCmQhniSuUJGdqyNaJhqcreMIjft QDxEgbJ46Y/ICw9V7xacRGBg/+K6vlheklHsxwlytdJT25tYXOjfu4QTwYJLgOpnFkhw sfjA== X-Gm-Message-State: AOAM531ujRYdW8vKbZH+dbp3orAhkLCokEJi9xrLLeZVTfj/x+Fs/DUn 64Lmlxdfss8LUF2lUpSCMWGPbhW72+w= X-Received: by 2002:a2e:9790:: with SMTP id y16mr1823271lji.367.1624344883755; Mon, 21 Jun 2021 23:54:43 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id d9sm2101417lfi.287.2021.06.21.23.54.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Jun 2021 23:54:43 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 22 Jun 2021 09:54:32 +0300 Message-Id: <20210622065434.9006-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 0/2] TTML in MP4, part 1 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: KkFcQPnnjOvX To keep it simpler this first part includes only non-fragmented use cases. Contains the basic mapping code as well as the function that writes out the squashed documents. Works with both subtitle-only output as well as with other streams. Currently attempts to see the lengthiest streams in the mux, while also limiting itself to start at timestamp zero. In a separate patch set I will add additional complexity on top by introducing fragmentation matching based on the other streams in the mux (since most things that ingest fragmented MP4 with subtitles want the fragment time ranges to match between the video/audio streams and subtitles in the mux). Jan Jan Ekström (2): avformat/ttml: split TTML paragraph based or not check into header avformat/movenc: add support for TTML muxing libavformat/Makefile | 2 +- libavformat/isom.h | 3 + libavformat/movenc.c | 180 +++++++++++++++++++++++++++- libavformat/movenc.h | 6 + libavformat/movenc_ttml.c | 243 ++++++++++++++++++++++++++++++++++++++ libavformat/movenc_ttml.h | 31 +++++ libavformat/ttmlenc.c | 9 +- libavformat/ttmlenc.h | 39 ++++++ 8 files changed, 503 insertions(+), 10 deletions(-) create mode 100644 libavformat/movenc_ttml.c create mode 100644 libavformat/movenc_ttml.h create mode 100644 libavformat/ttmlenc.h