From patchwork Wed Jul 12 13:48:09 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: 42611 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6da1:b0:131:a7d0:bc6d with SMTP id gl33csp2195199pzb; Wed, 12 Jul 2023 06:48:30 -0700 (PDT) X-Google-Smtp-Source: APBJJlHQjkfpvLmP4J7NEku8FSXWCSDTfO5ivCm4yLLi0aUoG+LW8Vr733tuySeEGWwYkD5tTBHk X-Received: by 2002:a17:907:3ad1:b0:982:79fa:4532 with SMTP id fi17-20020a1709073ad100b0098279fa4532mr17085602ejc.53.1689169709869; Wed, 12 Jul 2023 06:48:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689169709; cv=none; d=google.com; s=arc-20160816; b=D2CZ4e6MLz5/gxDzrvDxoOafCQVhECY1SkJUW9tWdeliEUavs7ukr6aIU0pK3rY6JV xafRzi0+zLUcWsBOKGOZ220h61rCqjih1EJpOtozhy2lBUK/io+Sy3/5aNyonQeryaAu 1YO1UTeB26BN8IymqM2Frud4U7b+Zeug8hS1TqC7b8BJxYvlo2SnvcMW87dMpCmS+gTG kqvyiYQQ1uZBbRYdLdQiLEMqsw5sWuHJYWQlPQK9svQJLGpTxkjZYuR9Uyf8l/5d1+2E d1c1O4dcvsrLQp06cet31SlHjOyLfrmnGeX5wBAyMFlumKfvzVHRRUYSPDvn4+TTSA7r WWog== 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=TemVaUGtSGym/bSeHnxvDT/z5Ps6tGcd1NIfI5yPC0M=; fh=DpbP4OnC98Ct+zBdrpJgv1NgOvKTVLIsArQu/ER33Zc=; b=yOWprWR8lZNJRB9v1aE91lD7QBHlv9+YDxb9pMV7SJqcWEjyecE4a5/tBiCSEo8D8W Ce8YMwGICDl7StIB2YPnyyLXh4QHOdQgxJneJy813+ECP9HwgVTouYT5/h9MJdrt8F5a TSA2Kpi5GR9j8G08xyMGbLp0Dd3MZGTP46lDMsMdyKmB6Ga+5zDwyGsg5Ysang9udlmV KdyXxW9RHC2w8bB1gRWAffFV8zEXhdxKlwx1t1WkuNkipeH6ITee0D3iPB30VryeKTJe 2iuI3aH0hUoXtPyCPMcuSEoYiZdhLjg8skBxeckr9Kik8Aim5cNvyH+J8zo/g5AZTsJk NAIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=liij209t; 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 u25-20020a170906409900b00993689daad2si5106054ejj.879.2023.07.12.06.48.29; Wed, 12 Jul 2023 06:48:29 -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=20221208 header.b=liij209t; 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 A0E8468C606; Wed, 12 Jul 2023 16:48:26 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f44.google.com (mail-lf1-f44.google.com [209.85.167.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7E30068C5EE for ; Wed, 12 Jul 2023 16:48:20 +0300 (EEST) Received: by mail-lf1-f44.google.com with SMTP id 2adb3069b0e04-4fa48b5dc2eso11173717e87.1 for ; Wed, 12 Jul 2023 06:48:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689169699; x=1691761699; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=9HZqTDIdmoCcPtHetT/qUn6Ozv/iFRPeE6xYdhKTs1w=; b=liij209tul/MrZaTRI59OVHpssfMceAqHrWjFZuU+i4TussXrz/CtibrfWa5EXL/x0 nTjw7s2i5bHI75ds7wjt/JY0eLDYFXg5zsuCvB4bm4hPvf6bO9+X1XUarKgNpJVd3Ilp tb7cVab8b/UJOzkkxChP9PhwBGaxNKlXK21dpKxLJGoQgi7Y3OJVzJSB/YgbS8Btq3Nl r/urg7Uvbk4K/ULO8oLH7Rp/m0cjoUjrR3+24/+bbxBwC6/RNbYFdRifpbniQovG3IeL LjG/jZqrxpJ+r5rPMqDhoPdjerIbZ87RiU+gjTFM60aUWpf+aFiKD7ED7/DO2oAX46jm U8zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689169699; x=1691761699; 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=9HZqTDIdmoCcPtHetT/qUn6Ozv/iFRPeE6xYdhKTs1w=; b=KobKsh03lofZtIC6SO0wa750iQAEPTNUN6kgr87swls/qBGBXPlgVDy13YdtVDZB0B suQRhB/m0Owhrhw0j6CgXH+SYOWjM/vraAu2zH8S+qmExgZwmXWwfrYt1ZNf26a9ojQV jruYXXZu15scJ49DNxeDcwp6ujyL7TPeGO9oYCr25wGXwj0M8byaTgi3+1Yz/OCHCfcO 2gaCVc/j+wIuuIJ+SkTpmlzS/d/nvF7nZSTzjCf2a1QDfsMRd0xtBeiMsgQWcXXeZ7J0 Iyjn+jx898HoVU/JtLXojML5UboUR+v1oHFbVqv1HdYeIpYPGOf+wefPRFG4nmDuSutT 1qGQ== X-Gm-Message-State: ABy/qLYeHS8QDKDue/K0LHdRt8m9FlyZerzROheBx8KohdCC3jf95trI Sgb7dTG4Arz9i2Cw+qeZt1rNEohzFkQ= X-Received: by 2002:ac2:5f86:0:b0:4fb:7c40:9f95 with SMTP id r6-20020ac25f86000000b004fb7c409f95mr14351375lfe.47.1689169699433; Wed, 12 Jul 2023 06:48:19 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id b3-20020ac25623000000b004fbc82dd1a5sm728381lff.13.2023.07.12.06.48.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Jul 2023 06:48:18 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jul 2023 16:48:09 +0300 Message-ID: <20230712134813.13464-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] avformat/mov: enable identifying TTML subtitle streams as such 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: CQpgNpgW2mhb From: Jan Ekström The contents are full TTML XML documents. TTML writing tests' results are updated as the streams are now properly identified as TTML ones. Signed-off-by: Jan Ekström --- libavformat/mov.c | 11 +++++++++-- tests/ref/fate/mov-mp4-ttml-dfxp | 9 +++++---- tests/ref/fate/mov-mp4-ttml-stpp | 10 ++++++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 444aca5235..f05254c9cb 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -2263,6 +2263,11 @@ static int mov_codec_id(AVStream *st, uint32_t format) (st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE && st->codecpar->codec_id == AV_CODEC_ID_NONE)) { id = ff_codec_get_id(ff_codec_movsubtitle_tags, format); + if (id <= 0) { + id = (format == MOV_MP4_TTML_TAG || format == MOV_ISMV_TTML_TAG) ? + AV_CODEC_ID_TTML : id; + } + if (id > 0) st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE; else @@ -2457,8 +2462,10 @@ static void mov_parse_stsd_subtitle(MOVContext *c, AVIOContext *pb, // ttxt stsd contains display flags, justification, background // color, fonts, and default styles, so fake an atom to read it MOVAtom fake_atom = { .size = size }; - // mp4s contains a regular esds atom - if (st->codecpar->codec_tag != AV_RL32("mp4s")) + // mp4s contains a regular esds atom, dfxp ISMV TTML has no content + // in extradata unlike stpp MP4 TTML. + if (st->codecpar->codec_tag != AV_RL32("mp4s") && + st->codecpar->codec_tag != MOV_ISMV_TTML_TAG) mov_read_glbl(c, pb, fake_atom); st->codecpar->width = sc->width; st->codecpar->height = sc->height; diff --git a/tests/ref/fate/mov-mp4-ttml-dfxp b/tests/ref/fate/mov-mp4-ttml-dfxp index 15f4f9b69b..2d60f3d964 100644 --- a/tests/ref/fate/mov-mp4-ttml-dfxp +++ b/tests/ref/fate/mov-mp4-ttml-dfxp @@ -1,13 +1,13 @@ 2e7e01c821c111466e7a2844826b7f6d *tests/data/fate/mov-mp4-ttml-dfxp.mp4 8519 tests/data/fate/mov-mp4-ttml-dfxp.mp4 #tb 0: 1/1000 -#media_type 0: data -#codec_id 0: none +#media_type 0: subtitle +#codec_id 0: ttml 0, 0, 0, 68500, 7866, 0x456c36b7 { "packets": [ { - "codec_type": "data", + "codec_type": "subtitle", "stream_index": 0, "pts": 0, "pts_time": "0.000000", @@ -26,7 +26,8 @@ "streams": [ { "index": 0, - "codec_type": "data", + "codec_name": "ttml", + "codec_type": "subtitle", "codec_tag_string": "dfxp", "codec_tag": "0x70786664", "time_base": "1/1000", diff --git a/tests/ref/fate/mov-mp4-ttml-stpp b/tests/ref/fate/mov-mp4-ttml-stpp index 7726cd332e..0a8e423449 100644 --- a/tests/ref/fate/mov-mp4-ttml-stpp +++ b/tests/ref/fate/mov-mp4-ttml-stpp @@ -1,13 +1,14 @@ cbd2c7ff864a663b0d893deac5a0caec *tests/data/fate/mov-mp4-ttml-stpp.mp4 8547 tests/data/fate/mov-mp4-ttml-stpp.mp4 +#extradata 0: 48, 0x62100c0d #tb 0: 1/1000 -#media_type 0: data -#codec_id 0: none +#media_type 0: subtitle +#codec_id 0: ttml 0, 0, 0, 68500, 7866, 0x456c36b7 { "packets": [ { - "codec_type": "data", + "codec_type": "subtitle", "stream_index": 0, "pts": 0, "pts_time": "0.000000", @@ -26,7 +27,8 @@ cbd2c7ff864a663b0d893deac5a0caec *tests/data/fate/mov-mp4-ttml-stpp.mp4 "streams": [ { "index": 0, - "codec_type": "data", + "codec_name": "ttml", + "codec_type": "subtitle", "codec_tag_string": "stpp", "codec_tag": "0x70707473", "time_base": "1/1000",