From patchwork Tue Dec 12 07:32:24 2023 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: 35026 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1225:b0:181:818d:5e7f with SMTP id v37csp3428766pzf; Mon, 11 Dec 2023 23:33:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IG53+4FniwLwCR2m71e3XAwnp9wo70SVv6oDC/q715+sqRPt3GpbS5WXht1tVQz+Xm6lesf X-Received: by 2002:a2e:9856:0:b0:2c9:ffdf:f6dc with SMTP id e22-20020a2e9856000000b002c9ffdff6dcmr2676667ljj.41.1702366381035; Mon, 11 Dec 2023 23:33:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702366381; cv=none; d=google.com; s=arc-20160816; b=TSdY2pRFux+E2nfkTBftmY8+wVjpxwkYNhm1spoa0w9SGIBaHVgYDyuHAyHjj7Pyqb sRLEnDnlfKw1KIsUjsqOivVO4jyTFTGuyExJMHExJ9yXhyJp7N0rrc3a6KBwnaNAhWun Yt7A8TXq+7cVtekzt3gH5dUApF3+5qH2nIZgpm3j7S1iTk2TAzP3hXW1WJLLMMPFOZI4 igX4pQENsdlicOvfQvAc7S4Jx/Kd3c5M+pHADX+ndvkGMOvQ/SRgKnRk8Slxmi8+v8sr /7V/SskNOVg2xu2t+6XgI2aHD85IUcKg2VYgCvV0W+4voy3lpKNztedooLCWD/UUgkDb igTQ== 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=DTE9hGieR2nejXevAc8Ewbym5BDT1NPTERYzuxmICfQ=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=cdZ1Z3JQuBm4MEKdZWjKa/pjUVweGvVsMvT/SQKkpSRn0dfYXp/rOOedtpsCdV9vYx BFAEfjazzSW3EzFf+ULrQYsIHW3M3lfTw6NTi8OqbefIqKbElZjj/+VykF8Vj/kyMEVm v4dEUAnttgoPNTZvxPH2LgqAc4Y322+g2bsHNUde9wfgZl8qbtDKKakD4mMpHdfvp6Du ahglWjm/lh1GOpjVOlDLAeIxbGVz9oqP2ICXGvaMn9hA4Kqgjxg9539Edwcb6mS0eXTj tIomBnt1sTsB1NN53Q+GbC/mNOJKS3rm3iUeYFoorIAmlRsRrZTvml0peaE6Q1aIe6cB NFGQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="LdGJ/zfF"; 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 a4-20020a1709064a4400b00a1d28419f3esi4035862ejv.565.2023.12.11.23.33.00; Mon, 11 Dec 2023 23:33:00 -0800 (PST) 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=20230601 header.b="LdGJ/zfF"; 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 99A3968D1AB; Tue, 12 Dec 2023 09:32:56 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6FC7868D176 for ; Tue, 12 Dec 2023 09:32:49 +0200 (EET) Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-2cb21afa6c1so58662711fa.0 for ; Mon, 11 Dec 2023 23:32:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702366368; x=1702971168; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=QIxxXJmn4XpR/1Pj1d31olxm4jfR08C0Aztykvx0PkE=; b=LdGJ/zfFMtGA25Uy4j1DrTSUFZ7q4a2WePKOYefoMBAIKB3ox535Jh/I1XtzJIh+T0 +9RZ/GlylOV2bmUFZA6FnzbGKTwPecJAVk/Q3FRIoYxnIB9npbKyQ24yL9cEGndhcO83 zsJaKOmXYNLwSnH8+N28Kl+9zAQbAP57MGYvHXEt5I2nmJehH74gJc56shXsR/dduL6O TQ5C/vTvLQWraVHf24LfhyNTbp7tGnnjuTNBcQa8evBIRIQGrncXvplcCfBKUEdF7mab EKvz6nJf/yZcY6mCNb90/Vs2Y3m6ZqNDz6G7I0LqlCcjOqVAKbduVYBfpK1GKD9UOCvJ we1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702366368; x=1702971168; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QIxxXJmn4XpR/1Pj1d31olxm4jfR08C0Aztykvx0PkE=; b=gxBdydMUAX98QlN+4QKRo54VJkOmpo+YiNENrQ6CDHRw9DPpF7KCWU1IlVzjFo33B2 K8f+JpecPn3fxro84Q7urHU7NDoWkI6reEzgnQzlWiUTkdvJkWCCf8AyW7Idow1vDa9w RodQfuXaOQuaYIZpRD12iM22ZxxOB6YiSJi2MNxDYY8rg31Tho6LOJIkoO5EG2e8nUhd 83Z97StXZXbe7J0zQNJzEzXCGIW1WLi1OaN72biabOzRAyYQNk551hB47nAL2CaPHnFH fmyGz/dika1USYH3YPvVPVCn4lEEWMoYlMJE3w6/PrhUw3w9IMb675MYqzBoA/Bz1+2q fjXw== X-Gm-Message-State: AOJu0YwRSMBp7T2lvPxbKXr7bro3IHA7M4jljztJkFUIm2nqu0HIXiaw OOKvrGH2YGh0KM6W35KwnCwrf/NUAMY= X-Received: by 2002:a05:651c:210d:b0:2ca:cb:36af with SMTP id a13-20020a05651c210d00b002ca00cb36afmr2579922ljq.90.1702366368244; Mon, 11 Dec 2023 23:32:48 -0800 (PST) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id a18-20020a2e9812000000b002c9f3ba5c22sm1458045ljj.118.2023.12.11.23.32.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 23:32:47 -0800 (PST) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Dec 2023 09:32:24 +0200 Message-ID: <20231212073242.10967-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 0/3] Initial support for fragmented TTML muxing 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: nNpm5hEqGAUU Changes compared to v2: * General rebase. * Limited the test to the first overlapping lines that finish at around 24.5 seconds. This brings us down to 430 lines per test (of which there are two). * Switched from the rawvideo to the data muxer. This enables pushing TTML together with another track (usually video) as part of CMAF Ingest, as defined by the DASH-IF Live Media Ingest Protocol. Currently does not function well with just the subtitle track unless the API user explicitly requests fragmentation with a nullptr packet, as the generic fragmentation decision logic is based on tracks which do not require squashing. Currently does support overlapping subtitles, but the implementation utilizes another packet queue for it, which is probably not optimal. Recommendations on how to improve things are welcome. Jan Jan Ekström (3): tests/fate-run: add support for specifying the final encode muxer in `transcode` avcodec/avpacket: add functionality to prepend to AVPacketLists avformat/movenc: add support for fragmented TTML muxing libavcodec/avpacket.c | 20 +- libavcodec/packet_internal.h | 2 + libavformat/movenc.c | 9 - libavformat/movenc_ttml.c | 157 ++++++- tests/fate-run.sh | 4 +- tests/fate/mov.mak | 21 + tests/ref/fate/mov-mp4-fragmented-ttml-dfxp | 430 ++++++++++++++++++++ tests/ref/fate/mov-mp4-fragmented-ttml-stpp | 430 ++++++++++++++++++++ 8 files changed, 1054 insertions(+), 19 deletions(-) create mode 100644 tests/ref/fate/mov-mp4-fragmented-ttml-dfxp create mode 100644 tests/ref/fate/mov-mp4-fragmented-ttml-stpp