From patchwork Fri Feb 9 11:04:43 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Storsj=C3=B6?= X-Patchwork-Id: 46129 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:a586:b0:19e:8a94:b663 with SMTP id gd6csp851941pzc; Fri, 9 Feb 2024 03:04:54 -0800 (PST) X-Google-Smtp-Source: AGHT+IF2OnzcpRvY9miR7M0UXk8huUvSuhk2Ce7p0K6k0ksBErQvtSKsU9Rk6Vc3YA4T9SoblTOW X-Received: by 2002:a05:651c:10a4:b0:2d0:cbeb:69c8 with SMTP id k4-20020a05651c10a400b002d0cbeb69c8mr882607ljn.22.1707476694654; Fri, 09 Feb 2024 03:04:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1707476694; cv=none; d=google.com; s=arc-20160816; b=ppW7fA9nKUdkoJwJzlcCgPgzLinD8UO2apFmhAxAPCalE83vtRcHQAZkR/8UNJGS7A RSuwRfIbQhYtrI+jScKkwE7oOLkqurcp8xshiUnn0TFBC2+zgOLOqDzS1jzpJaqRplKp 9HCQDMIdvjyZWmM5ht0GFO3ktGeOb3mf4xLSUfhCYlq4bFvGLzWUgrJvFutkPcq1k/X6 fgAhe+8lZMWfFjycKWGEurusAPe8lor49CoYEHdeIYV4yoWdGn8A/UmQ2N56CdUBiQhw d9vQa/Mh43vC7xN5CxTk999FO2Igm7cnjv+iV7qo29e95jLb573LwNfZYRmApkO+zbyD zlnA== 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=xk2vmC2Dj/YM28MynhT8YJFhxw8dlgMESmbOQDiAGu0=; fh=mXLuAaxt+QEYmhh7BFdzVrGDTyQZ7RjVDXABdwJVyFg=; b=vbJB1x4+pJgmdr8uXlTTQyiOqZRUyyctyydUTpgNAQpHkV01JyqoQ66ZiLY6bLG5JT 3O70I6Q9SVkgv/uGlw1i8rne9ySRhZqxU0VqaEMiqxrjCfRZKzuLo7nxm7ZiUQ3SO5G9 2cXnmRYD1ZFWXck/9VioIwGMJxcXX2507zXPjfBmtAta175kJTFV3Ntob8YaqTk2Yx/j +0Ttumi5fdIjP9OwbfiQCr5MZfz3tu8JUPB0Ivz9yUPGFORV6qwtc9++tEiZulMYpA1C AkpFGi06kOSoPD++iNQvEY+q4tfct4RU4+qbTkQDbSon4rMtHDRmzpaF3RoXznn9sfSk ByrA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@martin-st.20230601.gappssmtp.com header.s=20230601 header.b=hJK5Ab3K; 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 X-Forwarded-Encrypted: i=1; AJvYcCV9y9G5Gx4eB+UvSrxOzcGxbP5R4kcSXRgCJxPAwy9KHPR87KpUsDLpy6QLgR900m5ozk9MOgt/o03Gi50Z0S291JAIfL1t8nU3G73pMEdM0kRI4eD9HsS0TykQVGP094tboKuULAXJy7AGsfXoeVM2ZDviRAoTgJtIWiJ8k8w3DR1FUMz9TXrdCbF4k7V4FBtZH+0Nq+Tk6/cqEKdAbVkqxKEbv1jv6ZEir1S7yPAf+5Thd0JwTDsR5vPLNOqr4GKzzWIF68x9BZNNQ8mKAGwLlRv42nWOzh+mAjB0hNxBEcfPzjzgNddp0uVua8856ruLGdT5NGPZajkDdYImvS8U/KI7RQuYNcAS2AI5jb22PO3o92SnKPmtbJLYMaC4Uiv1sM+imMzzv9AMcYBLWB6dWn2s4Rs/OVCFEtIK0gBubLd3paEx8lEIOm6/FtQOCqRD0RUdRxe6A2KlE+F7pATIZbxY1py1Z2yJMWxfxVSqqZ4WiYyM/PhVqLfW/jPwD7lXwxnlwRrs6b4VC5xUCpuO1gJyunfuJWBePxrToNaFyxyA7E4cTkC1cF4iGvrY0sl1kmHvmTCEpM9IV7EimJ7zW2IickfRCwg+7f6GzRmsvUuwqtzGtxC/1tbiLuazKm8LkZlaF7xU0qI2X5UeyvIoIF3uJCzJc70dzpMk/TV/jnfJH9zEGX3qihvEaigE8pcfUPxfr4ALx4yzjmYm/GkGHUP9xc3Zkjq2OPXqfClPCcnLs9OeIuqzyQQWXENh0cU6TjU3AHj68YK4tJNHMq/vE5snpdPunizHy3kzow+OJW1pdSK0zFykRvjA9ny7ajNYG/Z1aCfhToJ8uiZbHB6w/0APRIj0gkc8n1cgdBdEL+FLwQBDyG5AY0XtzTlAfJhB/WNNpdT4l64J+utyLXvFKDTSW6siR7pFPTpp5njOFXDcrXA5UVQOGM0wkwc6w2i56F NUp4pX7+XsXkG8s0x7B/v79UVuWNHuAEj2HnThX95b7oK9TUaweQm4w4B6TKyhKdjjnf0Qd6vLnMirxIBjS0go4DMljMvkJLkVbI8ADv6oDw/bN2q4lH5CHsePJNdyKw9WBXUBX/XprUzaZo8ctDFxtUoMcwRS29znV84PFwpzQAePvZtYdVvhHtWxz2LwxGpk535rosym8i0zbnlyNUQGqUIsyMwKhAoOQxHmwDqFsNay1OUDcyOFVf0eD/w0pGLaoy97fP+/+Wd7f9v/PlPrjPbKIAZGNs9wG6xJblYm2jyP1UIfFOQFs38kGVTNqhtr4BhwqA7aCldkcFK8ydJVFOTLzmiFQVHCrI8P63Tp3MEZoCmZSRSi5tMmBGca5psAwT/qN/vy1q0JXrXkvogUH20KEvFcW4HTf6iJpdl/J0SSgshC9QDGUr9u6Eb0+IuVrFMRIsd2/IOzc5d8z40MpMCYohCzqwFQbo3MTzYE8Ttw7VhY6Zyw36KMgFgAsIGs3fcuUqWB7Ao1u2XDDrDdZMuuhiIBZSwMo0NWzlRU2/jOP5z/UnA+uTR3vMTCPriw7/LFI9jWoLbJSvY1wldewCf/kmx7nc5W7mjnyeDH0Iswzr2W8h00I9sG5qHA Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n8-20020aa7d048000000b005610aa48609si739956edo.536.2024.02.09.03.04.54; Fri, 09 Feb 2024 03:04:54 -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=@martin-st.20230601.gappssmtp.com header.s=20230601 header.b=hJK5Ab3K; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 40AD868D0F5; Fri, 9 Feb 2024 13:04:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f181.google.com (mail-lj1-f181.google.com [209.85.208.181]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2882D68C7C2 for ; Fri, 9 Feb 2024 13:04:45 +0200 (EET) Received: by mail-lj1-f181.google.com with SMTP id 38308e7fff4ca-2d0d799b55cso12031011fa.0 for ; Fri, 09 Feb 2024 03:04:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20230601.gappssmtp.com; s=20230601; t=1707476684; x=1708081484; 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=CNCAYBCkGcvsL+6gCyPfAuMYVKq3UgdsWa4Ud2QYajw=; b=hJK5Ab3KeogqFOAjcgLvItlH2VLQehuwPtQLgoHrJChLRcZJpDeY4helAa7xFOwiA+ AWfkcIcDaKD7zux74UXyFbjBe68+OFwIj/5qkVf4SIhBJeLc7Vt1aK+pNbvLQ9dLh74/ bTkN/vRYr1/2thOeMSeU3GBf13dCwbXEG5ZboNlQyuHhFQKCY+Qz4b8FlvQskzzN5byP viEuTlF+Grv7fihxLiOTuOZmiX+OjwfgS5/RvnbgfY41MCJ05PbFONOPdfaEcyonSmSi kwM6eLGF9kzRv31Fa6tMXJxjyZfKo5Ld9c+kn64Dje1iM8EsZzrxowUOVlNfzBAL3trU neMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707476684; x=1708081484; 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=CNCAYBCkGcvsL+6gCyPfAuMYVKq3UgdsWa4Ud2QYajw=; b=hCrxd9oHV1sUB+qJRP+LwxoVnILeTcAcv+szsb6jVaZAQjURFTbq1jj+zmih+794zc dRxGrRLpZefyfPZ9C0HftYsTI451GLfr6ddhoLBZuG6UPXwccLAGIiaccdwNa8ytiNIK s++OlQdtWK8IRodVxBLoP+BaOqaZwZJ5snhDZw3GAm50RtlKZjtLHOnZieKkRLpASlnj EnpepI9AIm9Fv0Uyrb74LOuu50o9Ispg1Gz6RV5b/I+J8huw91+h9ELdIVBeCS3hGMk2 hJo+JflTvVh+GE4+2K1XtmrpyAvvo1j1E+RK3GMr2l2dtsHKZJYkxXPeHUU5BB+iid2V 90ZQ== X-Gm-Message-State: AOJu0YwROeMrYOEc/s/7WV2TE2V5NDlvVherlmUfItGBl0fssi4F8QWL kXTgjpZuiM1RkiJMap9h767hG6b9puQo2UPATkRSfUTvRxFPh/0kmh4M+axBFvRpb56Vnx6wmQ4 /1A== X-Received: by 2002:ac2:4141:0:b0:511:7abf:45f with SMTP id c1-20020ac24141000000b005117abf045fmr517432lfi.63.1707476684092; Fri, 09 Feb 2024 03:04:44 -0800 (PST) Received: from localhost (dsl-tkubng21-58c01c-243.dhcp.inet.fi. [88.192.28.243]) by smtp.gmail.com with ESMTPSA id s6-20020a056512202600b0051157349af8sm256610lfs.198.2024.02.09.03.04.43 for (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 09 Feb 2024 03:04:43 -0800 (PST) From: =?utf-8?q?Martin_Storsj=C3=B6?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 9 Feb 2024 13:04:43 +0200 Message-Id: <20240209110443.60688-1-martin@martin.st> X-Mailer: git-send-email 2.39.3 (Apple Git-145) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] flvdec: Honor the "flv_metadata" option for the "datastream" metadata field 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: +Wz+6tamTOSm By default the option "flv_metadata" (internally using the field name "trust_metadata") is set to 0, meaning that we don't allocate streams based on information in the metadata, only based on actual streams we encounter. However the "datastream" metadata field still would allocate a subtitle stream. When muxing, the "datastream" field is added if either a data stream or subtitle stream is present - but the same metadata field is used to preemtively create a subtitle stream only. Thus, if the field was added due to a data stream, not a subtitle stream, the demuxer would create a stream which won't get any actual packets. If there was such an extra, empty subtitle stream, running avformat_find_stream_info still used to terminate within reasonable time before 3749eede66c3774799766b1f246afae8a6ffc9bb. After that commit, it no longer would terminate until it reaches the max analyze duration, which is 90 seconds for flv streams (see e6a084641aada7a2e4672172f2ee26642800a361, 24fdf7334d2bb9aab0abdbc878b8ae51eb57c86b and f58e011a1f30332ba824c155078ca701e29aef63). Before that commit (which removed the deprecated AVStream.codec), the "st->codecpar->codec_id = AV_CODEC_ID_TEXT", set within the demuxer, would get propagated into st->codec->codec_id by numerous avcodec_parameters_to_context(st->codec, st->codecpar), then further into st->internal->avctx->codec_id by update_stream_avctx within read_frame_internal in libavformat/utils.c (demux.c these days). --- libavformat/flvdec.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index e25b5bd163..d898341871 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -627,12 +627,7 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, else if (!strcmp(key, "audiodatarate") && 0 <= (int)(num_val * 1024.0)) flv->audio_bit_rate = num_val * 1024.0; - else if (!strcmp(key, "datastream")) { - AVStream *st = create_stream(s, AVMEDIA_TYPE_SUBTITLE); - if (!st) - return AVERROR(ENOMEM); - st->codecpar->codec_id = AV_CODEC_ID_TEXT; - } else if (!strcmp(key, "framerate")) { + else if (!strcmp(key, "framerate")) { flv->framerate = av_d2q(num_val, 1000); if (vstream) vstream->avg_frame_rate = flv->framerate; @@ -654,6 +649,11 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, vpar->width = num_val; } else if (!strcmp(key, "height") && vpar) { vpar->height = num_val; + } else if (!strcmp(key, "datastream")) { + AVStream *st = create_stream(s, AVMEDIA_TYPE_SUBTITLE); + if (!st) + return AVERROR(ENOMEM); + st->codecpar->codec_id = AV_CODEC_ID_TEXT; } } }