From patchwork Wed Mar 20 02:07:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47244 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp119472pzh; Tue, 19 Mar 2024 19:08:22 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW/skj3+pNLCTNfY8QWkGjWtuBSmsoLoH4iJF9TTG7LHb6204mVNwW8e5YMDLLQxO2JEZFQgEzLsV+IciDei6zLlZGEOkrupIYf1g== X-Google-Smtp-Source: AGHT+IHkLo+4/Pcp9/H81UXSqxphR6L+85h5lfw4Ysxzkzju/gGsqTE2og5KdvS/7cVEnpbZ9D0h X-Received: by 2002:a2e:b8cb:0:b0:2d4:aa55:72db with SMTP id s11-20020a2eb8cb000000b002d4aa5572dbmr8033768ljp.19.1710900501849; Tue, 19 Mar 2024 19:08:21 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w8-20020a170906480800b00a46c507c122si2131177ejq.445.2024.03.19.19.08.21; Tue, 19 Mar 2024 19:08:21 -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=@outlook.com header.s=selector1 header.b=UbVVPzFR; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C524968D278; Wed, 20 Mar 2024 04:08:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2040.outbound.protection.outlook.com [40.92.66.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73F1A68D278 for ; Wed, 20 Mar 2024 04:08:11 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eJ7x/tcMj0Wuq2q9yqXLiOieFVS921KG2jixxdB2oa50u+lnyd0RUO5bKq+WVQYd1KchaGLjHPZCfIqZa2lt9zw4oyzA0Ealz3rBhquUXg9yZWaPGrc7BvrQ6XSiYku2QykxFIhbqMMYlT7QUbuLQuBInP6vzlmyO9KJncOUiYXEH7miqtn4n7HCx8dKtchvlghUQBTJqqwlYltlKNsZIVtH+H+h4WCXS89zlnO1vE69Z8Peb61CXc+fu9tjkN0rxQI6rxVrOImhQkGei8Qc1cL7D9vKF6ya2G/f5IqQyxNFKlPgJp2JeYT8nDU057wYcNTeMKD0ZcEvFMES+ualTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tUm8j9DQrlppE5kaOsAjS+WvehbqoZE8cgZKt2Qjmd8=; b=b9yjtG4X7DgiSnx0K7GPnJE0LykfXokuOPYNx7VvqXd9cxCCW1qcEvoLzBLccnTujQdkEgDiivZb+7Fyfqmh357iFQZUF2rEHkj6xzssB7xJz8FoWetcdsCEPnhO4CdqhNRhcc25aERrBh14g14cXvSTZpKAitfdH28CUDcmZrg6XRSFz2AXMDTUZwHNxMZljAy5F38Spgz0jUIhCyTbeIxobD9E7acZU14HrrIAh/zNsDPyolAlgVoLgcM2BNbcG8k2feS6nYavs0abv8bcpM7jF3hQelQd7UtHSuMEC433diVue85lyPmW9VGb3gKUmZB+XPfeH49VuzTy7N+5xg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tUm8j9DQrlppE5kaOsAjS+WvehbqoZE8cgZKt2Qjmd8=; b=UbVVPzFRe+L7lhkyCPJMEGFeTrnV4c5QrZTmGJfQsgep4Nx3qlsBCBOkiNu5j4nO0HDMo+LRYoRB9qwUF+qsPkm7f/m3v0Cb23Z5IiFTudDDKEArl243AOjFLu5och+zBqZTaZnL3oGPVDBJTkt0ntw98ASQ5vGMxjJfvSjQ53EOGkNnbjRkUtJlUiEwk+3f+qVSlx2OLXCANImS+55BW+JnPuzUn+yl3UkGtcWERaCniifSuhkRH4yTU2arsXqX/1v0W/lwBrnkafmw8jdn5Yn0tUlbUEs+Tn1Ezc3lxpzHbRjPek1NVT2IWFFcQICNHWbmLmBKOFhz5jCwHA0LKA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DB9P250MB0404.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:326::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.26; Wed, 20 Mar 2024 02:08:10 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:08:09 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:07:50 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [OY5jljeNCnLRO8GlgLwQ3PelIrw0leiuQ/9/fJ21E8E=] X-ClientProxiedBy: ZR2P278CA0064.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::18) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320020802.107280-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DB9P250MB0404:EE_ X-MS-Office365-Filtering-Correlation-Id: 999053ac-b416-411b-18b4-08dc48829714 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5UOvhy76plfq7JfhgL33pAgdWR2e+iwvgMT8B+y/woFDW+rH5LuFTKisIzEDlmGQIZDx+TTbRESPX9n0KrwrNZWB6BQHWx2epstHnyv51RGgS4Wj0rd7M+VYC/jNH2bTQ1VUGs0Mkqy41V4RccilBtYMGP75iwi200JuNyYRydebIQ1KuodXyqN1KuTc+eWYyTphqFqGqh6WVFAaFxHKUaF71warc5sgkVtlEz44F/qdTpARXgeBr3HkJDGNOWiw6OsfaWzb8FsDjbwY5dDBKFdkvstrbWs9kYTexAuWrPHS26VaqtwTrzFWBNla77QNdjCCFQq/AA9vgHd38AGqStiGlxgF5sRO4B0OiaHK6TwfhnnqcZ8iViO1faqbzrsPS0Kyxc0AYZpjfbf8xE4uanrR2/1XzqP27l0qsk0VoN3/CAxk/EC8ItScC9yMZn+bWy1THxVYB/Q/T8k789xkxLymzW7/EGJxJQ+VBqsVdUIevdhR+YuFPHXL8CFSHGozH2bpD14hs2pTkYozFx4xOiOiaOuIjhNkLhJ4EOhS28CQPvCPlKG7U0w7vc52thxdyVE41TM92ZbEpqQlb1hor/po64ktLovvbRaAaB3ne08UxIMwdj0Rk2MKy0cqPfd1TfEltIdjYhyYMdHaBABhrzh1DmN3TFhztRupBnzXhVuEXd1mfa8keWgbqs/ENhI1abCy7QVOGHeMC9GcEeNaNBCYBVP4WOZChSyfD71MMtDqg= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: v+BjsrrEZ/aif2zx91iM8MS8GYL0K0svj4uz191GhUAFOC0p3ssTAodk2gGZ3efElkLOl0GWCoTnLK9U7SgTy9TAQzgSFCmg+SFjwwP9F11MsOn/fh87ytCkGGyWEYuFh5M4590/d/DmtD2xvBV3dPizxo/2HeppxhLeDjdA5J8PSexWIRVF2ogwj8724g455T9O8uM8FZNSTp2hpMNOKAABY9hGh5OHM+yW5NxCnuy9Mt+TRGj13F8flc1T8vTYifp2MJs3NBNSIMhh+fE72AAvF1PrgOpXaFghOXqVScdxOgRmkSsI7cwXOHWaC+WAbHThbV9G34hR9IvQc7N/BLcH3GfevTLGVDWcJLCwPVnHw32ujgFtEKoGtGbOGDRZqqtg5gduLpzhw21/eyDUFXZc8zlDLwMRJCPmvrln/rMZNipux/mgg8H6uZhvGGK6DTaFz/BVr+VKhSYGS4J9dfxSq1yxtr5XoajR5rzCihYmfwcrPu/Xu+ireDSi50uVkH446Iwx2lY+HEuuaIxpW+xEWuaGe5VV/uNE4M194568sFYD2SM/V/XGSr6SbDYXoPZBTRCuqMGu0WdO8hbbR757ufyvDboWU6WLZbmKwnfAzV/F3ui2eO/NKQh0JdIg X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ++dEWYfF6/GfMTTHYHvDTCIHb6gm85bR+Kzh6bWBwhfwzkBmwuqkeCaG6w532B+ipvp+XgJDWf2id6wrhRJnRkDygdAXf1O+G/YAO6aSQdk6DANFpS4Ha5wPWSMq5DFpQ5DSPdOJf2I74xfGxqJTFCTnhY4+01bk5FfNQyjaf3TJKWvNp4+CalrVSG/XxzRoXDz4Ns4HavI0TX/QLiCT67pZ5ag8aNxeVGueWJXweVEPdU8HEQ3ApHxSngimegPpXundvl8s/+OcJigA5tUlgCCzyxFcRJLyPrCBGdG/h0Y7mXZxxjkOD1viKVaFg83k+fuBRGgEruOAenNu8i04yIHFKPmdJ6rQGx99ha9kexVgFOO3sBXWWbK71oh3uxtDjIawfPiNEhIY26W8HofwJAmxYvhGxlDMRPFFTwUHM9A6u8mDpaNHJYtkar0vO5N5Gk+6mMK/7TioW1FwG5pf523wTP4cmaRSo+ck6U5creye6kPKgQGXyxJsYCKo9bv3Jlkjm13tNJ/aS9NwdUa1AFHXpcze7TtgGsFSbZOBY/vJNzZfMh9++LTW6BUjS6pQPrEhQlaDLcUeEkxHCwx9fZKxiaHJ4I115Q6VFqC4JUzoo8usf1mvP5oKj8TToC5P5OiF2TfUKY0nYnAXAuKaQk2gsWLRAEXRfKhNjsbJdRPuFUSoNgZDQyuQED15c9/0z904ldUNSlOI0us+9/uWI3v/OqKHpB/c2cpZbDu9qK8E1HoZP081940TQUiL59IUvUpAIVnlpwWW6YFTRPKzO2cA2ehN1CBmXlJOvRaKkCJk2Y6qzz37D/1JN93MxKglGjKiAhTT/d7XynjZXPdQBJHT7y50/NW4xmJEsbVpm/bStDeRciS0YdsXpSnk/aObaGmkWtGqqkdfNzcTUWTDG6DXpAB97zOp/sr9hpcYOhx11uoS52TU0kpx852Q+AkQRK5fqxMitI8u2GO1tgGb5wQ2DcWos6reYPA9s5kfMbfJ6iePuU8CBhuhjB497DWV+UZCl6GXrLmSG7lPM6qUMcx6s1KWXjVkxjun0T3IABrdXV/pM6Y4f2hWjLXJOLOZ0R1pKLuVbU7JpPgmWDvd88dMgwsO9z72Fe7r0cDjTA7hzPgnnF8sU7DDxRaMO1qnnOHsB8uq+43ulxsiY6xKgOPtGoUOw73si7G0yfj8jfxg2f+zW54JFggXLT3SqCiEceIiLQMxhgLooaH5YmGSRJeirww7ouVBM9TcCyJSf3p6YOMwK5P63mmvHC6sjIvWjI/K9eKIEAX+nonC791OhQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 999053ac-b416-411b-18b4-08dc48829714 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:08:09.9572 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9P250MB0404 Subject: [FFmpeg-devel] [PATCH 01/13] avformat/mp3enc: Improve query_codec 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: hxeLarnNd8X/ Signal that anything except MP3 and the ID3V2 attached pic types are forbidden. Signed-off-by: Andreas Rheinhardt --- libavformat/mp3enc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index cb250a46ca..4a02a45069 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -495,12 +495,16 @@ static int mp3_write_trailer(struct AVFormatContext *s) static int query_codec(enum AVCodecID id, int std_compliance) { const CodecMime *cm= ff_id3v2_mime_tags; + + if (id == AV_CODEC_ID_MP3) + return 1; + while(cm->id != AV_CODEC_ID_NONE) { if(id == cm->id) return MKTAG('A', 'P', 'I', 'C'); cm++; } - return -1; + return 0; } static const AVOption options[] = { From patchwork Wed Mar 20 02:12:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47245 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp120847pzh; Tue, 19 Mar 2024 19:13:15 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU5MLigAeDG1/PhGWuFR5VGkS+i6frEPJEmskT9kkmGd50UAVxQFX5sX7jX5wxs/lEg/KkxTTFt8K5BjdUzC+tufFsGsazQlg5ffg== X-Google-Smtp-Source: AGHT+IHdK2OJTp5/4VIScCtMzeb/jcXLle2c/mBZxi5tKWF+F5C/t/YDnxWul3jOEZwao/9rV+/y X-Received: by 2002:a17:907:b9c8:b0:a45:b930:b3ed with SMTP id xa8-20020a170907b9c800b00a45b930b3edmr175745ejc.3.1710900795297; Tue, 19 Mar 2024 19:13:15 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id o20-20020a170906289400b00a465faf69aasi5733356ejd.920.2024.03.19.19.13.14; Tue, 19 Mar 2024 19:13:15 -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=@outlook.com header.s=selector1 header.b=EPS2BfN+; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7E13A68D416; Wed, 20 Mar 2024 04:13:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2057.outbound.protection.outlook.com [40.92.90.57]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5451C68C10F for ; Wed, 20 Mar 2024 04:13:05 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dwjF2EhWhooVEbL1hlzoiv9SXmfOOWNioenhMup0nVRJ1lVNUbcGCcAlRDja8y4c3X5yrAu/rq0HmBZGN32r49gLIs4tz6R1NTrorScF3FT23fmVCZLfXLrrqAPlWdAOR4K708BsU2rBe/a3U+Ln3vwmM+CsVEezc7creVKqYKg5nRzrCo5XUUFBxOEmOzN1atPTkI5WzWSxcOxad8TRBiuqm9wxa6LwMBiXT6Gw3lkQmZLDhkcOMxZJdnvXLb6A2zyNaV5Ltog766ceykpv2vK1fks+HPYhJpvJ+xsVwao8R3xRBP6TpT9AMWlO/b6CwOqjYhMhVvXa0Yy6AscOCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=81AMZS4q/jM2DmjgVtqakdmzO2prGHVnQYM3C/21p4I=; b=NrEt8vj7btnr6dlB9zoT+ZYsWZfNvuoZPb3E+RHGsmwY8iiNmXLNGFW5JsGi3QSX8FSF+ykOVkX5ljQ5YINZuZFpbIVOsYaL/7jvMG8c4X3VDt+ugH913PYjgB9uzJMAe7tD6Ou6FAQowcGAJg/zOWpDMwo2QjGGB9Ltv6J4HV7R7x3cpjau6Djm6LI5YwUZwPt6X2Cu83zkHoCm76frp1VwXvkadWbehTBRwIqCquB/V0Opc2PBZzeNOalzBBzQIX4GPNM/ShMJ6Uu34NOSHdCYYb7oAHPZuQCSICMu7L4zJIsOZJ6RBaASMg+1Y77O27gJod1rutDO51T7wP6Ntw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=81AMZS4q/jM2DmjgVtqakdmzO2prGHVnQYM3C/21p4I=; b=EPS2BfN+1Zc4a38Mw/Mon13MgMG/gKS8j4zwrWd+btbuTL8UyUkAh+It6meCHg9Hp62soO91+jUX7uEq1A0y3ZilgMK1u7p68vFEou60mJ+JB6ainih5A5N9ccZY50GIitBevnGLzXPN3x82Cub03qb64QfmQ4IGwFeix3CEHn+FLlPAy6MTYxQ2Kgw8EqPwZD1YIf22dEXGF/dzek+hqbxAti11QkPktyT3wAcgvyuojSgRt/ZYmCMuFRRV8bc0IIIhLqSKPJueLTj/q7G+lb1YhtuY/OdB//R0cGUBmT/RWgOedoOJ1azQTK5GsAunKHwta18aIZbl64sOgtMtFg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:13:04 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:13:04 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:45 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [nxX7byUWauxpJj3sY1AZGMV9YU8jVa/p1s06apkXY/A=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 0348b24e-8e54-4488-4ed6-08dc4883468e X-MS-Exchange-SLBlob-MailProps: 9IecXKUgicDMebWKmC/FVBR22WzGkd0ofmu5LIm1a2uGb/GWsp0P2/p4YWCknLt6snRH63cGuQ+CtJ96TA+uxusYC2YSaHq9cYVjvuZkQqB1caqKDzvmdRVR/EOxjr6dF1fqLp++AXV6QbqB0PXkKojr3/Fjh0QnghUdji4PVjcGV84KIPOo0d1z6171BxCPmxXEoYh9ftnGsPQonPy/KSP8A3auqCiKKSncOV/EagvcFvL1Bh/aMpjyPPQvNFNPJ/Xmx+gw16QCc1zRTFbVAQ1giseP35QPbYozAKLLr6TRSG8M+4BrZJmrGtyfACvzsQdWVfS9CKKs46H5854UAd9FGD9tZPH59pHk7c5ivBjn6i2wtKTNvCR1d303dVUvywWH8/MeKCQf7JSgQct5MQr4oVGcnUAekXEe+9jyNhS4bT10p1zAeAIS4xp6TU1FPwInY9jjDiwNNn4wYC6UqV+RyYL6pTXJrEG8YVz2ViVC2LkDDvhrl7iz7PblkiXpdTh5S1oDTxfVaWx/Qf68DR3Wqc1VfWe9LNjdMFglqI7M91RTU+hh4/iDL6qo9wKCOFXfv/lQfVPeOI7Uf5H/dDI5n2oTuEeZD2/iCLHxIwOgMC4twa+iAhk+IuBfwa+tIQXp++3+vzDahAO5UqWP4UGI7sEiWzPkcunL/jl1Yhm96OCKVyEGDp4gBgj4mQKZAmzQhvITZ8wpeoyxxGitVpxhWZYqNqZ+GNOupXhctXTfbo9vq+5g2A== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XIuPQurkqSUHJ2bhwhgsd58trxZ9DgmJFBo085lnSD0cFUXXjsVvbRsKjuitVD+bBGlUZstgiGV7RZhzJb5FocXbtCyPblwsCB034yOqRx8OcnGPoxJkHw8O+n+Nk6pZI3D2He4kRMwulTIiM59buQGa4VfzW5DJkLIctLqIVrbieSK/GB85ie3YIUOlxJArwxzcWlr103saW6aiPZ1ngYHKS33EJwk2h/ItTUGDqxE0bis5RQr63zcYOmoPC8vgj+iRnZwq4svthpBacQFYJTLdGZ8yi0wgtIPSE46C8ekAI2qyX+/uSjBbltp4sLNX8Zclb6UMMPe3ALMucwc1qNBBv2WT2YdGi8IAErB4fR27JnPF/xsxBYbmTn+cPUoRpgTSO30LhQWCz1p64V9gW5BX3Ysx6fwMhVbB1yfJYKHMBuRmpIOA8nTwIxhElQcFOdrlMGuY2Z+gxaM9S2AcVb0sINVSQpAC7bwiafnO2LPaXHh2xokO2TPTI7TnZ3yOkB6Zw84bpWyXpbzkERezBceKhtnkPcUW9eLCZZRkfi5/fLzekXsbLHs0ed/czzeqHK9qyzryTXbkiQWnRsyqCxPAhLoQQF2tdeOXDC6TD1etDoyTk/7VmTy7A7EHrG9S X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: trcm9r2n8x9eYKoMPH+vyNqefH3g+tUFQdJ42A137iyqV+4WZl7RLNr0FshqYfXYDYdDVDLc4RLtHH7wa60XN6cL9USPB06g5aGqmBvC2HlXGukCgaQNX8+cO5Zvpea3SFWTbBP31y8vfugxvZm8niwcbxkbSzQ/1q8s/adxdDVKIM3fjGHEDZCnVUdyCUOAg6eZ7YFJik/2p0G2eW90CVUC/i/uXrqpYvafUvNuM4PlKRJ0s2rbD7U4kS4yfhvOGDltwdmy6xU4kml566+70uATEG/LuDlEomV/mAu6/G6UGMtBsM1WRrFRAvncX7viQfSv9Q2+ZGIg+lTKKi4AT+yPaT4CfCxmrpNgpDSbGHzHGLrw+YrmjgvH5A/K4dw5tZz2V4M1aFaThimAKptJLbRbF6F7jXoBsH9JzsZ0EZET0Rr66LLyzplIycXKBKK+LzDnvPRKLVu6mscFGUXzcDolMztJJSWLUSXgaHD22BSY89dyMtZ48cBQU7wXa3KBXMLNQL3ettsN5l61ZVH+5UD6ngMsHhVFndKHorOSbyHGhdRs+0wgJ7or/RGffkGN3oD09AYc8wJovsJUrI0VtkphhYpiVkHZX6PDZgtiayYZJRXdk+nzVUG/JQIFQku8p5klhTUJ2NZjUguEpPA/Yhz9DoCu928OiHk1UJrreCBnX1aHxJSf6PGvlRuhqkku8X4xgvY1u/RPb3L6ix318+5/m+AQr4LrnA+/jpe4uwW+ia6A5hhDKo+PyW5c5dgfUJqh7wIfzX1a5UR5/7Y4Stutvc3LxJGeGGtbkfju2szMtACqx/mA/iC+Xoch2lu/Q0aupzLSMU1BWwmO7I3WmSZ8NIXmRxs7xsnhgyumqIdUP4WkLzUUqwdKOOqGrAuImptYWs0sU0ZaiPBOrtmctD5vv0W4SdKf52eWL41m0V/stZ5uahCLOXsX/gUmm4uxciQlQt7w2WMHXFFNzAKDGUTKU3dllgIuWqG8wQnmzcys8qOLsGtS1XD8I+c5BpI1B6JttvdV4/OLmlio3Gh6f/0Bp/2WdkebNC4EB5utqpK7dkxThDYa8IW/HwtLRcpYuSKc719eFZBfuhiUQf1/4je2TkKR86jyGElRPQL6RpZRi2SLcnz3waUgSWRR1vYGyVMFQY5IBFwimlDaDZruyHEHqVd1BpDteROfkxdhyyoNa4g8hCbGH0Xxht/IM38+0yW4aiaBSbJF6NZUIq/d06AQK35OLuu+3MnZX+lXQjD1BBuPRRxf8aLXq0+xt0Pu+sgFmzC2RUeYTBms5ONDjg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0348b24e-8e54-4488-4ed6-08dc4883468e X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:13:04.3163 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 02/13] libavformat/westwood_audenc: Use proper logcontext 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: p8EH67IxQg2F (AVStream did not have an AVClass when this muxer was added.) Signed-off-by: Andreas Rheinhardt --- libavformat/westwood_audenc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavformat/westwood_audenc.c b/libavformat/westwood_audenc.c index 84a871e478..46456e2ecb 100644 --- a/libavformat/westwood_audenc.c +++ b/libavformat/westwood_audenc.c @@ -48,19 +48,19 @@ static int wsaud_write_init(AVFormatContext *ctx) /* Stream must be seekable to correctly write the file. */ if (!(pb->seekable & AVIO_SEEKABLE_NORMAL)) { - av_log(ctx->streams[0], AV_LOG_ERROR, "Cannot write Westwood AUD to" + av_log(ctx, AV_LOG_ERROR, "Cannot write Westwood AUD to" " non-seekable stream.\n"); return AVERROR(EINVAL); } if (st->codecpar->codec_id != AV_CODEC_ID_ADPCM_IMA_WS) { - av_log(st, AV_LOG_ERROR, "%s codec not supported for Westwood AUD.\n", + av_log(ctx, AV_LOG_ERROR, "%s codec not supported for Westwood AUD.\n", avcodec_get_name(st->codecpar->codec_id)); return AVERROR(EINVAL); } if (ctx->nb_streams != 1) { - av_log(st, AV_LOG_ERROR, "AUD files have exactly one stream\n"); + av_log(ctx, AV_LOG_ERROR, "AUD files have exactly one stream\n"); return AVERROR(EINVAL); } From patchwork Wed Mar 20 02:12:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47246 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp120885pzh; Tue, 19 Mar 2024 19:13:24 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXtT3vbG16+R0XNsKDXK1m7BrnZSQmxE0u+lT32ATI8+OBoDO6jSi+AYTvVEwsguJKJ2cSfg0RFTWpBBV8xYe84zzHkfUTcyTprpw== X-Google-Smtp-Source: AGHT+IFsSpJcvSRc2bAWTfBcSiXcDN+xLYJzluWAJyVhf2e7xHH7rURc1WmAsJLmngJyCSTj/6Rr X-Received: by 2002:a05:6402:3788:b0:568:9934:6dcd with SMTP id et8-20020a056402378800b0056899346dcdmr12384945edb.0.1710900804082; Tue, 19 Mar 2024 19:13:24 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id fg15-20020a056402548f00b0056b97044aadsi1140679edb.511.2024.03.19.19.13.23; Tue, 19 Mar 2024 19:13:24 -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=@outlook.com header.s=selector1 header.b=p5kOOrMQ; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9ACBF68D43A; Wed, 20 Mar 2024 04:13:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2057.outbound.protection.outlook.com [40.92.90.57]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E6B168C10F for ; Wed, 20 Mar 2024 04:13:10 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P+QZ4U3z6pSIbv6bNIdv/eE+T4sYdQFJjyJs81vnTYUPISnu32hfiVA23N+hyfBrUyq4cXnxlI80qArVv1dsLgBStmDzeeJ03PAPj6SF/XPX8aUfLBM9AVSq0YeF/aY4Ohij/2wRItpUyVM3AZDLDxkkQnxd1sGIzQ0QCPVueoOpZFOwQxAJQ+Np8UrcCLc2Iy80X7dKBKfw9ybvo5kW/C+EJhUcRDtyg1pFTinp6xUZo8b0QiNsoaXZjToj7gpsl449kynGZzHc0ok7CZeGP+KilNlJkmGNiriJxu0XWcxXmeqT91a97L0EsFUj+Fh3VSIA+omufWbH5YiWSjmngQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=baFp4BhC1mSmbwoa9OnsSAgmFeD+EDU8g1SO3dmXeeA=; b=Z5C6FZqx5MR/MHKu2Ioxy0+x9jFQQ+q+PssNQAEQnjMgN9hOkZ/n3WNNmAFcz6rtDMEpJe8Uv7rXACH6p3/fX9qjrvcuuNLW5gbtF0S3tMbI8VWj4rF0Bn0jXAw2r/cxuWK1IMoAR9ni/H6gLavfmfIDFxXSfzGVn/0s3qp1PpOBdo05wRKfhoKaG6gmvJgvPkey0AzSACR2v20v8yet9MQKtUCkUvB/4lmHWf7UXaDBd81fiiqO20iMJ9p51PZvRmE4AMuThTPF7SX6m4PuhuPHX7C94WIaOqazdgscmoy6JzejUa4dg8JwjOVpkBjJF6GMAILJS7pInJjdTJOyNg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=baFp4BhC1mSmbwoa9OnsSAgmFeD+EDU8g1SO3dmXeeA=; b=p5kOOrMQPQVBOjfug45GsEsrIFr1bTyYPaCqINmMSqwqyNslbiwnIngJhAsjfqPXPP1OMsqYKxpDJGVirxaHxLjDM665FPy/FgZPYqcmUJqcD9noYhaRs3gMbUS+9kwjRGvTn2t076SyAUVS617QXLCasf+E36kVxOi1BAYygke1ncmVdUTS/EybY3sdAaesX8ekdvJD9oyS02D4w9M1hTfduz6A4iUAb9Juy7f24RS7Ui2C/G4oJcSjyOptjpAoFaUeQKK5jv1nKdLYlxp8xVgCw8SuCoVzmknseiMzDRPl2bc84QM46pf8Xgrgr2G5xFfcSAomt031RoL0UVsZkQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:13:07 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:13:07 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:46 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [zVcUoDrOQvhpmj2GngkrRmWZdgDk0igx6cp5W5rXgGU=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: b9d49296-e091-4770-6c2d-08dc4883482e X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5UTw2vpoVcBvCbpbIXVb8b54I5MD9vmx8Ak1Xn4Q9gdiinDqbfms+LYWRCoCqb7rZI7bJoWE1qDhQxnG4vSP/3ubaf+O8r1/De4WoiNefZLB3FZL+jD9NMJRW6c1Ghtd8AKFFbwEnapg5N+zOpgVq4mmgEHtd0JBca8snU91T69FEDa+PX6VXHXefq39KJpV5LTCk2KRDeFLkhj6OMwwKkF/3kwea83WjJCXjlvNkn7Y6bHZFD2s6h1DHl9PcnQytvMSEaE75gcNVV2Wccgv9Q2hgdcYpah5Tlak1oJMT8I4F3Ygw07K29OtxBpeELOoyEQGNoh9Bm3twQUaVi4WS6EyogaOe7HXd9uvxfKdr82lEXzne3j5+bcsOwtu5Nj+9bB4XfNLPbss5dYfrnbd52LPKFEVTYz5cI17zx1Cnl0TBOBgLrXTR2XYF4o2P4X/zWdi8z35qa4SqbcvFkqJwssCv9L38XJ3ke403fpP6k0qAUPYZHQAPFE9D1XFjJ0es3KeT2oZzidLjU6z/lJsnkwh2DzBcdAHmTFqkqpwTCn2LLuIBkt68ePDukoJDphzCy+aUjh6SJRlY1nHmZFwExe0nEo6tvzWOhIf36whQhNhx64K3031lHGNt5zTs4jraMaq5J4Cf3xsWbCEvCRx6e/YKk1VSWz9CN6k7fEa1mx0/Z7RDTOQ4zZFm8b0i7icgnCfCJSceqzkSEU0kDPU5lIal5VkKLtuUP5CV16XIXfZo= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zNrDQbPLayKdQhiVJh17zcMuIh5tJ7NC888zpjwY4zcsmwlBVVXN0Gx3pEsadWSPY/rfqZVKXs6lxfka6lWwj8wZOuoCbl+/hwr5yujnSG51L1jwLyb8tlbLJ1pT/ZGHhKaRYNo+zwt5giLtemvk4nxKGETkK2tQYIboZBC+J4/nUT9/GizW2Qk/zyTc6qgsQxLuZ++sCybUTOXPLyebkzAEioOMISS8EA39QRUK+LZgF/q2HYEAqscHJ+2yspO5StprjZueSsyPIk/P7eKoCsk+VK4bH4CeQWV1+ueCFGi2WvTGl2f9YkPXmjuR8VEieIqS0LZsmNGBLXoP1zmdtlrWLbzwG88Lqk5bz+ip6p9G92mAZsIku+/2Z785PEcLM2fXGZnBR+dbFLIk0oRNlCEKVjVcexqVCDj9DjKYSyNXA4ZDUQyQU4qyjYnl0LGgg3h2IneSKLfUmmVy5hV3e4iZPGid4RTSPtv8Aze4rQROJotzvaNV1G/nbgXY78FJfuDWEcgAQK5aI7y9X8idJRscUf4tEAxerYEAbcA1eRD27NIbQBlisPl5PfNOAyKOUmI3etb8uyl8lZbof57IOEw4q2fdmUfG/gOflPocQr/pItPXe8B9kHctdwB8Ibrz X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: b32Eqfab2juhkVbz5mz1l2BoNLCUKj2XbR0VoeJAelpeUugNSsL+aGsx3Z3yqv48uVpTDAznhXlUl9dtdrKYYJgxLvdFK9LQe5Yd2ujmKWDo5DMT9ehxRbTlNH3A3bt/Kz1IcoAV8pJOHp63NVFOEJJi8pQenyRpfnmqT7/GnCsr05E0J45x4o4zi+cnaots9Jl4HqOMR+rSUd60SH8XS7Jf79WNt+ELyNBmZnHF4ZVayYkozLcJQWlEYX9CNGtidZ6Ny5KG46V13R33MIzC+UL5Ux9VoF81NXoYRkb4wti1gca9/oQuHfAkIGcOhZb/+/oXPjWbAEpedMK9jwdwF9vterxVt5xaUIgGcuod9RKCTMwBuhBo1KWvvHPPLYwu9eGmgja3JqpiL2254eFqF1M9tUMmmbWG8QbavkeHKomgwsf1xX0ZTjWc7xmfsLpSUyrp8GsmiLkosxLNCcQtMdNoLbjqBwQchdbC8q25rx1uZrNtGdKQ9aDfiHaEK+CjHce0ifXINvW5k75ZS9i42+jjyqnxuYD+6SDvLDoGac/8B9lgo48TTsoNtdmCXjCwvJIYl1IOsXU9wqv9pDG0qE4taNIuaXqGNN38G8OyZNOz57fJxlHUdZ7+DxBSO/D5S2PlRWfFmwEsBehswnaYw7ZeWhgpXm9geZtVl5+shJn3a2QMelJO3xn9hRemB5ZKn4pLSpXgrOsKk58BUL35IQZ0QrxwKxJPo7NN4uexy2LwE64Fcmy+0+tqCuYePVni6nHvah5MA4YTphpVIYQ6D3jywQHS4fakyXOEaQ0FVpUkaw//GoEvkhP8HRlwMBLOqUgW8cZDml6MSVUHns12ie7OKKQhVy8jrJwJjMkrp+FC9FBbgJbI0rUFO0iwHPaS2LrmE4yOmtO5xeT0qFWzdI7TwxRLszyHaDkrG6pH2E5FVpI5BPttiQ7HiZKkLx+PjgGcvvbOEKZTA2QSyQDgpEn+TOHkfTo2pc/ZyZACUA+DsUgV1Pv/nEYXCpeZ3jY+cpiBzboBPNoiZD9Kkun2T9OVwHMpOsiezE0QMGFS2uAbelPCAISr94FiBif1jUywGjoCs/1eUc1PH8janNIj62RxjkzmJyR0xyHyFBlfDxQwqh68qOL6jnZw45rlg8D3EZ0cXYfjdoUsUV0xfbU13yXezbs7tdaEGUr0lDQijTKHQy5JITUwpNOTlswloQlgmTB5tVLwZs4XL3h05f3I+ICYKq2dlKeN+M8RWg8eBRRE2ygjNWmexU5bm6mrCXv34eAXKehp3BkkLhas/EFI8g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b9d49296-e091-4770-6c2d-08dc4883482e X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:13:07.0387 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 03/13] avformat/mux: Rename FF_FMT_ALLOW_FLUSH->FF_OFMT_FLAG_ALLOW_FLUSH 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: RMPGjb9/8wgj It better reflects that this is a muxer-only flag. Also document the flag. Signed-off-by: Andreas Rheinhardt --- libavdevice/pulse_audio_enc.c | 2 +- libavformat/fifo.c | 2 +- libavformat/hlsenc.c | 2 +- libavformat/matroskaenc.c | 6 +++--- libavformat/movenc.c | 18 +++++++++--------- libavformat/mpegtsenc.c | 2 +- libavformat/mux.c | 4 ++-- libavformat/mux.h | 14 +++++++++++--- libavformat/oggenc.c | 10 +++++----- libavformat/tee.c | 2 +- libavformat/tests/fifo_muxer.c | 2 +- 11 files changed, 36 insertions(+), 28 deletions(-) diff --git a/libavdevice/pulse_audio_enc.c b/libavdevice/pulse_audio_enc.c index 4955b3b884..3e2cc91f69 100644 --- a/libavdevice/pulse_audio_enc.c +++ b/libavdevice/pulse_audio_enc.c @@ -801,5 +801,5 @@ const FFOutputFormat ff_pulse_muxer = { .p.flags = AVFMT_NOFILE, #endif .p.priv_class = &pulse_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; diff --git a/libavformat/fifo.c b/libavformat/fifo.c index 2a2673f4d8..23e4149ad6 100644 --- a/libavformat/fifo.c +++ b/libavformat/fifo.c @@ -728,5 +728,5 @@ const FFOutputFormat ff_fifo_muxer = { .write_packet = fifo_write_packet, .write_trailer = fifo_write_trailer, .deinit = fifo_deinit, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index e5350323b1..2202ce64e4 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -3205,7 +3205,7 @@ const FFOutputFormat ff_hls_muxer = { .p.flags = AVFMT_NOFILE | AVFMT_GLOBALHEADER | AVFMT_NODIMENSIONS, #endif .p.priv_class = &hls_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, .priv_data_size = sizeof(HLSContext), .init = hls_init, .write_header = hls_write_header, diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index db41d3d1c2..0de4ec1dc0 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -3569,7 +3569,7 @@ const FFOutputFormat ff_matroska_muxer = { .query_codec = mkv_query_codec, .check_bitstream = mkv_check_bitstream, .p.priv_class = &matroska_webm_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif @@ -3606,7 +3606,7 @@ const FFOutputFormat ff_webm_muxer = { AVFMT_TS_NONSTRICT, #endif .p.priv_class = &matroska_webm_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif @@ -3636,6 +3636,6 @@ const FFOutputFormat ff_matroska_audio_muxer = { ff_codec_wav_tags, additional_audio_tags, 0 }, .p.priv_class = &matroska_webm_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 724a1eb673..127673a9e6 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -8239,7 +8239,7 @@ const FFOutputFormat ff_mov_muxer = { }, .check_bitstream = mov_check_bitstream, .p.priv_class = &mov_isobmff_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif #if CONFIG_TGP_MUXER @@ -8263,7 +8263,7 @@ const FFOutputFormat ff_tgp_muxer = { .p.codec_tag = codec_3gp_tags_list, .check_bitstream = mov_check_bitstream, .p.priv_class = &mov_isobmff_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif #if CONFIG_MP4_MUXER @@ -8289,7 +8289,7 @@ const FFOutputFormat ff_mp4_muxer = { .p.codec_tag = mp4_codec_tags_list, .check_bitstream = mov_check_bitstream, .p.priv_class = &mov_isobmff_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif #if CONFIG_PSP_MUXER @@ -8314,7 +8314,7 @@ const FFOutputFormat ff_psp_muxer = { .p.codec_tag = mp4_codec_tags_list, .check_bitstream = mov_check_bitstream, .p.priv_class = &mov_isobmff_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif #if CONFIG_TG2_MUXER @@ -8338,7 +8338,7 @@ const FFOutputFormat ff_tg2_muxer = { .p.codec_tag = codec_3gp_tags_list, .check_bitstream = mov_check_bitstream, .p.priv_class = &mov_isobmff_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif #if CONFIG_IPOD_MUXER @@ -8363,7 +8363,7 @@ const FFOutputFormat ff_ipod_muxer = { .p.codec_tag = (const AVCodecTag* const []){ codec_ipod_tags, 0 }, .check_bitstream = mov_check_bitstream, .p.priv_class = &mov_isobmff_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif #if CONFIG_ISMV_MUXER @@ -8389,7 +8389,7 @@ const FFOutputFormat ff_ismv_muxer = { codec_mp4_tags, codec_ism_tags, 0 }, .check_bitstream = mov_check_bitstream, .p.priv_class = &mov_isobmff_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif #if CONFIG_F4V_MUXER @@ -8414,7 +8414,7 @@ const FFOutputFormat ff_f4v_muxer = { .p.codec_tag = (const AVCodecTag* const []){ codec_f4v_tags, 0 }, .check_bitstream = mov_check_bitstream, .p.priv_class = &mov_isobmff_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif #if CONFIG_AVIF_MUXER @@ -8437,6 +8437,6 @@ const FFOutputFormat ff_avif_muxer = { #endif .p.codec_tag = codec_avif_tags_list, .p.priv_class = &mov_avif_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index b8efc535a7..d8c148bd3c 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -2415,6 +2415,6 @@ const FFOutputFormat ff_mpegts_muxer = { #else .p.flags = AVFMT_VARIABLE_FPS | AVFMT_NODIMENSIONS, #endif - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, .p.priv_class = &mpegts_muxer_class, }; diff --git a/libavformat/mux.c b/libavformat/mux.c index 772f300f16..a2cae97397 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -1208,10 +1208,10 @@ int av_write_frame(AVFormatContext *s, AVPacket *in) if (!in) { #if FF_API_ALLOW_FLUSH || LIBAVFORMAT_VERSION_MAJOR >= 61 // Hint: The pulse audio output device has this set, - // so we can't switch the check to FF_FMT_ALLOW_FLUSH immediately. + // so we can't switch the check to FF_OFMT_FLAG_ALLOW_FLUSH immediately. if (s->oformat->flags & AVFMT_ALLOW_FLUSH) { #else - if (ffofmt(s->oformat)->flags_internal & FF_FMT_ALLOW_FLUSH) { + if (ffofmt(s->oformat)->flags_internal & FF_OFMT_FLAG_ALLOW_FLUSH) { #endif ret = ffofmt(s->oformat)->write_packet(s, NULL); flush_if_needed(s); diff --git a/libavformat/mux.h b/libavformat/mux.h index b9ec75641d..bd3eb53380 100644 --- a/libavformat/mux.h +++ b/libavformat/mux.h @@ -27,7 +27,15 @@ struct AVDeviceInfoList; -#define FF_FMT_ALLOW_FLUSH (1 << 1) +/** + * This flag indicates that the muxer stores data internally + * and supports flushing it. Flushing is signalled by sending + * a NULL packet to the muxer's write_packet callback; + * without this flag, a muxer never receives NULL packets. + * So the documentation of write_packet below for the semantics + * of the return value in case of flushing. + */ +#define FF_OFMT_FLAG_ALLOW_FLUSH (1 << 1) typedef struct FFOutputFormat { /** @@ -40,13 +48,13 @@ typedef struct FFOutputFormat { int priv_data_size; /** - * Internal flags. See FF_FMT_* in internal.h and mux.h. + * Internal flags. See FF_OFMT_FLAG_* above and FF_FMT_FLAG_* in internal.h. */ int flags_internal; int (*write_header)(AVFormatContext *); /** - * Write a packet. If FF_FMT_ALLOW_FLUSH is set in flags_internal, + * Write a packet. If FF_OFMT_FLAG_ALLOW_FLUSH is set in flags_internal, * pkt can be NULL in order to flush data buffered in the muxer. * When flushing, return 0 if there still is more data to flush, * or 1 if everything was flushed and there is no more buffered diff --git a/libavformat/oggenc.c b/libavformat/oggenc.c index 69a66f586d..bdd19530ce 100644 --- a/libavformat/oggenc.c +++ b/libavformat/oggenc.c @@ -777,7 +777,7 @@ const FFOutputFormat ff_ogg_muxer = { .p.flags = AVFMT_TS_NEGATIVE | AVFMT_TS_NONSTRICT, #endif .p.priv_class = &ogg_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif @@ -800,7 +800,7 @@ const FFOutputFormat ff_oga_muxer = { .p.flags = AVFMT_TS_NEGATIVE, #endif .p.priv_class = &ogg_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif @@ -826,7 +826,7 @@ const FFOutputFormat ff_ogv_muxer = { .p.flags = AVFMT_TS_NEGATIVE | AVFMT_TS_NONSTRICT, #endif .p.priv_class = &ogg_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif @@ -849,7 +849,7 @@ const FFOutputFormat ff_spx_muxer = { .p.flags = AVFMT_TS_NEGATIVE, #endif .p.priv_class = &ogg_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif @@ -872,6 +872,6 @@ const FFOutputFormat ff_opus_muxer = { .p.flags = AVFMT_TS_NEGATIVE, #endif .p.priv_class = &ogg_muxer_class, - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; #endif diff --git a/libavformat/tee.c b/libavformat/tee.c index a101fede5b..9597137ec2 100644 --- a/libavformat/tee.c +++ b/libavformat/tee.c @@ -614,5 +614,5 @@ const FFOutputFormat ff_tee_muxer = { #else .p.flags = AVFMT_NOFILE | AVFMT_TS_NEGATIVE, #endif - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; diff --git a/libavformat/tests/fifo_muxer.c b/libavformat/tests/fifo_muxer.c index 032af07dc9..222761fed3 100644 --- a/libavformat/tests/fifo_muxer.c +++ b/libavformat/tests/fifo_muxer.c @@ -159,7 +159,7 @@ const FFOutputFormat ff_fifo_test_muxer = { #else .p.flags = AVFMT_NOFILE, #endif - .flags_internal = FF_FMT_ALLOW_FLUSH, + .flags_internal = FF_OFMT_FLAG_ALLOW_FLUSH, }; From patchwork Wed Mar 20 02:12:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47247 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp120957pzh; Tue, 19 Mar 2024 19:13:37 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVIMhG/45o6EyFZPjiX3+6ChM8siRQJTOAlrO4hhU51D53mTUnKEfP0S2sk/6aO5KoRm3ffMhvsk9RjFwokk90La9fvQMQnGNZrvg== X-Google-Smtp-Source: AGHT+IFzO8Uw/vNDHnkJX47zV8miWsXXtpqXnAwIm7iQHIJyFSTKseLlIFDW+KPMSB1n/nZCrU9f X-Received: by 2002:a05:6402:5487:b0:566:806a:6f9e with SMTP id fg7-20020a056402548700b00566806a6f9emr3033066edb.28.1710900817058; Tue, 19 Mar 2024 19:13:37 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id fj5-20020a0564022b8500b005687137bdbbsi6221403edb.457.2024.03.19.19.13.36; Tue, 19 Mar 2024 19:13:37 -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=@outlook.com header.s=selector1 header.b="dh//tnO9"; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1026568D457; Wed, 20 Mar 2024 04:13:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2048.outbound.protection.outlook.com [40.92.90.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EB05068D387 for ; Wed, 20 Mar 2024 04:13:32 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KDcmaWwA2oSOUGNdgCPqCssZcULfE0el6B4rsx7FHk67WMQArQbfWKtUDHZJol0NimFfqhcA6Ov20duDBLpm5N/pXF8I55YebOooIx2u/nrPH934qXpKcuYn0AKqiK44ArrQGB1StWkbzJ/zzRe1YBCccVsLseoz5rhXEM1zahQrHnGwfKUtbokuuyk6lSBIT56Sg0eR3qt988ynjUL5C+XTJlLxC9raNrAlU5RJs7da9oMJFNFny/w8wspsqjJF3lmRIra9tC16V03o1Ys2B/luG1GYP515hnQKC735qbfaqTUE21Hfe54yjCpRUrnNoOn7msVMAsCLMuBDhYOckQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=H9z9N01s5sLmyL0dvL877PwvhoyL+cxFrAdDzuPy7cA=; b=DCJHVcft+LnsqUV4i0XD7InYdt6xp8Avj+NKTqhR5+8YTvzfXZ60bRjpQXFFte3GsblJMz2yBY6P2jgElxenHxkYb3+FL/IXxsNyNlPZYr798Z2lvl9X5hHHJcvFEx50ckF8yEsMUTWzVAA5fwG4kM2g280MTzdOTBLKdkItQhTIUqWTk17ChYWQJj/langEWsnvp+guU4Wn6ANXrW0t2e/X1rn68mXBDDFishMr9W6w08fHMefmzCEvRIm9E3t1tYcfhKyry8Yda6sr6mbWrxmi+yCd0Cef4WvGCEPXN6kGENRqsbij6AgNwToE1iCh+BOboplJkQsFHYTBELzl3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=H9z9N01s5sLmyL0dvL877PwvhoyL+cxFrAdDzuPy7cA=; b=dh//tnO9n7GtoPAWXXtMM9K+cDLJR8UaV8/8daZwyigDCpQr/7uQydKf+i5p2kQPdJ7w7TAlQFGb4FVT+b3tqzWZaU7fn1o+zUDFAGk/pJVfdZ6PyHz8LOWSomLqUCrcl0vM7KPMzwzz5e6HRgcf8CieRl/tHuxVdotgq7VJmfLV5gfi7rF4lgih8Yy2wXhKAoOMhDCQt/DApj2pJRgOYKQQxsx+380+D3edLlqm1bv6Kx0G/kUCBbscIFwiSPK3qdQl8NhyCrnDGREamJLPMEj9+Tmm8S37VXGr+ue9Et7q5BAYbc2Ta7r53NjR+CZQfHKGupC32olA/gX6FwnMVQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:13:31 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:13:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:47 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [CqCgAo28Lv1xOEWApnJn/zN4pMYhx/X9d6DPgpm9Xgk=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e1df611-77be-41f8-194e-08dc488356ba X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5Ui/3epQTEm7+196tsT9yOWsc+igxmUS6p+otGhsyhFe3K9MhJM/Tl/fAYhLyJVABQ4TUKNX2SihASTF2xoV2Yz9A1ykphPtJUA0EdoLHxml47vCfZ6H7If6/kl/MGR6hPJZqNyCNzuSxj8Rb9KcKfMwp4HlWcM12VQ18K9YzFBVhDQqvQztXTt15U4xb6aqEcQ6jGI1EAHkLp9boLVk5u3pAFzgNZpSvH+vXvukBIiAtYw5dQL6K6ruT7ZEedHKEM5j4nh3hvu6ds00yf+gd3KcbOKojEUQPAbY2Gc1HjviwiTksPno5nS4cRIcCdcBygiUK/36hw5+fFQRysHkC3cSDuprYT6Gt3YDm3F8azLVXUnUIJpV/+6xlhdSPn6PdMnYKnQOSWzZfZaZ1pNzma+XMlE0NTYgQWB+2C3KA+O7R0k57a9jFd0PfgLhfXQu1LU8Iljx/UeoWPfxx6HHQh7uLVnXYIJCzAc5guh3zovLreIoLCE08TS+uYU5i1Xy5vVY6mjOJaJ4xHIMUhfwKj6AW4IKzsnGHfSZqQovQQf6kgruiUwf8mMnXo+g+GretLWjE1ZQcshj664xQ7zd94d6dXoYS/dvKdjm6H68p4e9XxhMHaCzdInpazd4HMfZ1yJONN06ibafWCKU8swSiHZ6pZ96oAHd1ZNKg6uaAXJ4SeAUaakofqIxQ1sGXk87SJ3oVmfPTW2EdVl5sJFs3+9UVdEAF9D261fhPsJeecrQA= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Fk42gLSaEAwhewlL6LXF3JhOySWB61dY2JZ9AdwTtGDMpkKilrIBF+QCZRkL480xlHdwEdk7mpG/SljpSLhUAZGTg2i2PQVFPpNDq7/ljTX4ZxvAyHeWY5BIQVdSu20m1ERW+zjN54lw/ANrnLTd+d0JgBqdBl/LJFkm35U5lKwEBzBZZq0FqYkKZKqGp0yx3f7loh8xqNNfwRvuYb8KQB9n5fRug0VvW22UhInrwRi2ijNlOTKmk/lWiLHIVnXsK0T19DPJkvkCxQbWgm+WhAjCNLHTsviGDDUFpuiJ2RoqjrICfJULiubWgQpgo2fggo+MToQHrN2UxcCLewQqVdqroz50cMjxf09RGHDgbPpLw05JMw8xNytOnm/5w5wv9Ahwe9rTVWd1nrmSgB/4G0owmNhwI0YPhkhzg98YN6lQPXRMFvHGpJFSzwGw+GUCz/icWG4Rlt+LDn45l8EI2pfdcNB31v+X253t6YachVXJ8iEw5TeoKgQtBBQ4Z5xBwFVthtsPC7a5w3cK/EWlukXigozCQlAdDlLk/ZyOnuxDKZo8oKK7wgzAj+P+qqmRYJwYhiXiJNG+t0EWeYByYWWPQ7w1BaSEIBAvIChh8Y0= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: v6eISh74fbyjZr775wplM0nkqKSWE4ewrXQxXIFBPcIQkysURvvefi8RDc4eGHCJQftksYjSZfAQiQZhso4VgmwBkFhL5ZQauoMHRrxr9pihETOQ4+YPoMoY0Ltc1JZcixwzxN06ikPa/4ysKEjLu/cA8OMWtvnKOC102pKe3cxprxSGGwclhf6yQzb7o0auyOW8DRzDVqMLGYAfZDGD+bFXwuWDmmuv2Dkt6T6ZkIHbSJAPxIUcwn6izp4XJV20zJSAmgIn0OALBTE0jVg71EQ16CV/qwrw1a1f9pyZfgB1GMSgxyNfKwF6U44BJfI+7aRgEhWQ2R9gXf9zA4phSBO3tOpE2Wg2Jeb8MMr4G+hBnXRhReUzBhFJSaUt2n6kDPsQXrw/MP7ZT+yCVJkfnVgkGmc6osBFM6fdbcnUDlgyR6wEmHVjWDsr6hy9BassPrT2KERhU50huBuucUbBmrnmKpDi1T5286rhlKZjaePCMaSetwSyn2ztONKOArNjDaWkL1uHws9J9648rrJX1rId46noUZyvWTriAlaQ8918ekwKqDMx9PJceLGcEmDt90sAiAshlTg6GSXXak2Qbi8sFXIHWBrkx1kQ8a2PRltL9zL540pWL2UWmmelQb/RK65FCJUD1AXk2929MJGGNKBSI2k8ac3Nvw/9QlByFVxh+Yt6HNl5FARmVZ05+7Q19hTwt5TtyG8V/EhRJ5f8Du3clGqxy2/6IItQzXYzbFDhh6Y7wpcWf7OTYiNRxkUGmWLTpvlcbKXK7BD1SbMXTFSQXCQ4Ui635eyDo05CWD+3LN8owCcAwbsuX1u9bUUzvxtHUByI03A6jXu1OuQYF9ZZe/unrz8k+M1ZYWlp/dLbGYJWdindk4YC3FgqJ1C8agDM1yW5Hvf1scCzMFY8SfOmWL57nwu33UtTGwdwnFRhg4kZS78aWB3tsU5q3GwwitqyipVDzdaaP7suoGa5wiHwtn5dXfaXhvTGpab5ZKpGARaYIYW0Z2PH8O4rYMZs7EHroKEH7LlfJEDfioIKl+8oBq2ppxOmYy7TBJ4ygWCv91fylolaSVq6eMamKJmKUF856mfFpBY4asQAHxP/dHOlwoBd6i1w/UsuCDDf+Sr4Hw5ViWAKD2Am7GdrZz5djiftzTi2EU0ASlbzmr4u8hvnzPwxWfDLi6k9CYQoA407CwhJD7r++ABWosin628F7r/jVEWbXOnAjd4nZdZ4pgMvqMzst9SPwmJsDrznNYyKo4/9nGYyE3O0VXw4Y9UwWLfEAAKtTMJCMpamvnQt1A== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e1df611-77be-41f8-194e-08dc488356ba X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:13:31.4910 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 04/13] avformat/codec2: Don't allocate Codec2Context for muxer 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: RU4FxYhnT72M Only the demuxers use it. Signed-off-by: Andreas Rheinhardt --- libavformat/codec2.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavformat/codec2.c b/libavformat/codec2.c index 4a3e10c6e3..9ed57af0a8 100644 --- a/libavformat/codec2.c +++ b/libavformat/codec2.c @@ -318,7 +318,6 @@ const FFOutputFormat ff_codec2_muxer = { .p.audio_codec = AV_CODEC_ID_CODEC2, .p.video_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, - .priv_data_size = sizeof(Codec2Context), .write_header = codec2_write_header, .write_packet = ff_raw_write_packet, }; From patchwork Wed Mar 20 02:12:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47248 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp120996pzh; Tue, 19 Mar 2024 19:13:45 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXxYdr5qt2xlKRGoRoGhEaND8QCw0taeE4SR2wjG6bMZwHY+7LZx9XOzhXiFHaAfyzLZ1FlgobwdeIj4XkgQ7nAuMB1LrrNMFp9mg== X-Google-Smtp-Source: AGHT+IHTDLBcGqdFm/K2Feo09VMp6p4LMsg3CK5vARJWdc3EApZ2qu0q6+jRn9VKnQIMrRDhrKe7 X-Received: by 2002:a17:906:e15:b0:a46:a28d:2f49 with SMTP id l21-20020a1709060e1500b00a46a28d2f49mr841085eji.32.1710900825684; Tue, 19 Mar 2024 19:13:45 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id dn21-20020a17090794d500b00a4660b6aedfsi6254454ejc.693.2024.03.19.19.13.45; Tue, 19 Mar 2024 19:13:45 -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=@outlook.com header.s=selector1 header.b="e2W/+Y9J"; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 37C8A68D468; Wed, 20 Mar 2024 04:13:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2036.outbound.protection.outlook.com [40.92.90.36]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A41B868D387 for ; Wed, 20 Mar 2024 04:13:34 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FU88zEyXZy58mQxycjnkv4WCmi5z7gNUC4av7gOqx1LWndzNbi8zuyXmbO8xZoQabFSJ7qmhYe++lEyMyzOAp2WtB88Ka4OaUUviMkLLC6j0IQIIJRs0jJSUc2qkZojsag2+ljjyzZHtgOPGV5usQq7s+72ca4kMp6o27tOxxjCWJi5v3T1/VPjhuGS3/6J4cHDYG/YeeHJyLX5hucVMLbs6W5rLUcxUUAQiuLduKwewQc0zJlhXKB5QIn3ZzhKyOiog9YFJDSkco0RTJV/l7YgBTmeyEHguPABwgQPuvti65P1CtXC3P8Wfr6mdyrXABYP94qV91sQ7uUSZ8QrKOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fOa5eqiX0uIyGbSmUqADh/X/9bP8w4NqtsLg+0+aN6Q=; b=fNQKDIb4BcdvXozr/UIC+iNiNxbvIYspTVpLjR2Uqf/B2lL4wTbswQtpLoH2LD+bR72CuigkLOcBaabUWRTpHJAwR//31dBD5EtzObCdirc6nJgl+nfsgePwzzhl1SMgrwRP+cwLFPE4anSyENSltwayNKyPgRRDItPeAECNFJ9tNZ/JnmUDvn4aKrbVu9Y2WnAHrT7A62/Qy4036yZW9Y3gO8PGi8CU7XOYgdCgndmXhS8YSeawlkt63arGkyyhvA3dr8FutVTlqrnjFJqlAsiudFH2V+4GHQ0FJUwiXQkmQw5TpMQM5vyDB1HSn0DsbBiUR/RZ5wJ+8gXJabHR1g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fOa5eqiX0uIyGbSmUqADh/X/9bP8w4NqtsLg+0+aN6Q=; b=e2W/+Y9JeUX50f1XzyJEhyfQoPkGVNTr5ElG7qkmNYCPBdbqlNb2Bxa1hJyoKHzWVJ3CMJAi2KNI1s6A/99KahClc52MTv+gFJ/fXhax/4Wy9UQcurmIB4bOijkrA/S0oUbXMvcbU9IE2f930zT86N1YMTLQve9VgpsU0OT7oW1ZL3G7kNCZwImLNPaY2s08uDqu3ni/5VUwi9h33DkO8Licfl44O/KmcYbpZpcUMMqDb66qTFeV3x6EHc6p99i4uk07tpif9mJZ31+rlppeU/KGiqu2mQAVu1AFogIyt0vINJLeqscf1I9h21Cl3s7GKcBlvkrMXf8AcAv64ruvBg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:13:33 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:13:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:48 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [SJGIJQLvqBEnRnb1tVUxpK7i+oc57SBI0OTCNuwYwzg=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 194b2520-7984-409b-a892-08dc488357d3 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5U3SLUWj9SYuQSXEAdv3H0RMP0koEQqn0lwYMxsiBDfSvMq7oXeDdrFUfcrnmMimZAWGkW4ZFXc9Oab3TKMoNmXKAeMvy/sn9eCb3fpVTQm0t8jmFZ22MleCGu2cgTv3ez8vpVlybOTTG+NkpcneNjHc6lC5/gfZk0LmbIbpEH6+oNfSzmIOWT0v0jbUaiCGiV96zNNhhHbLTdUb1vzHbkvkZy+AcsK+w24c40QYAm/oXQlb09khIDTjxwxBvj4qkMhv1OPgdSfkEYkjjS7WOfCi1HuJw+cJrfLpPjasWqPHAfeGX/x6Eg6Hka4AEFHtWF+uCQXiK/dlyB5xK3y/ZtRh1n00mcd0BH2yGri1c4W60i8CmDBXTRFhg+tr/X+0ynYcAau/+xH7UmIJZxn4icpPPit0FEbcen0qBSxJhbEgT1a5m4T42m8FstlPwMoURN8TpsuNjbAYwXwL4go0PFHIPWmGAQAo6R7tkkiT3rbheDpMCuDWYC+70Ittklmj5/sGMf+DGmZr7FXT4TY4TX0wLOvist8qVawWjO1zYp7jvHn7v+0YLRxPj00dizOOeo52BGk8TUFSF/qFV8GSyKgKYMw4stZQg8BBL7RLMIjixv8YNhK0wbp1NLuD+cX9L+rted0bOSAx2YJFsLfRyPa00R3qGnoChjCTJSAXh6MOuhmfh2ixu1SjisPKESPumoJyNbWW2DSv57uUeG0oPdDkMmzP1Bj7NJrS+YeehVea0= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2Lr4TGO98P2eZH76bWQIkN8KOtO7lzxFd7UskaxuUDAymakGzMnn6P8hD0rQJCItLIVC6buhI8HNVHE2JTTKbCdza/nhntaHe/Xwnm3msUj8R3l8jOArsXYP63pBF0o7AmsMAwLQOGSxwt8Hb2PCs8ArYfpd8Ia8MXi1E3AS4PSgEHuK99zSXPnCbFYmh1dtRffu+Rs8TPFb4naN8lKg0lz4HFdiGABauQxer/QOGakjUlMi/s/dj2dKWnXTSC6ure04wsgrjXmnT1xtIhto3PKFAtRIdDBD+YZKEZitZtA0MYsQT8/TTaAcBVr3hvQSh0KQYf3A1i9kojOD0Dh9ZdoC2MPS9ETjGvG7AwObk6tlV2VmyT24P4ux3dWXzEUpHt7GmE1PjhCgpgihXfWajRW/N6ySTb5uKlqxe4tZgmk7gxT2+Fa8riqKuSbL2G80jRcUxsSY4rsxoOCbMcOKv+4MvjK4KkL2Hta1fl/IbqH5yIsVC5+dHn0adVx5VKE8SMcQCmD8mWgPbq4BiCCFd4Ho7yGcK3/KEIV0ULpagCgvsxO7xV67DBP6n+4TmVuTrFUwtqaO7ivdPw2VH/BlYVuqygB2M4/XRFVA5Uem1jemVycaNk6iNb25n43m0l85 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IQdQxOAOiYDJvyvqW73mhTD5KlO7GG3DZV5mwgGRuRU1NOYQLLzrXaR2Zy8JOnmuTr34yygRcCeKaprFQqI8naDCRIYuPjEbxWLJyEXdlWcUhwRGVRC+Us9lqwtWq6IRXrDXJwrIsVqjo2G1E5cKmRKJJLPStFyPf3UGwyq4TTXPd/jKXrkQw8ARhYlAZ+ctartiHeiEutdagR+rtI/UllEORFeaMUb5anUaoJScc2hodn+0aKaVW2a8afX6ecNQE+UyUz9zXlkH4UtTVrjy5W7qXbiBKlXhFP9L1T7vXoOTIouDoZZ/YC12R//3voP7buT9iUuSkFznwXA5SSApL/oesWYYqjZ0u24Q5nG0jFQzPEPRvGPgAO7lCxRw5AknqTsC7nM7TepcdjzAqXQMk71Tr0hpFqnztci1ZEUTT7RPIvlAkYA7V0IZt0Nu20iLWNAKRiPC3ywGQZZr/e2x/t5z71BOp7dyK1Fe7eh9jN2XW4OB3x1lsv6vHfaeBZzDvhWMad4c6rnNlqIo/ZpwcFO4IWOX6puwkaJ3vg+sFS8vQldMxJ9CGWix96g9RXRQ9V3lI4IDh6TvbrktCKy2EIyg47MXjHHSkPnb2J8s6Vl5KhZfeivYrdObyG64atvHN/Znvv01DSJpPGZGJ+ndFXMWSQRoKjXXy/dI4lHMQIWHVIUKD04nJYYs4J63ltJ7g5PeTgTF/tDAThqFJOhMVnZVLVODFLOqtsGCgAXr59knEEvJSvRkn4v9Zr1fw1/GYNedtb9cDjKCDUZProKVxE7WS6TBMbFivR1XL8QFTxKZ3Dps1Or8uGVPGKk+H/lrg9fjWa39mjlYtxf1GxiU4bQtCaSKbuPmDIAwItbxw0sqvBps71CaO20Zps6yUaemoXfe3TzQBaADa/JNzMy/XK9eXY5k5rx5d43QrHWXbGVYyRkJQPbA5/hX8KP/XKRFFyk4xiWjg0c27lZzRsHs2yTH7bCHjAjMgPIp9H7NlGQBWZ6PXSghliD+J+hq4YbqzyOroF1vXWnWHQ24AoZ+Iu4cWZM8p3KGXVMIDjCR1TDjL2SiXUESYs3g6KReA9DOOp0WnjlpmiwllYoxJ4MATr9EsGKHnQRee3XFay+OPk8IQUE8vLHKQUG2iiZ1bvOvgXQiR30Kt842QKgo59mV13yIGigkkEbvggJ3fu3kopfBm+ISbN558DWR/Fu8xOpJH3ZY9sQXCP9SFB1ZYB503mnUoWo1UMQ1EJO99yHcgEBL2GFg8E02AoAjiRIMe9KaKIiAO/sg4Eo4GA9CaeTbKw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 194b2520-7984-409b-a892-08dc488357d3 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:13:33.2923 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 05/13] avformat/amr: Move write_header closer to muxer definition 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: KS5bQNZ/NZED Avoids one #if. Signed-off-by: Andreas Rheinhardt --- libavformat/amr.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/libavformat/amr.c b/libavformat/amr.c index 85815e8675..1b80810302 100644 --- a/libavformat/amr.c +++ b/libavformat/amr.c @@ -51,23 +51,6 @@ static const uint8_t amrwb_packed_size[16] = { 18, 24, 33, 37, 41, 47, 51, 59, 61, 6, 1, 1, 1, 1, 1, 1 }; -#if CONFIG_AMR_MUXER -static int amr_write_header(AVFormatContext *s) -{ - AVIOContext *pb = s->pb; - AVCodecParameters *par = s->streams[0]->codecpar; - - if (par->codec_id == AV_CODEC_ID_AMR_NB) { - avio_write(pb, AMR_header, sizeof(AMR_header)); /* magic number */ - } else if (par->codec_id == AV_CODEC_ID_AMR_WB) { - avio_write(pb, AMRWB_header, sizeof(AMRWB_header)); /* magic number */ - } else { - return -1; - } - return 0; -} -#endif /* CONFIG_AMR_MUXER */ - #if CONFIG_AMR_DEMUXER static int amr_probe(const AVProbeData *p) { @@ -268,6 +251,21 @@ const FFInputFormat ff_amrwb_demuxer = { #endif #if CONFIG_AMR_MUXER +static int amr_write_header(AVFormatContext *s) +{ + AVIOContext *pb = s->pb; + AVCodecParameters *par = s->streams[0]->codecpar; + + if (par->codec_id == AV_CODEC_ID_AMR_NB) { + avio_write(pb, AMR_header, sizeof(AMR_header)); /* magic number */ + } else if (par->codec_id == AV_CODEC_ID_AMR_WB) { + avio_write(pb, AMRWB_header, sizeof(AMRWB_header)); /* magic number */ + } else { + return -1; + } + return 0; +} + const FFOutputFormat ff_amr_muxer = { .p.name = "amr", .p.long_name = NULL_IF_CONFIG_SMALL("3GPP AMR"), From patchwork Wed Mar 20 02:12:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47250 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp121036pzh; Tue, 19 Mar 2024 19:13:54 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUYcewY4EQbt2sXJI5lLEHUoaVA0Bgxm+sdZTqhT74ehl0ZSK7WJbikR2D4C+EHjmNMjYXJGj6UUut5Gjf5ez7+grkli8vRwU9Tgg== X-Google-Smtp-Source: AGHT+IFJaNW178bHLf70X/hC9q0l4dDbso2w0S++CmCvKHA0TZysrVC0kB+JwPln9d8tk15RihH8 X-Received: by 2002:a05:6402:548e:b0:568:1444:a828 with SMTP id fg14-20020a056402548e00b005681444a828mr11048179edb.37.1710900834376; Tue, 19 Mar 2024 19:13:54 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a6-20020a05640213c600b00568939b9f82si5972198edx.104.2024.03.19.19.13.54; Tue, 19 Mar 2024 19:13:54 -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=@outlook.com header.s=selector1 header.b=BuSGLclQ; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5EAC368D476; Wed, 20 Mar 2024 04:13:44 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2061.outbound.protection.outlook.com [40.92.90.61]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F256668D46C for ; Wed, 20 Mar 2024 04:13:42 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ec4VCtX8weCRO5aAl3/aImLvxnlS7ktRfUWFAUykp0HjKGM0GQr9kpL77xV6Oxr55dUIgDRFlH3No+qoP09csvzag5vfVYNwwpWS6SWpPQkMOgGfDuw+yTWBnpGTk7SrlCTpQrIvwx945+3J7bnymsL+P8pdgE2sXt07jkf3QexojC7u712ifya8G8rurll1Fnxzf3uEPPOHjCWQndqOoY0aEuDQcJFMm1Y9VlpnvvESg6cfq6d+nUk1t+dQtSpv0NnHe8gRdicGKlh7wbYrNzehCf2POGJQP/87pznaNdYpfkgU83Cj9tRI9HkA/PiC+xO1XrE7x/6PeamEiAjQlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rLikuu1+5d9dfrgDN6BI4M2iFw1SA6DAGuSpvzBq35E=; b=oUR0q2pZUWX8xGCKM9TynHz3YqeN44vwR+V0MU6Su7ysCiAhln9lIbvVGrl1rF2RWL3DLJ85o1jexh//AAa9k2S3YZXj+SSnWUjlGWLiu+DV6ySAaYiB5Z986+pKbeBMSxSGBTTiE6bpzuQyhfNtSIrDhBJnGBE64gm2bfIsMnhSCgqiQTcOjnziuj6B8E72pLGklw8QaeuCohHtaoMZVZfMNtVdx4AJfhm3QdpxpNyOYtGQ+gx1m46e5r2nRE7UJArPcrPodpLIYB3CXGQOlHvJI1ob8rFbKBmQu0+qWH9cCNQbfRmtu2xUZbu8pVVdzHbC7TFE9RXe69zHYeTGlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rLikuu1+5d9dfrgDN6BI4M2iFw1SA6DAGuSpvzBq35E=; b=BuSGLclQCNxrD14ZCPysQ87t2WHGhlO95ZSx87CE5CkLvwfUDdXiOiBwN2eKD/zEu9Pww6HpUDIhDzozXCWYJm5FEOppS/TfOZJvZQTcrLNDO0rlCSX2KhyX3aclDXJPqvngbt2UxbDrMYiIbZZmus2ZLsqTvS/DhLNUWhNFD0aNegnPawUMHb0lqCxtnQpoFU3+m/R8PlWJ/vNv6R1rmF8m80ahmwifW+vdRJTUDtixJ31g+W5DhHV+VwvDZEt27aMd7Ono/LoqcAUVdEOO02ZURAtVamTr1iva+cccdzvj+OhO42FVlZSFKL9XlpTEvRbL+/d5YC4sAYY00BIFHg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:13:41 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:13:41 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:49 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [PWK4sE42Z5ynuN1+JhoFHqEyix3o1P/tWqBv5IY82/8=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e6e2e9a-f700-4e70-4240-08dc48835cc3 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5UIMp5WVnghOYuPcQmDEty3+AvPss47Rzk7BZ1ePbAD0OTasIkl2A0KxD1c3s4MaU+NgRmHvLJRTMwdd0k7UjL6sWM/hV6uM+C3SE4mE6gk4PD95A4jiSAYQDxn4gPm4yeLGoCIrnCPnnhHOfvMgEwOu81r9S6OygkZidvgytfw+jsDfimw3SmvjJvh6v+LSkXbbgBX/d9/zwJ4RXOdWe4dHCYYZyEYaGEavvVmfsH14RDaZKXXV+kHb7fhMJm0pU8A/1bBKDOTOz513VKTzvEnUjOKIcfrkXLIghESkh3ex36F/JXyzKmQpzDkzqbppxHskX6Tf0aCrZjkaUAK/rGlno2D8x1aEBB7VcumBM8ogKsS945SBpADDZNL0UgnS+1wHSA5Jewi9ZFzXjC7JTqgE9VOkXnNwCxaqqkYB6U3m457zCQMrUci8mIK7NTSkKOWbl7mas7vj1Hifl/pafdgI17hOyu9Zu3do/pNaVJMteYxFAwpxZWy4rJZIOwW99odMRedVqg5jnD7T4RYZOLJJpZHft7hEwvP7+5eEafNUk/+Kn10fJIJZ6NEV382mqfyqE6VZnNmTkL/VpykQM2NnOGBfid/6yFMHN9UlOrLOYCDlvxoXPnpjNp5Tyq7w9i+olnN+UKpOdurLnK1IEoexgjUpbr/pJ5oBHMbPhwcdDGL+61jauUk2JBLVQnbLEnZFaKikfS35Fmh5dvKRD8aVPIQYFochJG/ar3R/GZZoQ= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FoNkuBWvorpHUjLowZgidaBG9OXPcuGR1L44IjRt+xSExVt7lXztSRHU7WHuKatO2HhioeyMNZAC4pVR9kQTdoUMO+JwD7jeQgwIvvqUpEJbKgxZ5nVsBIpdXGNYF12KOlCGKf+sLBb8uE5C51U5zg3/hwWkK/eBQFgR97uZ384BC/2WwzZ3StiNs/V9aDUp6hn+UTo920mCHLhLrZLThDnyfVvFi3QqRpPA69zVErTUA92mKTNRT/qK61T10KIioZ3yMwcL/DGLgRjnG6ch9aSgEbjT1n/5L0rJoemTNJyJ5iPwtU+TGiKa4Pp8fklwyCZMwnejoe3gxK/z1bVYRq55ckU8IDBwxgF730UENqvwwHUsq4cZmgvNrbXc1ubKEICWmejKUpqJAEO8agnmrNpUEv+IGvxm576N6fsNiuq3auDOKopfM7HgIjE1OJ5eYM/Xcps3MCuO7VcekJC6yxvhFfC2TDg8JVoYILQrSamU/ytWc/qvsNTjLSDm/o5HyeSlNzIYyqnsZVTnWjIH4uyr1plgkwELWmNTwIlxOdD9U2Fqp7JcSVPXjKANdWcaA3BOVH31VNVwGdmml0bzdQrlJOSOGx81s2KatXIurtJzJJin4QnfQB6BuFd2rA+R X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: whD57ISIUI8+7Cii7U+petb/tYQmn+uVsyNs1jajYLTcNuQ2mF6kN9NHOQLBhHaklRQtvu47QNc52phJp3seDZnEmlua/lCBHWIcyaWpRSeasmHG4dqDYq8Er+ck4nmjQuHPkRXtmE7I/xdyuWSazQYxZ21z07eiXTAwL4SHLSvxOp9oN6D+9m85uYtPQ8mDaq3uGo41cWbPBVMNy9ZksKq9qtY3BlVrEeEjqnQuZOicLxO1v4n2NKGbZoOGfaqFqd2MJisb5ZR2UHQAa4epCjp9youtlg+0n3QZ2fyZMlbKAWIniMbhPBVhBBfpDYcZxw3bnrEBFogPU11E2kJ2u82whHy9Da4rajkD/h2Op3k71iPqCJqxjdA8F87QrZpNI9VH5NchZPZ9FqxR8MpvF/dPBQDa8CoOJLQOjqgW6ehQucWmno540E8B60tvWq51YRtfVcjThRQ/uautBXaep33borVCLzGzMg+aBDZDbBMj+LQGW6Pckt0qCYAXWhNyVY8RMnjQxuOMdbL1upGzQBC6xzAJpC/fCCOzqQX7TFbYJrIXqKyRPKJo0LnzQjN/ycl9kQPCXEszNywRKBD/RuHYFmgpepSI1UedzmwHWPoCzmFtuBvVuAdZiUV9sD6EcN9mvBKk1zCs5lkOuRikqrdKg72EyGew5qatwnKfO27NBIF1poqiywA6zzSdu5TLHzB6dYje8fi/hlr6I31OPGs319tuwOIJzU+UOwgwPx9JpedwDOMFyaS3D94MGoXnFZbjWzK26epJOsAq7lY1fdBTnre4Bu+lZumO1IvRrRuNGzjBcra60P5BwYb90f6G0RsaUaVpYVUFkngPWokEhQKxfajduZi+BRLd0frJ973lIYCjt8KBAtll/J247RUGR70nKb8h0lCLz0P7pawM6J45tb5kcda4WMYHkTi8rpLb5j/zFsWfqmXJ9p0d6R/t0Ro+aESrKMKtoEOSObTUpj0idtmcPEwjcDCStw17WE3XHe/SVtrVkttqnW56bt6EGHLNjRSKPaHmdjr/OcLhX00WaFcJMNX6bwc9UcxTuybdi+GilH+24kEA/nqrj9WPtYfnE8pHtTjkNh+V5J9emb4MAM1IMJujJp0UumaBGtPmdyDKwmi1V9dCZF5dynk1tR0+ufh/KlNmAl/WzKoVIvkq9JVgQ9ayKaAKCpMIS51CuLIyezUEplxkFiVpzLzedjrdZ0a673UI5BVW1SRDpA3uy5KfZOUXiTo/dVgAFz1c3Rbh4cRSRs6bI3Y8JtnN+BRmmsEKzOddYUQZrpH6Kg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e6e2e9a-f700-4e70-4240-08dc48835cc3 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:13:41.5945 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 06/13] avformat/mux_utils: Don't report that AV_CODEC_ID_NONE can be muxed 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: tTWWOt/w0LkK If AVOutputFormat.video_codec, audio_codec or subtitle_codec is AV_CODEC_ID_NONE, it means that there is no default codec for this format and not that it is supported to mux AV_CODEC_ID_NONE. Signed-off-by: Andreas Rheinhardt --- libavformat/mux_utils.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c index 9d811c14e2..841a19a3a2 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -39,9 +39,10 @@ int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, return ffofmt(ofmt)->query_codec(codec_id, std_compliance); else if (ofmt->codec_tag) return !!av_codec_get_tag2(ofmt->codec_tag, codec_id, &codec_tag); - else if (codec_id == ofmt->video_codec || - codec_id == ofmt->audio_codec || - codec_id == ofmt->subtitle_codec) + else if (codec_id != AV_CODEC_ID_NONE && + (codec_id == ofmt->video_codec || + codec_id == ofmt->audio_codec || + codec_id == ofmt->subtitle_codec)) return 1; } return AVERROR_PATCHWELCOME; From patchwork Wed Mar 20 02:12:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47251 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp121072pzh; Tue, 19 Mar 2024 19:14:03 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVm5XVN80U8Dz2lZqo/hjX4S0vjtKCfhXlCXnY4BoGdNldfqAp8N0DUixN+moAgt7rGhhua2qN5sX7jdB5Vo7YrE+NWzx01ZCGEdg== X-Google-Smtp-Source: AGHT+IHG7dvESODnVxbpHkC9kG4Z5tjzm2Ax3etlDH5SZF/a/ib2dfUBPH7VOfKRV+uPlV/xGRmu X-Received: by 2002:a17:906:748:b0:a46:c11d:dd0a with SMTP id z8-20020a170906074800b00a46c11ddd0amr1017006ejb.31.1710900843675; Tue, 19 Mar 2024 19:14:03 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id he32-20020a1709073da000b00a46be2cec95si2725647ejc.992.2024.03.19.19.14.03; Tue, 19 Mar 2024 19:14:03 -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=@outlook.com header.s=selector1 header.b=U0CoP52T; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7E14B68D459; Wed, 20 Mar 2024 04:13:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2030.outbound.protection.outlook.com [40.92.59.30]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D597568D47D for ; Wed, 20 Mar 2024 04:13:52 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V3hrftTPi6uVYAaf0ZcZPwOkQjdICSd2oaS/zjfTBVla9HOrZXYjYkq/t5SFI82stiwejxoyB/BRXPwNBFv1sEgrC91ahgHbt2aoRpDmiF8THsFuHP+tXWX+d0GO3oXdQgJH3b+fcPjL9FSRbAfMja60VPeGyGL8dwjrmy3NFT3iyx82/t66/VddwptfeFuxlrAqvK9IVggvGOKqO3alW+e3Eq0mSByjkJ2s59VzRP3MwU1ztN23Lm3nIL2HrjeJ3wNfx7jLnOA+qwaeyV4wv8irpKheq2Uu2gyj5eMoagM+gHrxsVydZG+UA/w0rR7lAtgyGk5BqPUu9c4oDX/2fQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=YiPhB2O9OUXxkhy3VoYv3P22Ir0itPo6tTSm1G0Jx8s=; b=k/Ft+LiDvcLlwpFtnA2ewkPgrGu4l6+Nv7muKfT4tQc/cuKmegI4RrrmKPQ3kmE8WErO+kDIpDepLCl+UTvHRkgbLPZZHbx8jXOMaUJ1omRPidE7ai+wAjJmV3yW1E0qurHgPszYVMWjyNX3E9EZ5XxPxoxxAeocL/2GRb7lNOhlaEdnwspa6GImoOCK+KSAPGNIYJAxbg4Nj342J2s7aSnyO1Q6WsCSXg8j5bomKZA4eYHBLG9mg9HU1vj+SO+Coe9pkjtVGTz9xpUERtNv0sm+9l5BQ6pvHbaKtkfSe9O1Wmsn7VI7HpFi8I8VP3Ya6QE02rVuAp7unpoTOAQV9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YiPhB2O9OUXxkhy3VoYv3P22Ir0itPo6tTSm1G0Jx8s=; b=U0CoP52TLbez1EmqyNw0nqEu1stIEMP69iVbYM8haRflwCmDr4hNYzrdHjekM928iUCVICVtMnh4gZcvCTUyPI63pJnmTx63i0RAz7UG9u+305jqezhNQMWeMQovHbVGHWlLdcN/B3kiYq59tQhJd/GpCNhULVTpISKmYhZTEym1sSTiEl+6UANb77tQC/YzmhP07KY34/NnROMIDXFoMUrRSuQh/X5O8PlcxnrU0IhBMmEXp+DGujaAlRutE8OVHkrb/SvkfUSvzJWQjT/ULw81oxmu2gwupNTFlPwaVD5CtyP4IZ1xE0e6dsDGaHNaylJNWOMAV7jMhRD6rbOdeA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:13:51 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:13:51 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:50 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [1P8S6A6N3yp/BRBA7eegQeIcMH3YECpknqbdZycdlH8=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 9fcc1b24-6e76-416d-6a64-08dc48836278 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5U7PTDoP4XPWUfREE4PdWNILUXOAaDB25nXKEZwyJq354jE92WXy6cSBeJsGEai6CCds56YNvQCy4qXZhpN9TwtuI5+ZLgpWIzsCaVv2tFlDZSi25pGYuERPQej/S3Yvg76QzhQ1uk6YRVEKf+HnX9Hw7De7Hw22Itk+gmBgiaz8oZSoOJ4n11aew+cVU4YP/mbXkk+ZvuVO2l6QTPb8YJui8hkGjH/WI3O4SuRb8KlRV2KE65xNXWk8kZ+mACkhSnid/XH0UotnfoaJCmRkYlCG02nrAsG4kloPVVaPozic3DgC6XJj9iPqQRhNvbyPukBJKow360dPAqMiVFwBV5HT8Tc5ZfBP7Dzq1ZFWV9FwF80NFFJtf/nVeHakG/6oHDzuxkL2ecUOT4GL1hs6XJvWpj+KEkLpMLh1qSvF1jaRpRJoS1RnYSL5gxO5Cv+4nzwjZ8AkUxXHi5djRENHquS+/QYOUBiuC/j0DeDkfJqy1LHseM+ns7KxOdZFVW2yGEwmS5Znf3LDtVM2oGrAS0JYEPIwUyLOewjqDOFdW4w3/ZX+pvQK66hq+aaQRlsGXAMIVjmDnCoBAKdIKeW5vG13xTE2CKKPfycyWHhXymZG0Q96paueks5X+TOnW4MJuKy9vBVeZDWjBmImR/0FDdeXbSa/WUkvEmTwgXXA3fPabSLXWW4oxJrtmQSw1+uiKBR2KxgCDJya8Th3c/BPHlQIEUhjgGi+K9jEQqFBf02k0= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w7MFRsfZQx9n3FG1Fgp4P/o6obD6dcATXZiut3pUeqxsN49ovCELyAqv98Cn9Ygxwi83jri1NQk+dBTUMQJhkhEQYPLK041gJRENZq5Uj1eacPrmQff98o0+mxQaSBe6E9w9Bf42ub4aJEZKXlkbKom/ctPDywq3j7x7xwHEmCkBh7Iug7trKiEjQo0MrVAqpfAquCfdUpCaDhydDxs4P6+C3GVJJChTOaB3navjk1+ljVP5kKpYtqbxHH98zPCrtCgcU8Dr3Cr9f1j8TPi2tOKrOebXgRnjwU+7dDPznDU7hBcYAKET1fD8G/x3md+pl85KStKOxB2j16fsMQ4AtyrU13X7Sl3mLxj+Zd+wkY7zfMU/McbOSS5g3Yso9bwoJm2rsx0tMfjK4EBRNyHSJuJHbBGi7D8soyVTlIp4leLOFKzNfhfSxeO5MCO0CP0F1wWar27HftkswryB4SRHOOXazMTAQceFdMrr2TiTGYFJpmFfwJw7Yf0GRRAD5mEQsoCHhpB+m+MO9P4FPW/W9J7UsO72pWPVv1wP6Tqo6ZUakIBCfX7wUbGHI81XzLDCnUwWsd3LafWI2i0g/Cpij1FNkqwl5qo2Uvos4CV0ndM2WKh5J3g1KRWWGQ3QDQV2 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: oeWhQ6Qi9UchSlCmCir+o78n5SlM4MhpMANtJl4Hs80FX3I+EHejd2o6aQ7Witc+k6DGlgSeUMexGRis8u4B2JzTHn7g+FGENRIc3a+ITm8GX1uQChQOc3wlAo8VBcaVS4KHGcZRXlgHPovXWvs5QOsndhaYHQZZsXHQALZza9T+9XzyjheS2CK1EsUxvi6fpnyKCRME3yOP7PJacTky5Zr54TGP6CdPwEUGslsZq2DgUumdlmx8kaQEjwWeHkLrvadTQAea30WYQakdFz0fLwiC0Dne1KBw8+bhsChBgefkxhNpDJOOxk69cg0qzDMG66G5DjNCp4wuhnGMfIooFWOE6K2b48Y38S4ZsCzH1Q0MnL8m6StqHiHcg6xTudtMtc6fzij7pdjtEsO9+mZQE+RU2JMCu/61otk6GSWMcMzyGkPIJyI3vHF1RdDcY9Tci+K5c4+jV1NsCsr0u0IVhljkbuMOi/Wfi32IcAIDujuW9Jcp1fXvl/wovPbAnIF41tL41l+sv+iZs6jFbnZ1meX8cSw8Vl7xjz1W9cFfXsUjYjXpW/+U2MoYGRi3tDfTkQJQ+XPiETFaPoPuXGrginXAeHHx2jfSzPRoFGNSn9bJJufBysAcvD1Tb1ef26seheTrClDran2dB2N/J95Eb3xxvFfBT8OLOeZPmcX3ZFgy3l35ADg8Vn4p6fbKEQxBKKolOvHl0rFD3Gj5S5IGfNgDXQd0Fc0kOrpdyOI8mTtrBJbfgp8DPoW28WHgIWb3o80lsHmJH6LMZlMqniHU4hcyLc/suFrxQuCeLRkbGD/2BhFEcagHL6Mar336+yhZh7v5sANMJV6JwRQjCO0N9iAOFCaATMhBACf6IFG56RZQr3R38Vj13GYuFmvDdRYqYOSLcQZxD8giyvwVSAF/exTwjoAlam1KV6i3GD3BW3o5NtOfRVpWIcSP2R2gxWu83fWzf0yfSaJmMZuFNG6jSrzv1Vz4aRVPYmIQaCNDZ3Iil5nHw5VCYfyTJt61cfXiWCJh0D8eiS+06aReJDk3wjyl9iiiX4wGqxsJtpedBEih8+ZXiy5Mz4hvvthzQZlCV4c8BQlzrNDKmoUE+aKgacPDOuFS0lon+GoKwf6rHHrXe6uzIEYLr20ki5Z4HrbEg3IjcMzlnG95u+rTsgNgDY6zJqu86QNm7nEUePac853ofkFZXn3nam4fB2ATb+nN+YswshiieagnY6EwvTSJn+9lR0ljnSjfS1osbtYunkKKMY9CPciFjNnxPPspHwpCgl67G3Rt4aCvHTxwooTlUw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9fcc1b24-6e76-416d-6a64-08dc48836278 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:13:51.1494 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 07/13] fate/filter-audio: Don't use pcm output for channelsplit test 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: mLpSQxzigpn2 This test muxes two streams into a single pcm file, although the two streams are of course not recoverable from the output (unless one has extra information). So use the streamhash muxer instead (which also provides coverage for it; it was surprisingly unused in FATE so far). This is in preparation for actually enforcing a limit of one stream for the PCM muxers. Signed-off-by: Andreas Rheinhardt --- tests/fate/filter-audio.mak | 6 ++---- tests/ref/fate/filter-channelsplit | 2 ++ 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 tests/ref/fate/filter-channelsplit diff --git a/tests/fate/filter-audio.mak b/tests/fate/filter-audio.mak index 308969c4ac..8d05e6bd77 100644 --- a/tests/fate/filter-audio.mak +++ b/tests/fate/filter-audio.mak @@ -306,12 +306,10 @@ fate-filter-channelmap-one-str: REF = 0ea3052e482c95d5d3bd9da6dac1b5fa FATE_AFILTER-$(call FILTERDEMDECENCMUX, CHANNELMAP ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, WAV) += $(FATE_FILTER_CHANNELMAP) -FATE_AFILTER-$(call FILTERDEMDECENCMUX, CHANNELSPLIT ASETNSAMPLES ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, PCM_S16LE) += fate-filter-channelsplit +FATE_AFILTER-$(call FILTERDEMDECENCMUX, CHANNELSPLIT ASETNSAMPLES ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, STREAMHASH) += fate-filter-channelsplit fate-filter-channelsplit: SRC = $(TARGET_PATH)/tests/data/asynth-44100-2.wav fate-filter-channelsplit: tests/data/asynth-44100-2.wav -fate-filter-channelsplit: CMD = md5 -auto_conversion_filters -i $(SRC) -filter_complex asetnsamples=n=1024:p=0,channelsplit -f s16le -fate-filter-channelsplit: CMP = oneline -fate-filter-channelsplit: REF = d92988d0fe2dd92236763f47b07ab597 +fate-filter-channelsplit: CMD = fmtstdout streamhash -auto_conversion_filters -i $(SRC) -filter_complex asetnsamples=n=1024:p=0,channelsplit FATE_AFILTER-$(call FILTERDEMDECENCMUX, JOIN ARESAMPLE, WAV, PCM_S16LE, PCM_S16LE, PCM_S16LE) += fate-filter-join fate-filter-join: SRC1 = $(TARGET_PATH)/tests/data/asynth-44100-2.wav diff --git a/tests/ref/fate/filter-channelsplit b/tests/ref/fate/filter-channelsplit new file mode 100644 index 0000000000..892801d94d --- /dev/null +++ b/tests/ref/fate/filter-channelsplit @@ -0,0 +1,2 @@ +0,a,SHA256=a4f03d92f82d074d20bcc49ffcbb28911ae85b097142249a890af59422eb0da8 +1,a,SHA256=c2f021f2b2faa1629674e6126ce5f997ef2034ecd3a15df595a98aefa40614e9 From patchwork Wed Mar 20 02:12:51 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47252 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp121123pzh; Tue, 19 Mar 2024 19:14:13 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWf8g/dnDXc/4GfFoQTusr/T+L4OlD+vxLhDwO0WVs1vzV0XAInU5HJHW42bKytcwZqkhMSmckCRU8IbNTGX7jkmdztlF3XqFunWQ== X-Google-Smtp-Source: AGHT+IGUdII+cOJ2uDd85Skfp55wAiwKCH1ulfQ91Zs7QJPBJGTfvZVDFoEE6XEG0zn+sb5IYw6S X-Received: by 2002:a05:6402:4588:b0:568:546e:2a6a with SMTP id ig8-20020a056402458800b00568546e2a6amr8382230edb.3.1710900853025; Tue, 19 Mar 2024 19:14:13 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y10-20020a056402358a00b00568c4ed6114si3640801edc.258.2024.03.19.19.14.12; Tue, 19 Mar 2024 19:14:13 -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=@outlook.com header.s=selector1 header.b=oUGxSUD0; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 87B4568D480; Wed, 20 Mar 2024 04:14:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2014.outbound.protection.outlook.com [40.92.90.14]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 56F1268D401 for ; Wed, 20 Mar 2024 04:13:59 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BCihk+Jlu0D+DRqClefa7OWdEqlm9V9KYZwy5iFf7dYjHu5PMHildfyoME/aGZYihv16p8aHhKQJSHg0YvS+ZvVJBV2kKfJ0c+apijQfmc5y+2mLnKBk0dDPnZYXmcY6frR9HrFpdutD6PACWZXU4nT3HROokYokg/ak9Wp2lD49PY4BKJMelkyjzdET73lBsCzQGaYBi0uSA305Zjs6yfn5LfcZ8WVQP8Vvc14uK9PXDa5ZlNEW6QHo3Pt40iu0AJEmnafibJ1QCGh1o/iJ4Z351B+cRwR21Xzl+ZufT7Vl2afpJyPRUZiyT3Ft1T+2aAvZWbruMTpARNVVr0wXRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mDUplLlMLAVGnd+9bwQHHcRchJ3UFONmyv1tIn6uElM=; b=AQjVjBlT3ySL8JKK6UvaPobH6UuxILt3KK5grOnzipg3dPusFgwbUAhI20PG93j/2ICoBz9d/bOA3B5xU8TrHEh3nxZjJiRSmi2dVpL6jE2n+eo7Ne39A516kBMUQz1Uq9Pd57Lm/UjAeFA801uOMwI7J3q6LVvVdV/AnHyBNQK7qULJJn99uxYUQFvMt97Z1wD09Yt95cObUOJVuaGKkVq4b/X0SORNzip+wRxUTPVZnyAGYqaMDAgSq3J/AT36q8NiTWM89ZMMXoFZi4JLPP7HnRLqY9Abe/+upd0KjerTyfg3rBi2pNNbKwssIli/RxEBWZOeOk2S+tB6JFwWPQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mDUplLlMLAVGnd+9bwQHHcRchJ3UFONmyv1tIn6uElM=; b=oUGxSUD0bgkPr9kEwIxGM0Ti2GDnmAf84gJb+2iujQflW8I/01qDbLVrqtWyfYMP/+9c+e8Pm/ovxChnSE0+lchdx8O/9n/qs4V1hO0Kod5eTh5EN5kWnK4oUYmFLV61cBbm1tcrVWuR5bmD1TnWUZJ49AUFDtYswHctSCvZ8srHOuw6g/sPW3cPuNeKPqgwDkg9Hp3pZ+m+bb2cjMEui5bngFoxiOnX5+IceGH8EWrnBOYQacubsFsPalyR4z6a7EwgSlwhVzPCTYaeByt45TgvkTtyyYKEHxvJzZ6ufZfsuDASqmPMPJvw6B/ikaP/7yFLEXKSu4P0cxZG7xjDRA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:13:56 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:13:56 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:51 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [QJnFBlAlLTPJKaIctY5CS4pQRz5jD/HGBH0xb7kryJY=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 73e2ecd3-e57d-4d85-640a-08dc48836597 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5U9j3Tk+BNRKxHqy60upcdqIVTftU4QDm85HtPrzM74whML2WUsyBRY8cBayj4IKFfN3G84/EPK/kDzPQ4LNGnNaQbwFKkz5uHLa6CkUcArDKZsS/erAy+vwJA0awYYiIeKkCuJ9LoVGc5z4M3/tVQW0fbVUU7z2PFinIKq7iBDaTaDLL89YXEBaaBf+7zk1bwXpRNLqnDgRjkKw2V50bh0bZXG7fsJXHr2IjyEI9DiJ1g0e6SB6bb0RKUnkJ4x+tqjfKddU0Sm1d3w+LiVFs5UKC1FtyPlMe9NdXkh5hTcY9dFTLrPuVAeB5KHuYsCD52NsKbbL9+unqSoiZDaCDaLt2vLRjplAFcAV6yAzggNNM8pKbcL/6h2Qsn9O1CM6xsjKEQ6azWDWE3p2J9BKiGSOXk4gyrcpYTwvUvf5JA75LJ8V0KG5L33stAK18tZ4KcP1R57ap5QZlcVUd82NKzXzQCTWIE1JkdJCkaQMnzP4+SZuUCUlpBOJufa4iqmA5Fsx4/ruP5u0DLbLWF0Ymvz9FHcjZNv5+DcgqysrtG2yOpe77hMuDqZ0YJvLo2SuezZlccC50td6Mn07Fd8ErdxEKGKhkesdHBW6aFqxUwZ0fxy33BZFJ3EpHzCECsNfsozKKmvX33Td4LnuAvCueJozO3e/NRhpPnlt2dbaGv2wIUgbnkxe62vUIUvPe9pQp+5M4Gi1eXli29CCDbQPrQDdwZQG7+uLR0Jnbpchnt3n8= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: f2BwOGvD/LIah4AWjXi+XGtqTalTbiObdNTPibQiwaNfHCrdpYZkAixCM4wxsiJfkHVl5wVZNpULEXNHRE35GJ/iVMPtKv/QDyR9HnrWeczR4Klg2CVmtEWy7Zo14V/bIBzpI+IRSmW3cX2coa+a9FaeNS6bFPkeJFEn4gqcRR1Hq1eP/bNn5dkVmPgUHoqxlSEWvGD2M4XcSOW9xIlKJQg4bO5bNNft6ANFaEelDyvBrAmKBL78x2qNH7i8sx7NsCDeWS3M0U7JBiV1jjFF9SMG8NS7kBUy3uwj0/e4zz7Rgwr5hbMkZhtwU4J4TX+KFrNJG7FyitW6BJYH7bEIWlNlWQIHV3FNKivCyL40384WA0/kA37LW8jBmGHF3O09ozN5IS9dVmPqym2GPfwgy8WzwQGbstKVEfcSUq5IcVKzAjOlzH6Dz+5tMJcMS9JUB4TjTT8dI/i/oFb502Tm7uo9VkbYvLCKm5WSGVIaiOzvRV2daE+gPZ5Tmp+MHwqcRmEWCShwNoxQwj4lvXSshQ3u1Cx4mT6bQ1ag0l0BuTVtvEhbtV3Jyy0qv8SKwmgPFnOxg3eEwZq1hgTgXCSQmev9Y6aBEVztf89aDmLTLzM= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1/CABOv6WF5qmo2Llz8Hh/xOmqjTYKDdGlgaIXgGMsB0srcfx/ip9y+CJZtm6CiiQTr3F9WaOQlABeeENtLmhfMiaOZKTYJZ7IA9XSabjfHWnrQqMeSfJoxi4umm+U5IduHIF1r4uYQW1VHZXa98yUeZV7gJ9XjZwDCgOFy1ntqqknHQjBALhCDWdKw1FI5j/o50K5U1aQAW4FxjquaX/pYOZI99hVJ4uQ90/o2EUDlqOyWl/sAWNKnD1NR9uOK6mbkAsHZ3GaQTOtU3YjDqIEuwA6Qg0uVJGvJ6XMpVU4iv6yZW3kfK3n21vCwFPGQ/HleiYPALufsz9A5sre/RGS23zT9IbviS/z8e38Ckq8V/pFdiNDGpKHgLLQTAnHyYpBW/q6yfyrleoe94J11ORfSSeIi0oD20eVA1SeWWAF+xdTpSuLfZI/lGVFDFnswAcH2mnXj60xeOIxPp6MfowzFBj35Ilqf8mIPaX8qCSaCJrZcoz4L4BNxnp6rEEOv6VXWKa31N/6svR42PhIIFKOOWsPbS9odZqAqJmsndlIPF9P58M1ctZL9kPdeotzj6xJ7Qx0JgqK8Y2N/JXpGxt32gIWPnL7XyZwL0jY4zj1j1CphEclk2rXA/pYua7QEQA7bxLnMlcSmS9VlMzG3Io+3geOV8BczegE0z725jgm7xWcdYNjWr4ZxngxSKnOEGlLdmHxMCml+52akFV1suTzl0RUjUCMLdeXmgQ8vq5h8T6SiLf8hA5vBJ4A4ZlQW0V4c1hX2k0wXEdlSLQPkvTBRmHLY1SjRW+xcEfdi1//yX2rdZjpv+HygJ8ce5XXrIhCyuABpeUPE7q84SXjLd15aDDUIMERwZWJaaiGDNd60qLvff79D/TPIybsuSJFlz7N7RVfPmsIZJX9O8MpFXK24VXcAPNPiCNIJsPb93FSU2ULkldYjLUZEBpSsDA1WOgP3RplXYCc8ppW+vmWNX3fEzw+HV8cKyCADijI4leSSF1ycgGPFcJdbjwnn7KBdC8uWCV2tCrSB6TMRGQQlLY5Mtdo4xKXTThrtkk6xs4Z9rPadP0fGsFlt+PAwFqSMyWxae1M74JVbq6GN+QYAFdnmycK9usGAsbElnqs6aRINWBt63JFh8FzOmdA+9idSvQfx9VQlRQwNj56yos9s8Pe54HGgh0BhM1SOYK6jYwE6wS6IXeeLhx7arasUoSQbzH26C/j1h8xb6JyOWW32GvXTtsLyr6i+2mekWVWicfIUOOvkMIQw64zvt7uGLWfU+mJRaEwUXj3gvj1FWl0HIfw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73e2ecd3-e57d-4d85-640a-08dc48836597 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:13:56.7608 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 08/13] avformat/mux: Add flag for "not more than one stream of each type" 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4Y4iBGsYW6Fm More exactly: Not more than one stream of each type for which a default codec (i.e. AVOutputFormat.(audio|video|subtitle)_codec) is set; for those types for which no such codec is set (or for which no designated default codec in AVOutputFormat exists at all) no streams are permitted. Given that with this flag set the default codecs become more important, they are now set explicitly to AV_CODEC_ID_NONE for "unset"; the earlier code relied on AV_CODEC_ID_NONE being equal to zero, so that default static initialization set it accordingly; but this is not how one is supposed to use an enum. Signed-off-by: Andreas Rheinhardt --- libavformat/ac4enc.c | 4 +- libavformat/aeaenc.c | 11 +-- libavformat/alp.c | 7 +- libavformat/apm.c | 11 +-- libavformat/apngenc.c | 6 +- libavformat/argo_asf.c | 11 +-- libavformat/argo_cvg.c | 11 +-- libavformat/assenc.c | 5 +- libavformat/astenc.c | 11 +-- libavformat/au.c | 7 +- libavformat/cafenc.c | 7 +- libavformat/chromaprint.c | 8 +- libavformat/codec2.c | 4 +- libavformat/gif.c | 6 +- libavformat/ilbc.c | 11 +-- libavformat/ircamenc.c | 7 +- libavformat/ivfenc.c | 12 +-- libavformat/kvag.c | 11 +-- libavformat/lrcenc.c | 9 +-- libavformat/microdvdenc.c | 5 +- libavformat/mux.c | 23 ++++++ libavformat/mux.h | 14 ++++ libavformat/mux_utils.c | 19 +++++ libavformat/rawenc.c | 135 ++++++++++++++++++++-------------- libavformat/rcwtenc.c | 9 ++- libavformat/sccenc.c | 9 +-- libavformat/segafilmenc.c | 10 +-- libavformat/srtenc.c | 9 +-- libavformat/supenc.c | 9 +-- libavformat/swfenc.c | 12 +-- libavformat/ttaenc.c | 10 +-- libavformat/ttmlenc.c | 6 +- libavformat/wavenc.c | 20 +---- libavformat/webpenc.c | 7 +- libavformat/webvttenc.c | 5 +- libavformat/westwood_audenc.c | 7 +- libavformat/wvenc.c | 5 +- libavformat/yuv4mpegenc.c | 5 +- 38 files changed, 241 insertions(+), 237 deletions(-) diff --git a/libavformat/ac4enc.c b/libavformat/ac4enc.c index aefbfc2684..02b8d4d976 100644 --- a/libavformat/ac4enc.c +++ b/libavformat/ac4enc.c @@ -35,7 +35,7 @@ static int ac4_init(AVFormatContext *s) { AVCodecParameters *par = s->streams[0]->codecpar; - if (s->nb_streams != 1 || par->codec_id != AV_CODEC_ID_AC4) { + if (par->codec_id != AV_CODEC_ID_AC4) { av_log(s, AV_LOG_ERROR, "Only one AC-4 stream can be muxed by the AC-4 muxer\n"); return AVERROR(EINVAL); } @@ -95,6 +95,8 @@ const FFOutputFormat ff_ac4_muxer = { .priv_data_size = sizeof(AC4Context), .p.audio_codec = AV_CODEC_ID_AC4, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = ac4_init, .write_packet = ac4_write_packet, .p.priv_class = &ac4_muxer_class, diff --git a/libavformat/aeaenc.c b/libavformat/aeaenc.c index 495e98c6a2..3303d108a5 100644 --- a/libavformat/aeaenc.c +++ b/libavformat/aeaenc.c @@ -29,14 +29,8 @@ static int aea_write_header(AVFormatContext *s) { const AVDictionaryEntry *title_entry; size_t title_length = 0; - AVStream *st; - - if (s->nb_streams > 1) { - av_log(s, AV_LOG_ERROR, "Got more than one stream to encode. This is not supported.\n"); - return AVERROR(EINVAL); - } + AVStream *st = s->streams[0]; - st = s->streams[0]; if (st->codecpar->ch_layout.nb_channels != 1 && st->codecpar->ch_layout.nb_channels != 2) { av_log(s, AV_LOG_ERROR, "Only maximum 2 channels are supported in the audio" " stream, %d channels were found.\n", st->codecpar->ch_layout.nb_channels); @@ -108,7 +102,10 @@ const FFOutputFormat ff_aea_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("MD STUDIO audio"), .p.extensions = "aea", .p.audio_codec = AV_CODEC_ID_ATRAC1, + .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = aea_write_header, .write_packet = ff_raw_write_packet, .write_trailer = aea_write_trailer, diff --git a/libavformat/alp.c b/libavformat/alp.c index 3db256cd05..9d507cb310 100644 --- a/libavformat/alp.c +++ b/libavformat/alp.c @@ -189,11 +189,6 @@ static int alp_write_init(AVFormatContext *s) alp->type = ALP_TYPE_TUN; } - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "Too many streams\n"); - return AVERROR(EINVAL); - } - par = s->streams[0]->codecpar; if (par->codec_id != AV_CODEC_ID_ADPCM_IMA_ALP) { @@ -298,7 +293,9 @@ const FFOutputFormat ff_alp_muxer = { .p.extensions = "tun,pcm", .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_ALP, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.priv_class = &alp_muxer_class, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = alp_write_init, .write_header = alp_write_header, .write_packet = ff_raw_write_packet, diff --git a/libavformat/apm.c b/libavformat/apm.c index bcde82d958..89401dcf5b 100644 --- a/libavformat/apm.c +++ b/libavformat/apm.c @@ -215,14 +215,7 @@ const FFInputFormat ff_apm_demuxer = { #if CONFIG_APM_MUXER static int apm_write_init(AVFormatContext *s) { - AVCodecParameters *par; - - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "APM files have exactly one stream\n"); - return AVERROR(EINVAL); - } - - par = s->streams[0]->codecpar; + AVCodecParameters *par = s->streams[0]->codecpar; if (par->codec_id != AV_CODEC_ID_ADPCM_IMA_APM) { av_log(s, AV_LOG_ERROR, "%s codec not supported\n", @@ -311,6 +304,8 @@ const FFOutputFormat ff_apm_muxer = { .p.extensions = "apm", .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_APM, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = apm_write_init, .write_header = apm_write_header, .write_packet = ff_raw_write_packet, diff --git a/libavformat/apngenc.c b/libavformat/apngenc.c index a0af916f14..79b0dbf0f7 100644 --- a/libavformat/apngenc.c +++ b/libavformat/apngenc.c @@ -84,9 +84,7 @@ static int apng_write_header(AVFormatContext *format_context) APNGMuxContext *apng = format_context->priv_data; AVCodecParameters *par = format_context->streams[0]->codecpar; - if (format_context->nb_streams != 1 || - format_context->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_VIDEO || - format_context->streams[0]->codecpar->codec_id != AV_CODEC_ID_APNG) { + if (format_context->streams[0]->codecpar->codec_id != AV_CODEC_ID_APNG) { av_log(format_context, AV_LOG_ERROR, "APNG muxer supports only a single video APNG stream.\n"); return AVERROR(EINVAL); @@ -315,6 +313,8 @@ const FFOutputFormat ff_apng_muxer = { .priv_data_size = sizeof(APNGMuxContext), .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_APNG, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = apng_write_header, .write_packet = apng_write_packet, .write_trailer = apng_write_trailer, diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c index 0e1eae24fb..28e3844394 100644 --- a/libavformat/argo_asf.c +++ b/libavformat/argo_asf.c @@ -288,14 +288,7 @@ const FFInputFormat ff_argo_asf_demuxer = { static int argo_asf_write_init(AVFormatContext *s) { ArgoASFMuxContext *ctx = s->priv_data; - const AVCodecParameters *par; - - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "ASF files have exactly one stream\n"); - return AVERROR(EINVAL); - } - - par = s->streams[0]->codecpar; + const AVCodecParameters *par = s->streams[0]->codecpar; if (par->codec_id != AV_CODEC_ID_ADPCM_ARGO) { av_log(s, AV_LOG_ERROR, "%s codec not supported\n", @@ -481,7 +474,9 @@ const FFOutputFormat ff_argo_asf_muxer = { */ .p.audio_codec = AV_CODEC_ID_ADPCM_ARGO, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.priv_class = &argo_asf_muxer_class, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = argo_asf_write_init, .write_header = argo_asf_write_header, .write_packet = argo_asf_write_packet, diff --git a/libavformat/argo_cvg.c b/libavformat/argo_cvg.c index 0cf0bf3e9a..aacc34daeb 100644 --- a/libavformat/argo_cvg.c +++ b/libavformat/argo_cvg.c @@ -269,14 +269,7 @@ const FFInputFormat ff_argo_cvg_demuxer = { static int argo_cvg_write_init(AVFormatContext *s) { ArgoCVGMuxContext *ctx = s->priv_data; - const AVCodecParameters *par; - - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "CVG files have exactly one stream\n"); - return AVERROR(EINVAL); - } - - par = s->streams[0]->codecpar; + const AVCodecParameters *par = s->streams[0]->codecpar; if (par->codec_id != AV_CODEC_ID_ADPCM_PSX) { av_log(s, AV_LOG_ERROR, "%s codec not supported\n", @@ -408,7 +401,9 @@ const FFOutputFormat ff_argo_cvg_muxer = { .p.extensions = "cvg", .p.audio_codec = AV_CODEC_ID_ADPCM_PSX, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.priv_class = &argo_cvg_muxer_class, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = argo_cvg_write_init, .write_header = argo_cvg_write_header, .write_packet = argo_cvg_write_packet, diff --git a/libavformat/assenc.c b/libavformat/assenc.c index dad0d81ca8..c23c77acda 100644 --- a/libavformat/assenc.c +++ b/libavformat/assenc.c @@ -50,7 +50,7 @@ static int write_header(AVFormatContext *s) ASSContext *ass = s->priv_data; AVCodecParameters *par = s->streams[0]->codecpar; - if (s->nb_streams != 1 || par->codec_id != AV_CODEC_ID_ASS) { + if (par->codec_id != AV_CODEC_ID_ASS) { av_log(s, AV_LOG_ERROR, "Exactly one ASS/SSA stream is needed.\n"); return AVERROR(EINVAL); } @@ -237,8 +237,11 @@ const FFOutputFormat ff_ass_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("SSA (SubStation Alpha) subtitle"), .p.mime_type = "text/x-ass", .p.extensions = "ass,ssa", + .p.audio_codec = AV_CODEC_ID_NONE, + .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_ASS, .p.flags = AVFMT_GLOBALHEADER | AVFMT_NOTIMESTAMPS | AVFMT_TS_NONSTRICT, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .p.priv_class = &ass_class, .priv_data_size = sizeof(ASSContext), .write_header = write_header, diff --git a/libavformat/astenc.c b/libavformat/astenc.c index c6b02e3848..1fa06a2da8 100644 --- a/libavformat/astenc.c +++ b/libavformat/astenc.c @@ -49,16 +49,9 @@ static int ast_write_header(AVFormatContext *s) { ASTMuxContext *ast = s->priv_data; AVIOContext *pb = s->pb; - AVCodecParameters *par; + AVCodecParameters *par = s->streams[0]->codecpar; unsigned int codec_tag; - if (s->nb_streams == 1) { - par = s->streams[0]->codecpar; - } else { - av_log(s, AV_LOG_ERROR, "only one stream is supported\n"); - return AVERROR(EINVAL); - } - if (par->codec_id == AV_CODEC_ID_ADPCM_AFC) { av_log(s, AV_LOG_ERROR, "muxing ADPCM AFC is not implemented\n"); return AVERROR_PATCHWELCOME; @@ -204,6 +197,8 @@ const FFOutputFormat ff_ast_muxer = { .priv_data_size = sizeof(ASTMuxContext), .p.audio_codec = AV_CODEC_ID_PCM_S16BE_PLANAR, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = ast_write_header, .write_packet = ast_write_packet, .write_trailer = ast_write_trailer, diff --git a/libavformat/au.c b/libavformat/au.c index da1fc79f0d..98f1a5b507 100644 --- a/libavformat/au.c +++ b/libavformat/au.c @@ -291,11 +291,6 @@ static int au_write_header(AVFormatContext *s) AVCodecParameters *par = s->streams[0]->codecpar; AVBPrint annotations; - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "only one stream is supported\n"); - return AVERROR(EINVAL); - } - par->codec_tag = ff_codec_get_tag(codec_au_tags, par->codec_id); if (!par->codec_tag) { av_log(s, AV_LOG_ERROR, "unsupported codec\n"); @@ -346,7 +341,9 @@ const FFOutputFormat ff_au_muxer = { .p.codec_tag = au_codec_tags, .p.audio_codec = AV_CODEC_ID_PCM_S16BE, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .priv_data_size = sizeof(AUContext), .write_header = au_write_header, .write_packet = ff_raw_write_packet, diff --git a/libavformat/cafenc.c b/libavformat/cafenc.c index 67be59806c..426bc05209 100644 --- a/libavformat/cafenc.c +++ b/libavformat/cafenc.c @@ -118,11 +118,6 @@ static int caf_write_header(AVFormatContext *s) int64_t chunk_size = 0; int frame_size = par->frame_size, sample_rate = par->sample_rate; - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "CAF files have exactly one stream\n"); - return AVERROR(EINVAL); - } - switch (par->codec_id) { case AV_CODEC_ID_AAC: av_log(s, AV_LOG_ERROR, "muxing codec currently unsupported\n"); @@ -284,6 +279,8 @@ const FFOutputFormat ff_caf_muxer = { .priv_data_size = sizeof(CAFContext), .p.audio_codec = AV_CODEC_ID_PCM_S16BE, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = caf_write_header, .write_packet = caf_write_packet, .write_trailer = caf_write_trailer, diff --git a/libavformat/chromaprint.c b/libavformat/chromaprint.c index 3229e9160d..62264d6a4b 100644 --- a/libavformat/chromaprint.c +++ b/libavformat/chromaprint.c @@ -85,11 +85,6 @@ static int write_header(AVFormatContext *s) #endif } - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "Only one stream is supported\n"); - return AVERROR(EINVAL); - } - st = s->streams[0]; if (st->codecpar->ch_layout.nb_channels > 2) { @@ -182,6 +177,9 @@ const FFOutputFormat ff_chromaprint_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("Chromaprint"), .priv_data_size = sizeof(ChromaprintMuxContext), .p.audio_codec = AV_NE(AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE), + .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = write_header, .write_packet = write_packet, .write_trailer = write_trailer, diff --git a/libavformat/codec2.c b/libavformat/codec2.c index 9ed57af0a8..e49408e0fb 100644 --- a/libavformat/codec2.c +++ b/libavformat/codec2.c @@ -216,7 +216,7 @@ static int codec2_write_header(AVFormatContext *s) { AVStream *st; - if (s->nb_streams != 1 || s->streams[0]->codecpar->codec_id != AV_CODEC_ID_CODEC2) { + if (s->streams[0]->codecpar->codec_id != AV_CODEC_ID_CODEC2) { av_log(s, AV_LOG_ERROR, ".c2 files must have exactly one codec2 stream\n"); return AVERROR(EINVAL); } @@ -317,7 +317,9 @@ const FFOutputFormat ff_codec2_muxer = { .p.extensions = "c2", .p.audio_codec = AV_CODEC_ID_CODEC2, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = codec2_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/gif.c b/libavformat/gif.c index 568867cc5d..fe45637814 100644 --- a/libavformat/gif.c +++ b/libavformat/gif.c @@ -42,9 +42,7 @@ typedef struct GIFContext { static int gif_write_header(AVFormatContext *s) { - if (s->nb_streams != 1 || - s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_VIDEO || - s->streams[0]->codecpar->codec_id != AV_CODEC_ID_GIF) { + if (s->streams[0]->codecpar->codec_id != AV_CODEC_ID_GIF) { av_log(s, AV_LOG_ERROR, "GIF muxer supports only a single video GIF stream.\n"); return AVERROR(EINVAL); @@ -213,6 +211,8 @@ const FFOutputFormat ff_gif_muxer = { .priv_data_size = sizeof(GIFContext), .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_GIF, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = gif_write_header, .write_packet = gif_write_packet, .write_trailer = gif_write_trailer, diff --git a/libavformat/ilbc.c b/libavformat/ilbc.c index bb98d0e62a..2e102a4be7 100644 --- a/libavformat/ilbc.c +++ b/libavformat/ilbc.c @@ -33,13 +33,7 @@ static const char mode30_header[] = "#!iLBC30\n"; static int ilbc_write_header(AVFormatContext *s) { AVIOContext *pb = s->pb; - AVCodecParameters *par; - - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "Unsupported number of streams\n"); - return AVERROR(EINVAL); - } - par = s->streams[0]->codecpar; + AVCodecParameters *par = s->streams[0]->codecpar; if (par->codec_id != AV_CODEC_ID_ILBC) { av_log(s, AV_LOG_ERROR, "Unsupported codec\n"); @@ -127,8 +121,11 @@ const FFOutputFormat ff_ilbc_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("iLBC storage"), .p.mime_type = "audio/iLBC", .p.extensions = "lbc", + .p.video_codec = AV_CODEC_ID_NONE, .p.audio_codec = AV_CODEC_ID_ILBC, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = ilbc_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/ircamenc.c b/libavformat/ircamenc.c index ceeab2b305..7600d9a8a9 100644 --- a/libavformat/ircamenc.c +++ b/libavformat/ircamenc.c @@ -32,11 +32,6 @@ static int ircam_write_header(AVFormatContext *s) AVCodecParameters *par = s->streams[0]->codecpar; uint32_t tag; - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "only one stream is supported\n"); - return AVERROR(EINVAL); - } - tag = ff_codec_get_tag(ff_codec_ircam_le_tags, par->codec_id); if (!tag) { av_log(s, AV_LOG_ERROR, "unsupported codec\n"); @@ -57,6 +52,8 @@ const FFOutputFormat ff_ircam_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("Berkeley/IRCAM/CARL Sound Format"), .p.audio_codec = AV_CODEC_ID_PCM_S16LE, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = ircam_write_header, .write_packet = ff_raw_write_packet, .p.codec_tag = (const AVCodecTag *const []){ ff_codec_ircam_le_tags, 0 }, diff --git a/libavformat/ivfenc.c b/libavformat/ivfenc.c index 88399099d4..09782eecd6 100644 --- a/libavformat/ivfenc.c +++ b/libavformat/ivfenc.c @@ -29,15 +29,9 @@ typedef struct IVFEncContext { static int ivf_init(AVFormatContext *s) { - AVCodecParameters *par; + AVCodecParameters *par = s->streams[0]->codecpar; - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "Format supports only exactly one video stream\n"); - return AVERROR(EINVAL); - } - par = s->streams[0]->codecpar; - if (par->codec_type != AVMEDIA_TYPE_VIDEO || - !(par->codec_id == AV_CODEC_ID_AV1 || + if (!(par->codec_id == AV_CODEC_ID_AV1 || par->codec_id == AV_CODEC_ID_VP8 || par->codec_id == AV_CODEC_ID_VP9)) { av_log(s, AV_LOG_ERROR, "Currently only VP8, VP9 and AV1 are supported!\n"); @@ -125,7 +119,9 @@ const FFOutputFormat ff_ivf_muxer = { .p.extensions = "ivf", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_VP8, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.codec_tag = (const AVCodecTag* const []){ codec_ivf_tags, 0 }, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .priv_data_size = sizeof(IVFEncContext), .init = ivf_init, .write_header = ivf_write_header, diff --git a/libavformat/kvag.c b/libavformat/kvag.c index bea1dda3e5..2053f4730d 100644 --- a/libavformat/kvag.c +++ b/libavformat/kvag.c @@ -129,14 +129,7 @@ const FFInputFormat ff_kvag_demuxer = { #if CONFIG_KVAG_MUXER static int kvag_write_init(AVFormatContext *s) { - AVCodecParameters *par; - - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "KVAG files have exactly one stream\n"); - return AVERROR(EINVAL); - } - - par = s->streams[0]->codecpar; + AVCodecParameters *par = s->streams[0]->codecpar; if (par->codec_id != AV_CODEC_ID_ADPCM_IMA_SSI) { av_log(s, AV_LOG_ERROR, "%s codec not supported\n", @@ -196,6 +189,8 @@ const FFOutputFormat ff_kvag_muxer = { .p.extensions = "vag", .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_SSI, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = kvag_write_init, .write_header = kvag_write_header, .write_packet = ff_raw_write_packet, diff --git a/libavformat/lrcenc.c b/libavformat/lrcenc.c index d66be9a8fa..15c31d33b3 100644 --- a/libavformat/lrcenc.c +++ b/libavformat/lrcenc.c @@ -37,12 +37,6 @@ static int lrc_write_header(AVFormatContext *s) { const AVDictionaryEntry *metadata_item; - if(s->nb_streams != 1 || - s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE) { - av_log(s, AV_LOG_ERROR, - "LRC supports only a single subtitle stream.\n"); - return AVERROR(EINVAL); - } if(s->streams[0]->codecpar->codec_id != AV_CODEC_ID_SUBRIP && s->streams[0]->codecpar->codec_id != AV_CODEC_ID_TEXT) { av_log(s, AV_LOG_ERROR, "Unsupported subtitle codec: %s\n", @@ -131,7 +125,10 @@ const FFOutputFormat ff_lrc_muxer = { .p.extensions = "lrc", .p.flags = AVFMT_VARIABLE_FPS | AVFMT_GLOBALHEADER | AVFMT_TS_NEGATIVE | AVFMT_TS_NONSTRICT, + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_SUBRIP, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .priv_data_size = 0, .write_header = lrc_write_header, .write_packet = lrc_write_packet, diff --git a/libavformat/microdvdenc.c b/libavformat/microdvdenc.c index 950309981b..b9cadb8be4 100644 --- a/libavformat/microdvdenc.c +++ b/libavformat/microdvdenc.c @@ -29,7 +29,7 @@ static int microdvd_write_header(struct AVFormatContext *s) AVCodecParameters *par = s->streams[0]->codecpar; AVRational framerate = s->streams[0]->avg_frame_rate; - if (s->nb_streams != 1 || par->codec_id != AV_CODEC_ID_MICRODVD) { + if (par->codec_id != AV_CODEC_ID_MICRODVD) { av_log(s, AV_LOG_ERROR, "Exactly one MicroDVD stream is needed.\n"); return -1; } @@ -62,7 +62,10 @@ const FFOutputFormat ff_microdvd_muxer = { .p.mime_type = "text/x-microdvd", .p.extensions = "sub", .p.flags = AVFMT_NOTIMESTAMPS, + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_MICRODVD, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = microdvd_write_header, .write_packet = microdvd_write_packet, }; diff --git a/libavformat/mux.c b/libavformat/mux.c index a2cae97397..134c2875b6 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -188,6 +188,12 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options) AVDictionary *tmp = NULL; const FFOutputFormat *of = ffofmt(s->oformat); AVDictionaryEntry *e; + static const unsigned default_codec_offsets[] = { + [AVMEDIA_TYPE_VIDEO] = offsetof(AVOutputFormat, video_codec), + [AVMEDIA_TYPE_AUDIO] = offsetof(AVOutputFormat, audio_codec), + [AVMEDIA_TYPE_SUBTITLE] = offsetof(AVOutputFormat, subtitle_codec), + }; + unsigned nb_type[FF_ARRAY_ELEMS(default_codec_offsets)] = { 0 }; int ret = 0; if (options) @@ -262,6 +268,23 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options) } break; } + if (of->flags_internal & FF_OFMT_FLAG_MAX_ONE_OF_EACH) { + enum AVCodecID default_codec_id = AV_CODEC_ID_NONE; + unsigned nb; + if ((unsigned)par->codec_type < FF_ARRAY_ELEMS(default_codec_offsets)) { + nb = ++nb_type[par->codec_type]; + if (default_codec_offsets[par->codec_type]) + default_codec_id = *(const enum AVCodecID*)((const char*)of + default_codec_offsets[par->codec_type]); + } + if (default_codec_id == AV_CODEC_ID_NONE || nb > 1) { + const char *type = av_get_media_type_string(par->codec_type); + av_log(s, AV_LOG_ERROR, "%s muxer does not support %s stream of type %s\n", + of->p.name, default_codec_id == AV_CODEC_ID_NONE ? "any" : "more than one", + type ? type : "unknown"); + ret = AVERROR(EINVAL); + goto fail; + } + } #if FF_API_AVSTREAM_SIDE_DATA FF_DISABLE_DEPRECATION_WARNINGS diff --git a/libavformat/mux.h b/libavformat/mux.h index bd3eb53380..71ee5fd06b 100644 --- a/libavformat/mux.h +++ b/libavformat/mux.h @@ -36,6 +36,20 @@ struct AVDeviceInfoList; * of the return value in case of flushing. */ #define FF_OFMT_FLAG_ALLOW_FLUSH (1 << 1) +/** + * If this flag is set, it indicates that for each codec type + * whose corresponding default codec (i.e. AVOutputFormat.audio_codec, + * AVOutputFormat.video_codec and AVOutputFormat.subtitle_codec) + * is set (i.e. != AV_CODEC_ID_NONE) only one stream of this type + * can be muxed. It furthermore indicates that no stream with + * a codec type that has no default codec or whose default codec + * is AV_CODEC_ID_NONE can be muxed. + * Both of these restrictions are checked generically before + * the actual muxer's init/write_header callbacks. + * + * This flag is incompatible with FF_OFMT_FLAG_SUPPORT_ATTACHMENTS. + */ +#define FF_OFMT_FLAG_MAX_ONE_OF_EACH (1 << 2) typedef struct FFOutputFormat { /** diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c index 841a19a3a2..8a0ad4c9aa 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -44,6 +44,25 @@ int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, codec_id == ofmt->audio_codec || codec_id == ofmt->subtitle_codec)) return 1; + else if (ffofmt(ofmt)->flags_internal & FF_OFMT_FLAG_MAX_ONE_OF_EACH) { + enum AVMediaType type = avcodec_get_type(codec_id); + switch (type) { + case AVMEDIA_TYPE_AUDIO: + if (ofmt->audio_codec == AV_CODEC_ID_NONE) + return 0; + break; + case AVMEDIA_TYPE_VIDEO: + if (ofmt->video_codec == AV_CODEC_ID_NONE) + return 0; + break; + case AVMEDIA_TYPE_SUBTITLE: + if (ofmt->subtitle_codec == AV_CODEC_ID_NONE) + return 0; + break; + default: + return 0; + } + } } return AVERROR_PATCHWELCOME; } diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c index f916db13a2..49dc0a9109 100644 --- a/libavformat/rawenc.c +++ b/libavformat/rawenc.c @@ -34,28 +34,6 @@ int ff_raw_write_packet(AVFormatContext *s, AVPacket *pkt) return 0; } -static int force_one_stream(AVFormatContext *s) -{ - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "%s files have exactly one stream\n", - s->oformat->name); - return AVERROR(EINVAL); - } - if ( s->oformat->audio_codec != AV_CODEC_ID_NONE - && s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_AUDIO) { - av_log(s, AV_LOG_ERROR, "%s files have exactly one audio stream\n", - s->oformat->name); - return AVERROR(EINVAL); - } - if ( s->oformat->video_codec != AV_CODEC_ID_NONE - && s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_VIDEO) { - av_log(s, AV_LOG_ERROR, "%s files have exactly one video stream\n", - s->oformat->name); - return AVERROR(EINVAL); - } - return 0; -} - /* Note: Do not forget to add new entries to the Makefile as well. */ #if CONFIG_AC3_MUXER @@ -66,7 +44,8 @@ const FFOutputFormat ff_ac3_muxer = { .p.extensions = "ac3", .p.audio_codec = AV_CODEC_ID_AC3, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -98,7 +77,8 @@ const FFOutputFormat ff_adx_muxer = { .p.extensions = "adx", .p.audio_codec = AV_CODEC_ID_ADPCM_ADX, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .write_trailer = adx_write_trailer, .p.flags = AVFMT_NOTIMESTAMPS, @@ -112,7 +92,8 @@ const FFOutputFormat ff_aptx_muxer = { .p.extensions = "aptx", .p.audio_codec = AV_CODEC_ID_APTX, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -125,7 +106,8 @@ const FFOutputFormat ff_aptx_hd_muxer = { .p.extensions = "aptxhd", .p.audio_codec = AV_CODEC_ID_APTX_HD, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -138,7 +120,8 @@ const FFOutputFormat ff_avs2_muxer = { .p.extensions = "avs,avs2", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_AVS2, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -151,7 +134,8 @@ const FFOutputFormat ff_avs3_muxer = { .p.extensions = "avs3", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_AVS3, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -165,7 +149,8 @@ const FFOutputFormat ff_cavsvideo_muxer = { .p.extensions = "cavs", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_CAVS, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -177,7 +162,8 @@ const FFOutputFormat ff_codec2raw_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("raw codec2 muxer"), .p.audio_codec = AV_CODEC_ID_CODEC2, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -185,6 +171,15 @@ const FFOutputFormat ff_codec2raw_muxer = { #if CONFIG_DATA_MUXER +static av_cold int force_one_stream(AVFormatContext *s) +{ + if (s->nb_streams != 1) { + av_log(s, AV_LOG_ERROR, "This muxer supports only one stream.\n"); + return AVERROR(EINVAL); + } + return 0; +} + const FFOutputFormat ff_data_muxer = { .p.name = "data", .p.long_name = NULL_IF_CONFIG_SMALL("raw data"), @@ -201,7 +196,8 @@ const FFOutputFormat ff_dfpwm_muxer = { .p.extensions = "dfpwm", .p.audio_codec = AV_CODEC_ID_DFPWM, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -214,7 +210,8 @@ const FFOutputFormat ff_dirac_muxer = { .p.extensions = "drc,vc2", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_DIRAC, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -227,7 +224,8 @@ const FFOutputFormat ff_dnxhd_muxer = { .p.extensions = "dnxhd,dnxhr", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_DNXHD, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -241,7 +239,8 @@ const FFOutputFormat ff_dts_muxer = { .p.extensions = "dts", .p.audio_codec = AV_CODEC_ID_DTS, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -255,7 +254,8 @@ const FFOutputFormat ff_eac3_muxer = { .p.extensions = "eac3,ec3", .p.audio_codec = AV_CODEC_ID_EAC3, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -269,7 +269,8 @@ const FFOutputFormat ff_g722_muxer = { .p.extensions = "g722", .p.audio_codec = AV_CODEC_ID_ADPCM_G722, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -283,7 +284,8 @@ const FFOutputFormat ff_g723_1_muxer = { .p.extensions = "tco,rco", .p.audio_codec = AV_CODEC_ID_G723_1, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -295,7 +297,8 @@ const FFOutputFormat ff_g726_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("raw big-endian G.726 (\"left-justified\")"), .p.audio_codec = AV_CODEC_ID_ADPCM_G726, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -307,7 +310,8 @@ const FFOutputFormat ff_g726le_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("raw little-endian G.726 (\"right-justified\")"), .p.audio_codec = AV_CODEC_ID_ADPCM_G726LE, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -321,7 +325,8 @@ const FFOutputFormat ff_gsm_muxer = { .p.extensions = "gsm", .p.audio_codec = AV_CODEC_ID_GSM, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -335,7 +340,8 @@ const FFOutputFormat ff_h261_muxer = { .p.extensions = "h261", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_H261, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -349,7 +355,8 @@ const FFOutputFormat ff_h263_muxer = { .p.extensions = "h263", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_H263, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -371,7 +378,8 @@ const FFOutputFormat ff_h264_muxer = { .p.extensions = "h264,264", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_H264, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .check_bitstream = h264_check_bitstream, .p.flags = AVFMT_NOTIMESTAMPS, @@ -394,7 +402,8 @@ const FFOutputFormat ff_vvc_muxer = { .p.extensions = "vvc,h266,266", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_VVC, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .check_bitstream = vvc_check_bitstream, .p.flags = AVFMT_NOTIMESTAMPS, @@ -417,7 +426,8 @@ const FFOutputFormat ff_hevc_muxer = { .p.extensions = "hevc,h265,265", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_HEVC, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .check_bitstream = hevc_check_bitstream, .p.flags = AVFMT_NOTIMESTAMPS, @@ -431,7 +441,8 @@ const FFOutputFormat ff_evc_muxer = { .p.extensions = "evc", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_EVC, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -444,7 +455,8 @@ const FFOutputFormat ff_m4v_muxer = { .p.extensions = "m4v", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MPEG4, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -458,7 +470,8 @@ const FFOutputFormat ff_mjpeg_muxer = { .p.extensions = "mjpg,mjpeg", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MJPEG, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -471,7 +484,8 @@ const FFOutputFormat ff_mlp_muxer = { .p.extensions = "mlp", .p.audio_codec = AV_CODEC_ID_MLP, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -485,7 +499,8 @@ const FFOutputFormat ff_mp2_muxer = { .p.extensions = "mp2,m2a,mpa", .p.audio_codec = AV_CODEC_ID_MP2, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -499,7 +514,8 @@ const FFOutputFormat ff_mpeg1video_muxer = { .p.extensions = "mpg,mpeg,m1v", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MPEG1VIDEO, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -512,7 +528,8 @@ const FFOutputFormat ff_mpeg2video_muxer = { .p.extensions = "m2v", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MPEG2VIDEO, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -531,7 +548,8 @@ const FFOutputFormat ff_obu_muxer = { .p.extensions = "obu", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_AV1, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .check_bitstream = obu_check_bitstream, .p.flags = AVFMT_NOTIMESTAMPS, @@ -545,6 +563,7 @@ const FFOutputFormat ff_rawvideo_muxer = { .p.extensions = "yuv,rgb", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_RAWVIDEO, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -557,7 +576,9 @@ const FFOutputFormat ff_sbc_muxer = { .p.mime_type = "audio/x-sbc", .p.extensions = "sbc,msbc", .p.audio_codec = AV_CODEC_ID_SBC, - .init = force_one_stream, + .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -570,7 +591,8 @@ const FFOutputFormat ff_truehd_muxer = { .p.extensions = "thd", .p.audio_codec = AV_CODEC_ID_TRUEHD, .p.video_codec = AV_CODEC_ID_NONE, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -583,7 +605,8 @@ const FFOutputFormat ff_vc1_muxer = { .p.extensions = "vc1", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_VC1, - .init = force_one_stream, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; diff --git a/libavformat/rcwtenc.c b/libavformat/rcwtenc.c index ed72de81ef..4ccd7b93c8 100644 --- a/libavformat/rcwtenc.c +++ b/libavformat/rcwtenc.c @@ -84,10 +84,8 @@ static void rcwt_flush_cluster(AVFormatContext *avf) static int rcwt_write_header(AVFormatContext *avf) { - if (avf->nb_streams != 1 || avf->streams[0]->codecpar->codec_id != AV_CODEC_ID_EIA_608) { - av_log(avf, AV_LOG_ERROR, - "RCWT supports only one CC (608/708) stream, more than one stream was " - "provided or its codec type was not CC (608/708)\n"); + if (avf->streams[0]->codecpar->codec_id != AV_CODEC_ID_EIA_608) { + av_log(avf, AV_LOG_ERROR, "RCWT supports only CC (608/708)\n"); return AVERROR(EINVAL); } @@ -168,7 +166,10 @@ const FFOutputFormat ff_rcwt_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("RCWT (Raw Captions With Time)"), .p.extensions = "bin", .p.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT, + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_EIA_608, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .priv_data_size = sizeof(RCWTContext), .write_header = rcwt_write_header, .write_packet = rcwt_write_packet, diff --git a/libavformat/sccenc.c b/libavformat/sccenc.c index ea7865ecf2..040d1ac96c 100644 --- a/libavformat/sccenc.c +++ b/libavformat/sccenc.c @@ -35,12 +35,6 @@ static int scc_write_header(AVFormatContext *avf) { SCCContext *scc = avf->priv_data; - if (avf->nb_streams != 1 || - avf->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE) { - av_log(avf, AV_LOG_ERROR, - "SCC supports only a single subtitles stream.\n"); - return AVERROR(EINVAL); - } if (avf->streams[0]->codecpar->codec_id != AV_CODEC_ID_EIA_608) { av_log(avf, AV_LOG_ERROR, "Unsupported subtitles codec: %s\n", @@ -117,7 +111,10 @@ const FFOutputFormat ff_scc_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("Scenarist Closed Captions"), .p.extensions = "scc", .p.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT, + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_EIA_608, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .priv_data_size = sizeof(SCCContext), .write_header = scc_write_header, .write_packet = scc_write_packet, diff --git a/libavformat/segafilmenc.c b/libavformat/segafilmenc.c index ba06dc655d..88a5b9f972 100644 --- a/libavformat/segafilmenc.c +++ b/libavformat/segafilmenc.c @@ -124,10 +124,6 @@ static int film_init(AVFormatContext *format_context) for (int i = 0; i < format_context->nb_streams; i++) { AVStream *st = format_context->streams[i]; if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) { - if (film->audio_index > -1) { - av_log(format_context, AV_LOG_ERROR, "Sega FILM allows a maximum of one audio stream.\n"); - return AVERROR(EINVAL); - } if (get_audio_codec_id(st->codecpar->codec_id) < 0) { av_log(format_context, AV_LOG_ERROR, "Incompatible audio stream format.\n"); @@ -137,10 +133,6 @@ static int film_init(AVFormatContext *format_context) } if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { - if (film->video_index > -1) { - av_log(format_context, AV_LOG_ERROR, "Sega FILM allows a maximum of one video stream.\n"); - return AVERROR(EINVAL); - } if (st->codecpar->codec_id != AV_CODEC_ID_CINEPAK && st->codecpar->codec_id != AV_CODEC_ID_RAWVIDEO) { av_log(format_context, AV_LOG_ERROR, @@ -287,6 +279,8 @@ const FFOutputFormat ff_segafilm_muxer = { .priv_data_size = sizeof(FILMOutputContext), .p.audio_codec = AV_CODEC_ID_PCM_S16BE_PLANAR, .p.video_codec = AV_CODEC_ID_CINEPAK, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = film_init, .write_trailer = film_write_header, .write_packet = film_write_packet, diff --git a/libavformat/srtenc.c b/libavformat/srtenc.c index 30dc59e0f8..a8a16a7f50 100644 --- a/libavformat/srtenc.c +++ b/libavformat/srtenc.c @@ -39,12 +39,6 @@ static int srt_write_header(AVFormatContext *avf) { SRTContext *srt = avf->priv_data; - if (avf->nb_streams != 1 || - avf->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE) { - av_log(avf, AV_LOG_ERROR, - "SRT supports only a single subtitles stream.\n"); - return AVERROR(EINVAL); - } if (avf->streams[0]->codecpar->codec_id != AV_CODEC_ID_TEXT && avf->streams[0]->codecpar->codec_id != AV_CODEC_ID_SUBRIP) { av_log(avf, AV_LOG_ERROR, @@ -103,7 +97,10 @@ const FFOutputFormat ff_srt_muxer = { .p.mime_type = "application/x-subrip", .p.extensions = "srt", .p.flags = AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT, + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_SUBRIP, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .priv_data_size = sizeof(SRTContext), .write_header = srt_write_header, .write_packet = srt_write_packet, diff --git a/libavformat/supenc.c b/libavformat/supenc.c index 4af92fefa2..9d5ca51894 100644 --- a/libavformat/supenc.c +++ b/libavformat/supenc.c @@ -74,12 +74,6 @@ static int sup_write_packet(AVFormatContext *s, AVPacket *pkt) static int sup_write_header(AVFormatContext *s) { - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "%s files have exactly one stream\n", - s->oformat->name); - return AVERROR(EINVAL); - } - avpriv_set_pts_info(s->streams[0], 32, 1, 90000); return 0; @@ -90,8 +84,11 @@ const FFOutputFormat ff_sup_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("raw HDMV Presentation Graphic Stream subtitles"), .p.extensions = "sup", .p.mime_type = "application/x-pgs", + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_HDMV_PGS_SUBTITLE, .p.flags = AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = sup_write_header, .write_packet = sup_write_packet, }; diff --git a/libavformat/swfenc.c b/libavformat/swfenc.c index f9ac69539b..d106e16d19 100644 --- a/libavformat/swfenc.c +++ b/libavformat/swfenc.c @@ -208,10 +208,6 @@ static int swf_write_header(AVFormatContext *s) for(i=0;inb_streams;i++) { AVCodecParameters *par = s->streams[i]->codecpar; if (par->codec_type == AVMEDIA_TYPE_AUDIO) { - if (swf->audio_par) { - av_log(s, AV_LOG_ERROR, "SWF muxer only supports 1 audio stream\n"); - return AVERROR_INVALIDDATA; - } if (par->codec_id == AV_CODEC_ID_MP3) { swf->audio_par = par; swf->audio_fifo = av_fifo_alloc2(AUDIO_FIFO_SIZE, 1, 0); @@ -222,10 +218,6 @@ static int swf_write_header(AVFormatContext *s) return -1; } } else { - if (swf->video_par) { - av_log(s, AV_LOG_ERROR, "SWF muxer only supports 1 video stream\n"); - return AVERROR_INVALIDDATA; - } if (ff_codec_get_tag(ff_swf_codec_tags, par->codec_id) || par->codec_id == AV_CODEC_ID_PNG || par->codec_id == AV_CODEC_ID_MJPEG) { @@ -556,11 +548,13 @@ const FFOutputFormat ff_swf_muxer = { .priv_data_size = sizeof(SWFEncContext), .p.audio_codec = AV_CODEC_ID_MP3, .p.video_codec = AV_CODEC_ID_FLV1, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_header = swf_write_header, .write_packet = swf_write_packet, .write_trailer = swf_write_trailer, .deinit = swf_deinit, .p.flags = AVFMT_TS_NONSTRICT, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; #endif #if CONFIG_AVM2_MUXER @@ -571,10 +565,12 @@ const FFOutputFormat ff_avm2_muxer = { .priv_data_size = sizeof(SWFEncContext), .p.audio_codec = AV_CODEC_ID_MP3, .p.video_codec = AV_CODEC_ID_FLV1, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_header = swf_write_header, .write_packet = swf_write_packet, .write_trailer = swf_write_trailer, .deinit = swf_deinit, .p.flags = AVFMT_TS_NONSTRICT, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; #endif diff --git a/libavformat/ttaenc.c b/libavformat/ttaenc.c index c7f7e065dc..661aa8fc83 100644 --- a/libavformat/ttaenc.c +++ b/libavformat/ttaenc.c @@ -40,13 +40,7 @@ typedef struct TTAMuxContext { static int tta_init(AVFormatContext *s) { TTAMuxContext *tta = s->priv_data; - AVCodecParameters *par; - - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "Only one stream is supported\n"); - return AVERROR(EINVAL); - } - par = s->streams[0]->codecpar; + AVCodecParameters *par = s->streams[0]->codecpar; if (par->codec_id != AV_CODEC_ID_TTA) { av_log(s, AV_LOG_ERROR, "Unsupported codec\n"); @@ -174,6 +168,8 @@ const FFOutputFormat ff_tta_muxer = { .priv_data_size = sizeof(TTAMuxContext), .p.audio_codec = AV_CODEC_ID_TTA, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = tta_init, .deinit = tta_deinit, .write_header = tta_write_header, diff --git a/libavformat/ttmlenc.c b/libavformat/ttmlenc.c index 212994be50..0af82d5753 100644 --- a/libavformat/ttmlenc.c +++ b/libavformat/ttmlenc.c @@ -126,8 +126,7 @@ static int ttml_write_header(AVFormatContext *ctx) TTMLMuxContext *ttml_ctx = ctx->priv_data; ttml_ctx->document_written = 0; - if (ctx->nb_streams != 1 || - ctx->streams[0]->codecpar->codec_id != AV_CODEC_ID_TTML) { + if (ctx->streams[0]->codecpar->codec_id != AV_CODEC_ID_TTML) { av_log(ctx, AV_LOG_ERROR, "Exactly one TTML stream is required!\n"); return AVERROR(EINVAL); } @@ -224,7 +223,10 @@ const FFOutputFormat ff_ttml_muxer = { .priv_data_size = sizeof(TTMLMuxContext), .p.flags = AVFMT_GLOBALHEADER | AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT, + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_TTML, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = ttml_write_header, .write_packet = ttml_write_packet, .write_trailer = ttml_write_trailer, diff --git a/libavformat/wavenc.c b/libavformat/wavenc.c index 19daa813a0..7e853ce2fb 100644 --- a/libavformat/wavenc.c +++ b/libavformat/wavenc.c @@ -304,11 +304,6 @@ static int wav_write_header(AVFormatContext *s) AVIOContext *pb = s->pb; int64_t fmt; - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "WAVE files have exactly one stream\n"); - return AVERROR(EINVAL); - } - if (wav->rf64 == RF64_ALWAYS) { ffio_wfourcc(pb, "RF64"); avio_wl32(pb, -1); /* RF64 chunk size: use size in ds64 */ @@ -516,6 +511,7 @@ const FFOutputFormat ff_wav_muxer = { .priv_data_size = sizeof(WAVMuxContext), .p.audio_codec = AV_CODEC_ID_PCM_S16LE, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_header = wav_write_header, .write_packet = wav_write_packet, .write_trailer = wav_write_trailer, @@ -523,22 +519,13 @@ const FFOutputFormat ff_wav_muxer = { .p.flags = AVFMT_TS_NONSTRICT, .p.codec_tag = ff_wav_codec_tags_list, .p.priv_class = &wav_muxer_class, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; #endif /* CONFIG_WAV_MUXER */ #if CONFIG_W64_MUXER #include "w64.h" -static av_cold int w64_init(AVFormatContext *ctx) -{ - if (ctx->nb_streams != 1) { - av_log(ctx, AV_LOG_ERROR, "This muxer only supports a single stream.\n"); - return AVERROR(EINVAL); - } - - return 0; -} - static void start_guid(AVIOContext *pb, const uint8_t *guid, int64_t *pos) { *pos = avio_tell(pb); @@ -624,11 +611,12 @@ const FFOutputFormat ff_w64_muxer = { .priv_data_size = sizeof(WAVMuxContext), .p.audio_codec = AV_CODEC_ID_PCM_S16LE, .p.video_codec = AV_CODEC_ID_NONE, - .init = w64_init, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_header = w64_write_header, .write_packet = wav_write_packet, .write_trailer = w64_write_trailer, .p.flags = AVFMT_TS_NONSTRICT, .p.codec_tag = ff_wav_codec_tags_list, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; #endif /* CONFIG_W64_MUXER */ diff --git a/libavformat/webpenc.c b/libavformat/webpenc.c index ea7a321975..85074ae315 100644 --- a/libavformat/webpenc.c +++ b/libavformat/webpenc.c @@ -42,10 +42,6 @@ static int webp_init(AVFormatContext *s) w->last_pkt = ffformatcontext(s)->pkt; - if (s->nb_streams != 1) { - av_log(s, AV_LOG_ERROR, "Only exactly 1 stream is supported\n"); - return AVERROR(EINVAL); - } st = s->streams[0]; if (st->codecpar->codec_id != AV_CODEC_ID_WEBP) { av_log(s, AV_LOG_ERROR, "Only WebP is supported\n"); @@ -230,9 +226,12 @@ const FFOutputFormat ff_webp_muxer = { .p.extensions = "webp", .priv_data_size = sizeof(WebpContext), .p.video_codec = AV_CODEC_ID_WEBP, + .p.audio_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .init = webp_init, .write_packet = webp_write_packet, .write_trailer = webp_write_trailer, .p.priv_class = &webp_muxer_class, .p.flags = AVFMT_VARIABLE_FPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; diff --git a/libavformat/webvttenc.c b/libavformat/webvttenc.c index 1337045325..12a4b776dc 100644 --- a/libavformat/webvttenc.c +++ b/libavformat/webvttenc.c @@ -50,7 +50,7 @@ static int webvtt_write_header(AVFormatContext *ctx) AVCodecParameters *par = ctx->streams[0]->codecpar; AVIOContext *pb = ctx->pb; - if (ctx->nb_streams != 1 || par->codec_id != AV_CODEC_ID_WEBVTT) { + if (par->codec_id != AV_CODEC_ID_WEBVTT) { av_log(ctx, AV_LOG_ERROR, "Exactly one WebVTT stream is needed.\n"); return AVERROR(EINVAL); } @@ -109,7 +109,10 @@ const FFOutputFormat ff_webvtt_muxer = { .p.extensions = "vtt", .p.mime_type = "text/vtt", .p.flags = AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT, + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_WEBVTT, .write_header = webvtt_write_header, .write_packet = webvtt_write_packet, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; diff --git a/libavformat/westwood_audenc.c b/libavformat/westwood_audenc.c index 46456e2ecb..2240d130b6 100644 --- a/libavformat/westwood_audenc.c +++ b/libavformat/westwood_audenc.c @@ -59,11 +59,6 @@ static int wsaud_write_init(AVFormatContext *ctx) return AVERROR(EINVAL); } - if (ctx->nb_streams != 1) { - av_log(ctx, AV_LOG_ERROR, "AUD files have exactly one stream\n"); - return AVERROR(EINVAL); - } - return 0; } @@ -133,8 +128,10 @@ const FFOutputFormat ff_wsaud_muxer = { .priv_data_size = sizeof(AUDMuxContext), .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_WS, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .init = wsaud_write_init, .write_header = wsaud_write_header, .write_packet = wsaud_write_packet, .write_trailer = wsaud_write_trailer, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; diff --git a/libavformat/wvenc.c b/libavformat/wvenc.c index 9d9190f252..6d5fefe1bc 100644 --- a/libavformat/wvenc.c +++ b/libavformat/wvenc.c @@ -33,8 +33,7 @@ typedef struct WvMuxContext { static av_cold int wv_init(AVFormatContext *ctx) { - if (ctx->nb_streams > 1 || - ctx->streams[0]->codecpar->codec_id != AV_CODEC_ID_WAVPACK) { + if (ctx->streams[0]->codecpar->codec_id != AV_CODEC_ID_WAVPACK) { av_log(ctx, AV_LOG_ERROR, "This muxer only supports a single WavPack stream.\n"); return AVERROR(EINVAL); } @@ -85,8 +84,10 @@ const FFOutputFormat ff_wv_muxer = { .priv_data_size = sizeof(WvMuxContext), .p.audio_codec = AV_CODEC_ID_WAVPACK, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .init = wv_init, .write_packet = wv_write_packet, .write_trailer = wv_write_trailer, .p.flags = AVFMT_NOTIMESTAMPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; diff --git a/libavformat/yuv4mpegenc.c b/libavformat/yuv4mpegenc.c index 1d641eb9e4..35397cbde0 100644 --- a/libavformat/yuv4mpegenc.c +++ b/libavformat/yuv4mpegenc.c @@ -221,9 +221,6 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) static int yuv4_init(AVFormatContext *s) { - if (s->nb_streams != 1) - return AVERROR(EIO); - if (s->streams[0]->codecpar->codec_id != AV_CODEC_ID_WRAPPED_AVFRAME && s->streams[0]->codecpar->codec_id != AV_CODEC_ID_RAWVIDEO) { av_log(s, AV_LOG_ERROR, "ERROR: Codec not supported.\n"); @@ -297,7 +294,9 @@ const FFOutputFormat ff_yuv4mpegpipe_muxer = { .p.extensions = "y4m", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_WRAPPED_AVFRAME, + .p.subtitle_codec = AV_CODEC_ID_NONE, .init = yuv4_init, .write_header = yuv4_write_header, .write_packet = yuv4_write_packet, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; From patchwork Wed Mar 20 02:12:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47253 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp121161pzh; Tue, 19 Mar 2024 19:14:24 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXpqwPCC9wcQ4fY9vHI/Gl+FOpJZdr1BDzyUoG+exuUySCBtKhSMZGKtCB8zrSruun+HRYNZ1Q4zlDnDqD5uLv+Li4wV7mcBOAt0g== X-Google-Smtp-Source: AGHT+IGK4+KdOW+VoViUaNDo93NO3oQMowkilDsb9T3gk5hDsxffYFupC8+w44FIQ3EcnBRMPUDO X-Received: by 2002:a17:906:5948:b0:a46:bf6a:2a27 with SMTP id g8-20020a170906594800b00a46bf6a2a27mr4980047ejr.40.1710900864187; Tue, 19 Mar 2024 19:14:24 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l17-20020a170906795100b00a4645016301si6146232ejo.155.2024.03.19.19.14.23; Tue, 19 Mar 2024 19:14:24 -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=@outlook.com header.s=selector1 header.b=VzoGAd7R; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9283268D48F; Wed, 20 Mar 2024 04:14:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2037.outbound.protection.outlook.com [40.92.59.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C707268D464 for ; Wed, 20 Mar 2024 04:14:08 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PO30BGqxcv9yO/wDoQObFNksvl0ItGkafSXWgpeZK2QsCAukZi0Qg8e8Ia6QN0VdV2/ny6pqsmcD8yWAGN8j956n6Mr5CW51nk10ENoqfO7KJPIfLZiw2YDp/NF0VgeHZzoPjmvaWKWwEUMJ3gedDyKOB1T8jK67w2wSKlYIQQVWnZRMsw2jwsKvrDWZdmVrQMPWDXJJ8ILlL++Qn3ExDr8qfjAstNg41mFfhIfmy0x7dczHwJxAQA3Rpe78dX43dg1sTg5hK1W2laZVBLtkw/CDf/wANqzijCShSNZf9W7K19w+9gRsK1M7PfsHTukxQl8RMSwF6UT7gTcRR9w2iA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=d962hRGydD8JVj1o3sbanfijMWu8kcCRLUhiz9DpUKc=; b=D41j8f5xPJhNkOJ2VyKupFNH8AKpD0DpgjVtYk/SbBbqdy+ngHI5RFaGcNTYdvd3l+9RoZAAIsDrDV0BUCel4qrb9TzPXx4xhV98sLBVMXwbhXdu4zXopTB38+hb6Xhr6c6SGONIgmnm1dMPn4lVUx7kxn7i0NADeov0LznPJf//G4LUJkwMLg29fGJ8H9Re1ePk2buRC3RSUsqCQSlrO58wPUA/NXtQeK3n4fCBAg3fsHhexdS8xrF4bUq9FnC0tMq7QoSk8yKolMF7VNhushNlsp2OhbCfP0tKmNfegJ1040/NY4Fee07hmKFKCfsHcjhWhU9muWJJJ8y+rRRKnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d962hRGydD8JVj1o3sbanfijMWu8kcCRLUhiz9DpUKc=; b=VzoGAd7RA3KCBtR9K2t1mnmpBg/XVoK3c620smewCWu2IJKJo9wvqTzYo5amtrezIKGG1Br13M1HQbLjp+BTlPMSKeKXeSAL4lef1PFIMMOBjm2AuzFltEoHUR2GanuBf9fzm1yrRJgiTQ6n4jF8tRiBQiPbL23k3a5D8NMAgJm6gQmMTDZWr0PiNRzy5vdyLtTDZXPFkoXK0jiNKnITOf8/3zfTQSe6Bqf76xLke0P7l2SfkBiRv4EMJnzWpwtxjPbzf8gdvoyTTIO7iS3Rgt/+jnwXGFguts6nnVDKxnHJsQri9ZmShZyx3vA/jvyTDjD0Xkgo/3gIHllbsjYHKw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:14:07 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:14:07 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:52 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [ZAzi6s1AaAal7FIAUT9ZimSR17fCUjuihH6welJcdto=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 8744dddb-d304-4121-9e60-08dc48836c3a X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5Un6GgEY50+l709eHc5nIX0aJ6iu97RLIGyfl4melpHfUr6fOjilpDQ40LFR7TPH8IOxVgBxiuOSdQQlM4e6E22PqHsHgDKoJPngc2cGVo6FSv1mVfcafONqTYX2CWHSMqaE473NCgM1UsnEdNwxcBE+GecHo9ofCk+2cLk958dqt8RDVjWhrLzqxu6yXo/SANKz1IQX7osSjR59O9Kh4tfkrA0BwdrOmbPiiYOhio/AbpauyBn0WGLKxD2bC+DFWvkkXvvwH+c6cmLgAmaPQucC1tTiNY201eb3eW9m+iQ9ORgEATPzCcitXcNLCHLGTtY1T4Iryg8Idjjx4Iyci87yZ6lKG5um5PhFHePEnCvG1370GPdj+muthdjjT8oXGiyx6JYY+pLbLW6SdN0rSLhzixbhiCrYadFCWbwqhcgGJfIhOJ12AIXCp0mJKnpYt1buFOQYtZlVbDkZG9XdjttWkPjIvUekoF7m4ysdFEFBvpzyBkbHCV51N3C7W0EUISyVJlbDrxQURRkVNQ6GtbxcFn8JQgeZJxVtmZTcoW4W5nIAy83ZQ+mqxtNhf+32yHo1t2oWpvR2WYCvQb4NPA/zR0omTsmfaWd/w7/yUes4kEb+jX6ic/qr7QVFQ8bMWg21dh6HAckX7KRLvZn/3vLpiv1Lfm8u6mj2AxpioQ1/yJ0Yn3Eefto90iowfnUdPVKW07rMp5HrJBhpojzrwxXFhu+/YE80tmBYSYgIT8Tgo= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gJq8Yd5lA5X6wARcIs9UrWZynmMJaRjypCMX79X2FbpA+OMdYb/TC8jcarAD2sAUrjIwVfSw2mcFbCa/ceiX7WwrvBUkbEUkO204ACT8wpRlsskQ3lm6EJmK3BmbCp6tEQR0RMix4S3JkazuyzMyDpMWCtC6XlP6OOH/tnEwMoi0OqNYMuSqDeHC/PufKDpOa6zRn2cZ7+qmSkX3oQmROg5RHHujTgjz0usHwyYT22bZULyj1fJY06kxuhCtCZYzYLkKKDTgX13FcN0BdVpvlMyewr2/l72IGpaaDHLNIWpU+lIEQw+/jklR7le0LUvhl/+uD1uJoLVJkiQjQtG7OhnYEIBSPhWq26i07y3rzcOlc6T8Aioav9sbGs7RWnp/KU9Z4X//08gbFRGfM+ntf4TEObx07V6Kj47Nro2GvUdk1kYr0Ldv1UuktQXfvSaVGSUUn1PeCfSGKjwH+VoQRV+UEYJz17/vR2WwrpJfBvmmGyLoDC8gHLgWRxPaMnVvFI87qOiPw031j84Ul+r4BDL6Buwotk2Ba/0Goik8OjMIHbHeReT/61OFVf6aL4pR28LMSSjxNpUAHTjtZWfOQmuNkBDg5eIZqfdjafcKN3BgwbTTt5T0w+ULiOKEjQQa X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZZwt5FgrIcAGrn6V/7jAoYTOpet5DMH+vGMmKk2gMfXANS9ss1idcmw3Iaefy0w1JFTrxoxEbcDcVHa7CTyR/L47jR37JkIHiZOASeQFCtQodj5rHG0dFjTiIFTwmz6ikOSEKv/TActREV9Ee0MlEMmejuV3Cn8d+KQF2KUIK+WtZ9GVGc9gEC3bC7vGk+Ytquk0IEDe6sUxUPlqH51GKqieuPoQsiabn9suxAcckpEw7lIEMHNc8n+TPVi4HYzLe4Jh81WsipSBkS4+nKHbYWxnDfuYx45gJgT0xGff5Ap1nkNZ3XUOMLwoyPdiUYZe8ionEsTmEpP/y2pv4pDl6drieV2JDfpfByK4k8tF/Hp+uE4oFhIG2f07OAnn0dX1tDoUbtohADR+05PuXfPs2vs30E996TkFlyoiE+5Oay5hq9GGcLEtRA5mlLCDMw5LKpcMKxNYzc0lwoYU/egz15dJhqLosM5TFhnU/vIDNbu392J8vjuilYG4rot55vJkK+0vl/2ZOlFoRmjAPjQBowSf4GW786PeqluoB/cUISt3IF0Vrhh++jnUfId+IK33W8KWSO2s9tp8pISOWzt4bf7lmggj3ckYcT4xDtUMtOZeF9o0f1K4FCQGljIy+RsealQYjIDrtgVfKpdQFG2e85G5+NVhFXJsDvjryZpn6DfksPqtkdSJ8DHdTh6Y34jELLyuMspHWeccjSrBIRKtn4u5NRjXdWcS0axCRekw7+Qjltye5YqOiiOob++gqDoiFEtRkY5KOFN4iceBsYKkYoCHL92Wyg9fOgmNKDJJlQdCGdasz41umYRLa7BhkpuJiYyPyrsiqfSddPY3K5Ghojwx5nDugwWn+NnseNQbfUJZZA+mG4PrB++UOSsk36cibV7JQOAi8ZtydEzKJS1Lj4uazYxo6ZoajSG5EUy8LPAzFhXg4zKI1+XSTdXq9IDi4U4VVrylu6nx5V8pJ4Ce1Z2VNrvQRAPNb79P9P/N5s49oBHnNCfoQHHFn45YsfalbD2fYoMQ5H3lBAUdxIhOnl7mPKbx0i/Yq3/MEzBESrlD2PycCQli5E2JRxPcwN4c7lJwxoiZ6hrbJv3TCxTchltZyRb8+GHUvyV0ekWK2x12GpYyoTD/G3Wyy5hEZV3YiPpA0EkLbq2k3iD00LZ5AsGxrGyfD87gdrDXNcN3XCxt8gQIZs/NtcKmsqIfh3wcpL5YNdXFVFHa/InzHQwhwCAtBNQT1Y6fqzn59oiGAMB+l/B0GCWiWyNXMLNRkF6qIgY6WHdDnnuftHQgh+YilQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8744dddb-d304-4121-9e60-08dc48836c3a X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:14:07.5454 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 09/13] avformat: Enforce one-stream limit where appropriate 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: uV/YhcCe9hjG Several muxers (e.g. pcm muxers) did not check the number of streams even though the individual streams were not recoverable from the muxed files. This commit changes this by using the FF_OFMT_MAX_ONE_OF_EACH flag where appropriate. Signed-off-by: Andreas Rheinhardt --- libavformat/a64.c | 3 +++ libavformat/adtsenc.c | 2 ++ libavformat/amr.c | 2 ++ libavformat/amvenc.c | 2 ++ libavformat/bit.c | 2 ++ libavformat/daudenc.c | 2 ++ libavformat/filmstripenc.c | 2 ++ libavformat/fitsenc.c | 2 ++ libavformat/idroqenc.c | 2 ++ libavformat/jacosubenc.c | 3 +++ libavformat/latmenc.c | 2 ++ libavformat/mmf.c | 2 ++ libavformat/omaenc.c | 3 +++ libavformat/pcmenc.c | 2 ++ libavformat/rsoenc.c | 2 ++ libavformat/smjpegenc.c | 6 ++---- libavformat/soxenc.c | 2 ++ libavformat/spdifenc.c | 2 ++ libavformat/vc1testenc.c | 2 ++ 19 files changed, 41 insertions(+), 4 deletions(-) diff --git a/libavformat/a64.c b/libavformat/a64.c index 23b20fc8b7..6e722c7e9f 100644 --- a/libavformat/a64.c +++ b/libavformat/a64.c @@ -65,6 +65,9 @@ const FFOutputFormat ff_a64_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("a64 - video for Commodore 64"), .p.extensions = "a64, A64", .p.video_codec = AV_CODEC_ID_A64_MULTI, + .p.audio_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = a64_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/adtsenc.c b/libavformat/adtsenc.c index c5765cc92e..7eaf91630c 100644 --- a/libavformat/adtsenc.c +++ b/libavformat/adtsenc.c @@ -241,6 +241,8 @@ const FFOutputFormat ff_adts_muxer = { .priv_data_size = sizeof(ADTSContext), .p.audio_codec = AV_CODEC_ID_AAC, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = adts_init, .write_header = adts_write_header, .write_packet = adts_write_packet, diff --git a/libavformat/amr.c b/libavformat/amr.c index 1b80810302..0db0a8d26a 100644 --- a/libavformat/amr.c +++ b/libavformat/amr.c @@ -273,7 +273,9 @@ const FFOutputFormat ff_amr_muxer = { .p.extensions = "amr", .p.audio_codec = AV_CODEC_ID_AMR_NB, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = amr_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/amvenc.c b/libavformat/amvenc.c index e1b1ffd42e..9fcc09add2 100644 --- a/libavformat/amvenc.c +++ b/libavformat/amvenc.c @@ -410,6 +410,8 @@ const FFOutputFormat ff_amv_muxer = { .priv_data_size = sizeof(AMVContext), .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_AMV, .p.video_codec = AV_CODEC_ID_AMV, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = amv_init, .deinit = amv_deinit, .write_header = amv_write_header, diff --git a/libavformat/bit.c b/libavformat/bit.c index 8133b1f44d..81a954c392 100644 --- a/libavformat/bit.c +++ b/libavformat/bit.c @@ -167,6 +167,8 @@ const FFOutputFormat ff_bit_muxer = { .p.extensions = "bit", .p.audio_codec = AV_CODEC_ID_G729, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = write_header, .write_packet = write_packet, }; diff --git a/libavformat/daudenc.c b/libavformat/daudenc.c index a995838351..f1e0da058b 100644 --- a/libavformat/daudenc.c +++ b/libavformat/daudenc.c @@ -62,7 +62,9 @@ const FFOutputFormat ff_daud_muxer = { .p.extensions = "302", .p.audio_codec = AV_CODEC_ID_PCM_S24DAUD, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .init = daud_init, .write_packet = daud_write_packet, }; diff --git a/libavformat/filmstripenc.c b/libavformat/filmstripenc.c index 9033dba692..b2a4cee8fa 100644 --- a/libavformat/filmstripenc.c +++ b/libavformat/filmstripenc.c @@ -66,6 +66,8 @@ const FFOutputFormat ff_filmstrip_muxer = { .p.extensions = "flm", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_RAWVIDEO, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = write_header, .write_packet = ff_raw_write_packet, .write_trailer = write_trailer, diff --git a/libavformat/fitsenc.c b/libavformat/fitsenc.c index 14a4572f70..605056af59 100644 --- a/libavformat/fitsenc.c +++ b/libavformat/fitsenc.c @@ -198,6 +198,8 @@ const FFOutputFormat ff_fits_muxer = { .p.extensions = "fits", .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_FITS, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .priv_data_size = sizeof(FITSContext), .write_header = fits_write_header, .write_packet = fits_write_packet, diff --git a/libavformat/idroqenc.c b/libavformat/idroqenc.c index 9baf9ad1b1..75a191189c 100644 --- a/libavformat/idroqenc.c +++ b/libavformat/idroqenc.c @@ -66,6 +66,8 @@ const FFOutputFormat ff_roq_muxer = { .p.extensions = "roq", .p.audio_codec = AV_CODEC_ID_ROQ_DPCM, .p.video_codec = AV_CODEC_ID_ROQ, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = roq_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/jacosubenc.c b/libavformat/jacosubenc.c index fa0f9fdaa2..a792fda42e 100644 --- a/libavformat/jacosubenc.c +++ b/libavformat/jacosubenc.c @@ -36,7 +36,10 @@ const FFOutputFormat ff_jacosub_muxer = { .p.mime_type = "text/x-jacosub", .p.extensions = "jss,js", .p.flags = AVFMT_TS_NONSTRICT, + .p.video_codec = AV_CODEC_ID_NONE, + .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_JACOSUB, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = jacosub_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/latmenc.c b/libavformat/latmenc.c index 8eec632c54..05004048aa 100644 --- a/libavformat/latmenc.c +++ b/libavformat/latmenc.c @@ -268,6 +268,8 @@ const FFOutputFormat ff_latm_muxer = { .priv_data_size = sizeof(LATMContext), .p.audio_codec = AV_CODEC_ID_AAC, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = latm_write_header, .write_packet = latm_write_packet, .p.priv_class = &latm_muxer_class, diff --git a/libavformat/mmf.c b/libavformat/mmf.c index b3e257616d..fab4509711 100644 --- a/libavformat/mmf.c +++ b/libavformat/mmf.c @@ -319,6 +319,8 @@ const FFOutputFormat ff_mmf_muxer = { .priv_data_size = sizeof(MMFContext), .p.audio_codec = AV_CODEC_ID_ADPCM_YAMAHA, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = mmf_write_header, .write_packet = ff_raw_write_packet, .write_trailer = mmf_write_trailer, diff --git a/libavformat/omaenc.c b/libavformat/omaenc.c index 6d0b47465d..b553bc3e9d 100644 --- a/libavformat/omaenc.c +++ b/libavformat/omaenc.c @@ -97,9 +97,12 @@ const FFOutputFormat ff_oma_muxer = { .p.long_name = NULL_IF_CONFIG_SMALL("Sony OpenMG audio"), .p.mime_type = "audio/x-oma", .p.extensions = "oma", + .p.video_codec = AV_CODEC_ID_NONE, .p.audio_codec = AV_CODEC_ID_ATRAC3, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_header = oma_write_header, .write_packet = ff_raw_write_packet, .p.codec_tag = ff_oma_codec_tags_list, .p.flags = AVFMT_NOTIMESTAMPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; diff --git a/libavformat/pcmenc.c b/libavformat/pcmenc.c index 7f71644308..4879f1deed 100644 --- a/libavformat/pcmenc.c +++ b/libavformat/pcmenc.c @@ -33,7 +33,9 @@ const FFOutputFormat ff_pcm_ ## name_ ## _muxer = { \ .p.extensions = ext, \ .p.audio_codec = codec, \ .p.video_codec = AV_CODEC_ID_NONE, \ + .p.subtitle_codec = AV_CODEC_ID_NONE, \ .p.flags = AVFMT_NOTIMESTAMPS, \ + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, \ .write_packet = ff_raw_write_packet, \ }; #define PCMDEF_2(name, long_name, ext, codec, enabled) \ diff --git a/libavformat/rsoenc.c b/libavformat/rsoenc.c index fe22e22812..552fe5816a 100644 --- a/libavformat/rsoenc.c +++ b/libavformat/rsoenc.c @@ -98,6 +98,8 @@ const FFOutputFormat ff_rso_muxer = { .p.extensions = "rso", .p.audio_codec = AV_CODEC_ID_PCM_U8, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = rso_write_header, .write_packet = ff_raw_write_packet, .write_trailer = rso_write_trailer, diff --git a/libavformat/smjpegenc.c b/libavformat/smjpegenc.c index 56907c96f7..5b8f41d76d 100644 --- a/libavformat/smjpegenc.c +++ b/libavformat/smjpegenc.c @@ -39,10 +39,6 @@ static int smjpeg_write_header(AVFormatContext *s) AVIOContext *pb = s->pb; int n, tag; - if (s->nb_streams > 2) { - av_log(s, AV_LOG_ERROR, "more than >2 streams are not supported\n"); - return AVERROR(EINVAL); - } avio_write(pb, SMJPEG_MAGIC, 8); avio_wb32(pb, 0); avio_wb32(pb, 0); @@ -139,6 +135,8 @@ const FFOutputFormat ff_smjpeg_muxer = { .priv_data_size = sizeof(SMJPEGMuxContext), .p.audio_codec = AV_CODEC_ID_PCM_S16LE, .p.video_codec = AV_CODEC_ID_MJPEG, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, .write_header = smjpeg_write_header, .write_packet = smjpeg_write_packet, .write_trailer = smjpeg_write_trailer, diff --git a/libavformat/soxenc.c b/libavformat/soxenc.c index 359835f27b..6217eec043 100644 --- a/libavformat/soxenc.c +++ b/libavformat/soxenc.c @@ -112,8 +112,10 @@ const FFOutputFormat ff_sox_muxer = { .priv_data_size = sizeof(SoXContext), .p.audio_codec = AV_CODEC_ID_PCM_S32LE, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_header = sox_write_header, .write_packet = ff_raw_write_packet, .write_trailer = sox_write_trailer, .p.flags = AVFMT_NOTIMESTAMPS, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; diff --git a/libavformat/spdifenc.c b/libavformat/spdifenc.c index a929ad2db3..f97f4d0175 100644 --- a/libavformat/spdifenc.c +++ b/libavformat/spdifenc.c @@ -681,9 +681,11 @@ const FFOutputFormat ff_spdif_muxer = { .priv_data_size = sizeof(IEC61937Context), .p.audio_codec = AV_CODEC_ID_AC3, .p.video_codec = AV_CODEC_ID_NONE, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_header = spdif_write_header, .write_packet = spdif_write_packet, .deinit = spdif_deinit, .p.flags = AVFMT_NOTIMESTAMPS, .p.priv_class = &spdif_class, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; diff --git a/libavformat/vc1testenc.c b/libavformat/vc1testenc.c index 89b916deeb..6b4cbd1152 100644 --- a/libavformat/vc1testenc.c +++ b/libavformat/vc1testenc.c @@ -88,7 +88,9 @@ const FFOutputFormat ff_vc1t_muxer = { .priv_data_size = sizeof(RCVContext), .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_WMV3, + .p.subtitle_codec = AV_CODEC_ID_NONE, .write_header = vc1test_write_header, .write_packet = vc1test_write_packet, .write_trailer = vc1test_write_trailer, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, }; From patchwork Wed Mar 20 02:12:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47254 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp121206pzh; Tue, 19 Mar 2024 19:14:34 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUsd2SJCR0/tjxck1zqU5KhodSSgTOruDct8Rs1hNTjQikAvl5Px5q4kiPv6dX/vl22E8hAjdwnxAvxg9YAgi4FvaNtphp1AHCrzg== X-Google-Smtp-Source: AGHT+IEosmk5i2etzcu0GGt15kw7WyzU3nLDYIzfFsEpvZNGiL2EUd1EMN58DYYi9XXYKvnbxUIx X-Received: by 2002:a05:6402:538d:b0:565:fb4c:7707 with SMTP id ew13-20020a056402538d00b00565fb4c7707mr346015edb.26.1710900873839; Tue, 19 Mar 2024 19:14:33 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id et6-20020a056402378600b00568ccb618dfsi3427131edb.270.2024.03.19.19.14.33; Tue, 19 Mar 2024 19:14:33 -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=@outlook.com header.s=selector1 header.b=qR7hZ3LM; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B0CC168D4A1; Wed, 20 Mar 2024 04:14:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2037.outbound.protection.outlook.com [40.92.59.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 36C8F68D464 for ; Wed, 20 Mar 2024 04:14:14 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ktNu0skZH0kbVK3ipwPjrsuvfFSMCV8wkxCrLCwdHdEiUM2JqOSzg1KoUQdKixQgTQRc9oOLXB/HhJSLL7RpzS/Tkbib9jlCDqnXkNM3hO/+mr1LMPV+u+LKM267XP/zYV99rrw9ULeHsT8j+J1h5GCB4xjrUw4b7sgajwb5MVmxoARVSe/LaDhk9lUomW9jPkm9S3HXlgp4qSO2sJOgFS+NMaWeVb1ppdRk+dx8bFKZh1zeZLGNq3lQD3Cpcy+CASHAOB+kCaZI/2ycvRR1qx1zuIdT2ybyChuyLY9uPxyssZ0GV8RWuUgxxfj2TMoaRDKlwxuWpHxqxlvdhK8rJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ycLIuxZNLx0HNMHiuf+yNiv3hRBNQ1+DWNdDNjHXSvs=; b=iuga7A15VW3M275ppXxap/4A7q5NeqsgDcz7rAlWALQ+kfUBJASJEEUzP2kkOFHgMxWeBg9UzDSjocdYdsLubqftceiL+d9hJrwQE6JHFdxHR5hcBdBInIA+lEQ3mzJzlF8PrS3eLqPp6e3diM9jA9EpPxG8smBl9x6SbpulVEBqgMW2m5Rj5I/uAnE75P6EJlVx/kZBn9qvPYKtzPrpIMD6gUHe3Tu/s+4hNn42bhhqNEYkJamJGfRGA5WrwqsMAH+lwT2QD32h2DOresfqkp5AIEdb+98NCNOIjb7yRJLkQLwGFW/txmOIVnesFUkq4GNk6B2mbxLWG08c0TGiSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ycLIuxZNLx0HNMHiuf+yNiv3hRBNQ1+DWNdDNjHXSvs=; b=qR7hZ3LMQgHcYIwirln2A4fqxgCxopF4wg+ETTK1zI2iN6Hkw7r1P9mKXN0eUzvmo8KCbfUi0zVfnc08y9rPCUASNJl87vM1kjLWnDS5SeqR6ynkq/JL+3Fgts8foVbACOu/m8TbEsprwd0H2/nIQSfr2HYJ5bzcrTzTb3OAjXzXc/PJAeu6/P8V6PT7zyAeWGHk8tdlstU3hhX2CpWJzbAIsAT6eW4q87o/KobZaS4vMDeKKb7Gcj0fhXIJL5xj7MG1mST7asgpgiA2dz4Hd3yJuFE6q2/VNmdFwDa2K34ORFdDPSud2nr74PfYEB3Q4nCSGLzD1A3bwr5sMyioHw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:14:09 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:14:09 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:53 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [5GigacHdzDCMe+kgE2vpktWHluMngQWO/LrXMRToI1o=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: d0119b65-121b-4146-d959-08dc48836da7 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5UoSbzTEgthRuAm1gPLP6eUNB1dNS25Pu1VsVKClbmeWxXKWBdv8OSotIN9byK/9KIsVP0xFIouBYBGVOGJQkOJNPjFERBfxvV37ApoNgFmGwFn3KNAf22U/a8Ludsboj9cyQgu9/8n4mltceQEcNSJRkEoLOs7hR+X4XtUombdj/qoVcYi6AiNCaZq1w9zVviNhxxY0qqdExfG6VOz8kMAL29L2B6Sww/17W2eOsqHwOk6Yrv6+nsVHDkraZ3wyWeZ7Aj4D9OTFo2mpOfcOvkUbypSmNyui4j0Qw3Un6koB+O9+9cii/ojmNQPteTix4lS7x7Oly4Ba2NDUvxhb6x328o3IkpkU8ZFSK3Hw3M9mC2itk6LZz/gflUqE/5Pudq4EnKy7aezk5P3ekeQsob1xRKvdzi49rpB2+zfY0vyaVAPIXTe5zeROW1nnZqni9l2dfA3ayi0j4xEm9O8mo6VU69YqTLPsJZf5B3gRfpu6b3iVyirsswkjlg4Wa3CyW5dSeD0qiXKG7yY/A9HMTjikq4gXImS1rfV/zrxaSquUVHitRm7nISdoSZLGrj+bxhshm1sC/uNlo2Z7J3s7eH7rY4LhWyUKE8l5HN79N46Nz8gV07BXq5VvXkMHJfeivjnviTb0j8nZ2n7kIfoWh3yIkzroQVEAtem6/9LgQPmIbSCkrA1Jq0UC03ulNuOjRHvxn/Jz6ZCeEGn2swR8XS2RTvQaJ+wOtMeqAzHXeNey4= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hNS79E1vFVYcvU288R9Z28eEg1/aJV6uW38pWWHZqW3JCKDNsI4VRCAdV+U2k9BBLUS7Eg2PzIlkUwun7jUctMyLDuvh+gP02l/UmwV5Vu3P/Y0X71Od01fSnDBVWUexXPpnd2sRm7JfDyXbVWPypjasmQLVA6tRgdRlh1l8wuG6KMxyZOqRXGRy4hKhbiPtlUGVIzOe9knD+GjOrnfoxJC1Mt4C2C/EcXwmYhfluipJEVZil7khEAevd4FxCrACC8engHIqJC3Myq2UlRMOmufnTfqDp2VlOpjBZhQKdptszP/dRWpgOrg/CBi+MEmRBmYbg6xqTw106e6ch6OcBI+Yi/xcDJBKYN1kTlJiQ/VkEeO00TFSKLMfemzKjd3Z7lHjW5IOgDH9P8UGLFAhqqcNIKlOcFh1tWbEOdsZuyQDsxfqfaUsM31PjiocHjYfEcB9edXVtc9rRahGZCBy61Ix0GmHZYaSjB7wMWyZ1SbbOBXhE38vzi8ORQtuoju1b1Y6eylqJZTzG+PWI5a9RT56lIab0IQsLwV6D+i8NCVnGgATLK/yfbAvQedAyg4yJKlDSGWl6zIDCo/wSP7UQQlF5StOAFeLijUEUKutUb/R/b59LmyEW0I2hPQ1lO9CpDWpxzWqW/8qWj8AeeB0gnii+FfhlBPTJ5aa/16q3g5wx8lHRbJahFQq4BhhOSgz X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: uVkdUHQbjPPpvw1+J23iQQ7j+QsnrUomLNLLh3KeDKuA2WoeettsQltcCvhDybe7lPqL1pp+8Bc+YP97kmhmRefJvZnFrIEl/zvHGxUQJgr59tfaBFtEMtXVriAdFdhbdKi7cEtTISs3E5ySc53cH4WsJAvpUJmK/VHrgnnw1HQbM5wI6Ra6/xwtc/XZ8v4nYkY6P4+3rAWJEA4Rs27zOX9OwMAFMmkZX8nUCz84d+09KkhXycknmLaulS/LIf9avbxRsRnnaPu0WuYdQr/DWv8c3zZhHa2EwLQBRNkREZZNJHfb8AILZllW8V1oyYkgabgxMbmP2KY85eX393nFf3KetBZGeI4pkWMyotl4OlFk+B1fkmlWhS5Gpz8KvOXcBdLNtMNkuZQA8aQ/c1kfhrwLBX8Ied33HABHYj3T4l/ATeyB2g/UOYOp67bKhcHncEMO3g/G/TgJmpaKY/nE2eMudkV4cSaU2ZRQWrSW6VSXJfIEU92ihdszUEn5g1gcfP3BHrOBhHaFSmAbYmpvygIXW/l/5Q7L74MiDMgD05OCQSXJV24G347mCcj7kE8gVNedOw+31vneCY6ovfQv9QWT60rmTQv4iRVGNXAZSVskfPwUAITDkn+PWlV64aAdPiWuX8fYW8xomCWG7O3vpbZD+YTJs+XiUrfQYuDP1/+5Ma5gU76iAe/MPmTBLc1uz5xTp2G52rwlQkoe553VnLKpwUMY5nma714Umufj5JRCPau1q0oawCgBvyXrPLK9a7kx9VRk1TqAAoJIvQ6k25G0MXefE2n+hNuFuKDk18KRPzt1X9xnpoE7GfnfeqDFrbUZya2hYHjE+0K7slHy0LZNGr+SSKdJFFA7swkZH9655BWxpkrAdQhJEj2NzXnWy/lydNUVJ6WNGLkny0XYmDRz/eLT6/nohjxp1LEiwztehxyOjQFjntsAjW/EMjrMnJ85ojSfzKiAKg6KK0NdMM3DuGBr5y0b6hz9yy72qYxCTqykh2g2/1QAHCtn79q1O0DH8HEuQRVDmyATkRRoeP0tDXtcuix8Z7vAwsHrQUc1eyOkwvy+k+lSkwFacbT2wwxHjsZ2kh6KCr2o72HYpJJA4+rsay6u5WDizC6DOjHaOoZtNWCa9YHbf5h6BGKMD4Q0rUt93XZAIf8y/2SUF5vcioUyGx86hs0/NuyJbEEdqG9MHq+dBGub09nfkdg1rx/emWInXbix1hLU0rM2/009a7kmUF2MsuLOKUdElnqTvkXHAcH8RwL0bLnb6SaVQurAgmc/g107C1kMsE+CIg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d0119b65-121b-4146-d959-08dc48836da7 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:14:09.9284 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 10/13] avformat/mux: Add flag for "only default codecs allowed" 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Gc/EjVN+NRMH AVOutputFormat has default codecs for audio, video and subtitle and often these are the only codecs of this type allowed. So add a flag to AVOutputFormat so that this can be checked generically. Signed-off-by: Andreas Rheinhardt --- libavformat/ac4enc.c | 17 ++--------------- libavformat/adtsenc.c | 7 ++----- libavformat/aeaenc.c | 8 ++------ libavformat/alp.c | 9 ++------- libavformat/amvenc.c | 9 +++------ libavformat/apm.c | 9 ++------- libavformat/apngenc.c | 9 ++------- libavformat/argo_asf.c | 9 ++------- libavformat/argo_cvg.c | 9 ++------- libavformat/assenc.c | 7 ++----- libavformat/bit.c | 5 +++-- libavformat/codec2.c | 12 +++--------- libavformat/gif.c | 9 ++------- libavformat/ilbc.c | 8 ++------ libavformat/kvag.c | 9 ++------- libavformat/microdvdenc.c | 8 ++------ libavformat/mux.c | 11 +++++++++-- libavformat/mux.h | 9 +++++++++ libavformat/mux_utils.c | 2 ++ libavformat/rcwtenc.c | 8 ++------ libavformat/sccenc.c | 9 ++------- libavformat/ttmlenc.c | 8 ++------ libavformat/vc1testenc.c | 7 ++----- libavformat/webpenc.c | 10 +++------- libavformat/webvttenc.c | 9 ++------- libavformat/westwood_audenc.c | 10 ++-------- libavformat/wvenc.c | 14 ++------------ 27 files changed, 72 insertions(+), 169 deletions(-) diff --git a/libavformat/ac4enc.c b/libavformat/ac4enc.c index 02b8d4d976..0505b05147 100644 --- a/libavformat/ac4enc.c +++ b/libavformat/ac4enc.c @@ -19,7 +19,6 @@ */ #include "libavcodec/codec_id.h" -#include "libavcodec/codec_par.h" #include "libavcodec/packet.h" #include "libavutil/crc.h" #include "libavutil/opt.h" @@ -31,18 +30,6 @@ typedef struct AC4Context { int write_crc; } AC4Context; -static int ac4_init(AVFormatContext *s) -{ - AVCodecParameters *par = s->streams[0]->codecpar; - - if (par->codec_id != AV_CODEC_ID_AC4) { - av_log(s, AV_LOG_ERROR, "Only one AC-4 stream can be muxed by the AC-4 muxer\n"); - return AVERROR(EINVAL); - } - - return 0; -} - static int ac4_write_packet(AVFormatContext *s, AVPacket *pkt) { AC4Context *ac4 = s->priv_data; @@ -96,8 +83,8 @@ const FFOutputFormat ff_ac4_muxer = { .p.audio_codec = AV_CODEC_ID_AC4, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, - .init = ac4_init, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ac4_write_packet, .p.priv_class = &ac4_muxer_class, .p.flags = AVFMT_NOTIMESTAMPS, diff --git a/libavformat/adtsenc.c b/libavformat/adtsenc.c index 7eaf91630c..0671224fc2 100644 --- a/libavformat/adtsenc.c +++ b/libavformat/adtsenc.c @@ -106,10 +106,6 @@ static int adts_init(AVFormatContext *s) ADTSContext *adts = s->priv_data; AVCodecParameters *par = s->streams[0]->codecpar; - if (par->codec_id != AV_CODEC_ID_AAC) { - av_log(s, AV_LOG_ERROR, "Only AAC streams can be muxed by the ADTS muxer\n"); - return AVERROR(EINVAL); - } if (par->extradata_size > 0) return adts_decode_extradata(s, adts, par->extradata, par->extradata_size); @@ -242,7 +238,8 @@ const FFOutputFormat ff_adts_muxer = { .p.audio_codec = AV_CODEC_ID_AAC, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = adts_init, .write_header = adts_write_header, .write_packet = adts_write_packet, diff --git a/libavformat/aeaenc.c b/libavformat/aeaenc.c index 3303d108a5..f7969526f4 100644 --- a/libavformat/aeaenc.c +++ b/libavformat/aeaenc.c @@ -37,11 +37,6 @@ static int aea_write_header(AVFormatContext *s) return AVERROR(EINVAL); } - if (st->codecpar->codec_id != AV_CODEC_ID_ATRAC1) { - av_log(s, AV_LOG_ERROR, "AEA can only store ATRAC1 streams, %s was found.\n", avcodec_get_name(st->codecpar->codec_id)); - return AVERROR(EINVAL); - } - if (st->codecpar->sample_rate != 44100) { av_log(s, AV_LOG_ERROR, "Invalid sample rate (%d) AEA only supports 44.1kHz.\n", st->codecpar->sample_rate); return AVERROR(EINVAL); @@ -105,7 +100,8 @@ const FFOutputFormat ff_aea_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = aea_write_header, .write_packet = ff_raw_write_packet, .write_trailer = aea_write_trailer, diff --git a/libavformat/alp.c b/libavformat/alp.c index 9d507cb310..ad8e160223 100644 --- a/libavformat/alp.c +++ b/libavformat/alp.c @@ -191,12 +191,6 @@ static int alp_write_init(AVFormatContext *s) par = s->streams[0]->codecpar; - if (par->codec_id != AV_CODEC_ID_ADPCM_IMA_ALP) { - av_log(s, AV_LOG_ERROR, "%s codec not supported\n", - avcodec_get_name(par->codec_id)); - return AVERROR(EINVAL); - } - if (par->ch_layout.nb_channels > 2) { av_log(s, AV_LOG_ERROR, "A maximum of 2 channels are supported\n"); return AVERROR(EINVAL); @@ -295,7 +289,8 @@ const FFOutputFormat ff_alp_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, .p.priv_class = &alp_muxer_class, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = alp_write_init, .write_header = alp_write_header, .write_packet = ff_raw_write_packet, diff --git a/libavformat/amvenc.c b/libavformat/amvenc.c index 9fcc09add2..5ff4f69cfa 100644 --- a/libavformat/amvenc.c +++ b/libavformat/amvenc.c @@ -113,11 +113,7 @@ static av_cold int amv_init(AVFormatContext *s) return AVERROR(EINVAL); } - if (ast->codecpar->codec_id != AV_CODEC_ID_ADPCM_IMA_AMV) { - av_log(s, AV_LOG_ERROR, "Second AMV stream must be %s\n", - avcodec_get_name(AV_CODEC_ID_ADPCM_IMA_AMV)); - return AVERROR(EINVAL); - } + av_assert1(ast->codecpar->codec_id == AV_CODEC_ID_ADPCM_IMA_AMV); /* These files are broken-enough as they are. They shouldn't be streamed. */ if (!(s->pb->seekable & AVIO_SEEKABLE_NORMAL)) { @@ -411,7 +407,8 @@ const FFOutputFormat ff_amv_muxer = { .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_AMV, .p.video_codec = AV_CODEC_ID_AMV, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = amv_init, .deinit = amv_deinit, .write_header = amv_write_header, diff --git a/libavformat/apm.c b/libavformat/apm.c index 89401dcf5b..98c5439738 100644 --- a/libavformat/apm.c +++ b/libavformat/apm.c @@ -217,12 +217,6 @@ static int apm_write_init(AVFormatContext *s) { AVCodecParameters *par = s->streams[0]->codecpar; - if (par->codec_id != AV_CODEC_ID_ADPCM_IMA_APM) { - av_log(s, AV_LOG_ERROR, "%s codec not supported\n", - avcodec_get_name(par->codec_id)); - return AVERROR(EINVAL); - } - if (par->ch_layout.nb_channels > 2) { av_log(s, AV_LOG_ERROR, "APM files only support up to 2 channels\n"); return AVERROR(EINVAL); @@ -305,7 +299,8 @@ const FFOutputFormat ff_apm_muxer = { .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_APM, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = apm_write_init, .write_header = apm_write_header, .write_packet = ff_raw_write_packet, diff --git a/libavformat/apngenc.c b/libavformat/apngenc.c index 79b0dbf0f7..4d0438f824 100644 --- a/libavformat/apngenc.c +++ b/libavformat/apngenc.c @@ -84,12 +84,6 @@ static int apng_write_header(AVFormatContext *format_context) APNGMuxContext *apng = format_context->priv_data; AVCodecParameters *par = format_context->streams[0]->codecpar; - if (format_context->streams[0]->codecpar->codec_id != AV_CODEC_ID_APNG) { - av_log(format_context, AV_LOG_ERROR, - "APNG muxer supports only a single video APNG stream.\n"); - return AVERROR(EINVAL); - } - if (apng->last_delay.num > UINT16_MAX || apng->last_delay.den > UINT16_MAX) { av_reduce(&apng->last_delay.num, &apng->last_delay.den, apng->last_delay.num, apng->last_delay.den, UINT16_MAX); @@ -314,7 +308,8 @@ const FFOutputFormat ff_apng_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_APNG, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = apng_write_header, .write_packet = apng_write_packet, .write_trailer = apng_write_trailer, diff --git a/libavformat/argo_asf.c b/libavformat/argo_asf.c index 28e3844394..61bfc6de1f 100644 --- a/libavformat/argo_asf.c +++ b/libavformat/argo_asf.c @@ -290,12 +290,6 @@ static int argo_asf_write_init(AVFormatContext *s) ArgoASFMuxContext *ctx = s->priv_data; const AVCodecParameters *par = s->streams[0]->codecpar; - if (par->codec_id != AV_CODEC_ID_ADPCM_ARGO) { - av_log(s, AV_LOG_ERROR, "%s codec not supported\n", - avcodec_get_name(par->codec_id)); - return AVERROR(EINVAL); - } - if (ctx->version_major == 1 && ctx->version_minor == 1 && par->sample_rate != 22050) { av_log(s, AV_LOG_ERROR, "ASF v1.1 files only support a sample rate of 22050\n"); return AVERROR(EINVAL); @@ -476,7 +470,8 @@ const FFOutputFormat ff_argo_asf_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, .p.priv_class = &argo_asf_muxer_class, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = argo_asf_write_init, .write_header = argo_asf_write_header, .write_packet = argo_asf_write_packet, diff --git a/libavformat/argo_cvg.c b/libavformat/argo_cvg.c index aacc34daeb..5db2a85dd8 100644 --- a/libavformat/argo_cvg.c +++ b/libavformat/argo_cvg.c @@ -271,12 +271,6 @@ static int argo_cvg_write_init(AVFormatContext *s) ArgoCVGMuxContext *ctx = s->priv_data; const AVCodecParameters *par = s->streams[0]->codecpar; - if (par->codec_id != AV_CODEC_ID_ADPCM_PSX) { - av_log(s, AV_LOG_ERROR, "%s codec not supported\n", - avcodec_get_name(par->codec_id)); - return AVERROR(EINVAL); - } - if (par->ch_layout.nb_channels != 1) { av_log(s, AV_LOG_ERROR, "CVG files only support 1 channel\n"); return AVERROR(EINVAL); @@ -403,7 +397,8 @@ const FFOutputFormat ff_argo_cvg_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, .p.priv_class = &argo_cvg_muxer_class, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = argo_cvg_write_init, .write_header = argo_cvg_write_header, .write_packet = argo_cvg_write_packet, diff --git a/libavformat/assenc.c b/libavformat/assenc.c index c23c77acda..7b474a6005 100644 --- a/libavformat/assenc.c +++ b/libavformat/assenc.c @@ -50,10 +50,6 @@ static int write_header(AVFormatContext *s) ASSContext *ass = s->priv_data; AVCodecParameters *par = s->streams[0]->codecpar; - if (par->codec_id != AV_CODEC_ID_ASS) { - av_log(s, AV_LOG_ERROR, "Exactly one ASS/SSA stream is needed.\n"); - return AVERROR(EINVAL); - } avpriv_set_pts_info(s->streams[0], 64, 1, 100); if (par->extradata_size > 0) { size_t header_size = par->extradata_size; @@ -241,7 +237,8 @@ const FFOutputFormat ff_ass_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_ASS, .p.flags = AVFMT_GLOBALHEADER | AVFMT_NOTIMESTAMPS | AVFMT_TS_NONSTRICT, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .p.priv_class = &ass_class, .priv_data_size = sizeof(ASSContext), .write_header = write_header, diff --git a/libavformat/bit.c b/libavformat/bit.c index 81a954c392..cd088b87ff 100644 --- a/libavformat/bit.c +++ b/libavformat/bit.c @@ -129,7 +129,7 @@ static int write_header(AVFormatContext *s) { AVCodecParameters *par = s->streams[0]->codecpar; - if ((par->codec_id != AV_CODEC_ID_G729) || par->ch_layout.nb_channels != 1) { + if (par->ch_layout.nb_channels != 1) { av_log(s, AV_LOG_ERROR, "only codec g729 with 1 channel is supported by this format\n"); return AVERROR(EINVAL); @@ -168,7 +168,8 @@ const FFOutputFormat ff_bit_muxer = { .p.audio_codec = AV_CODEC_ID_G729, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = write_header, .write_packet = write_packet, }; diff --git a/libavformat/codec2.c b/libavformat/codec2.c index e49408e0fb..dcc3ed9e59 100644 --- a/libavformat/codec2.c +++ b/libavformat/codec2.c @@ -214,14 +214,7 @@ static int codec2_read_packet(AVFormatContext *s, AVPacket *pkt) static int codec2_write_header(AVFormatContext *s) { - AVStream *st; - - if (s->streams[0]->codecpar->codec_id != AV_CODEC_ID_CODEC2) { - av_log(s, AV_LOG_ERROR, ".c2 files must have exactly one codec2 stream\n"); - return AVERROR(EINVAL); - } - - st = s->streams[0]; + AVStream *st = s->streams[0]; if (st->codecpar->extradata_size != CODEC2_EXTRADATA_SIZE) { av_log(s, AV_LOG_ERROR, ".c2 files require exactly %i bytes of extradata (got %i)\n", @@ -319,7 +312,8 @@ const FFOutputFormat ff_codec2_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = codec2_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/gif.c b/libavformat/gif.c index fe45637814..8264e118c6 100644 --- a/libavformat/gif.c +++ b/libavformat/gif.c @@ -42,12 +42,6 @@ typedef struct GIFContext { static int gif_write_header(AVFormatContext *s) { - if (s->streams[0]->codecpar->codec_id != AV_CODEC_ID_GIF) { - av_log(s, AV_LOG_ERROR, - "GIF muxer supports only a single video GIF stream.\n"); - return AVERROR(EINVAL); - } - avpriv_set_pts_info(s->streams[0], 64, 1, 100); return 0; @@ -212,7 +206,8 @@ const FFOutputFormat ff_gif_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_GIF, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = gif_write_header, .write_packet = gif_write_packet, .write_trailer = gif_write_trailer, diff --git a/libavformat/ilbc.c b/libavformat/ilbc.c index 2e102a4be7..a24aa3da9d 100644 --- a/libavformat/ilbc.c +++ b/libavformat/ilbc.c @@ -35,11 +35,6 @@ static int ilbc_write_header(AVFormatContext *s) AVIOContext *pb = s->pb; AVCodecParameters *par = s->streams[0]->codecpar; - if (par->codec_id != AV_CODEC_ID_ILBC) { - av_log(s, AV_LOG_ERROR, "Unsupported codec\n"); - return AVERROR(EINVAL); - } - if (par->block_align == 50) { avio_write(pb, mode30_header, sizeof(mode30_header) - 1); } else if (par->block_align == 38) { @@ -125,7 +120,8 @@ const FFOutputFormat ff_ilbc_muxer = { .p.audio_codec = AV_CODEC_ID_ILBC, .p.subtitle_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = ilbc_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/kvag.c b/libavformat/kvag.c index 2053f4730d..1d0aee0994 100644 --- a/libavformat/kvag.c +++ b/libavformat/kvag.c @@ -131,12 +131,6 @@ static int kvag_write_init(AVFormatContext *s) { AVCodecParameters *par = s->streams[0]->codecpar; - if (par->codec_id != AV_CODEC_ID_ADPCM_IMA_SSI) { - av_log(s, AV_LOG_ERROR, "%s codec not supported\n", - avcodec_get_name(par->codec_id)); - return AVERROR(EINVAL); - } - if (par->ch_layout.nb_channels > 2) { av_log(s, AV_LOG_ERROR, "KVAG files only support up to 2 channels\n"); return AVERROR(EINVAL); @@ -190,7 +184,8 @@ const FFOutputFormat ff_kvag_muxer = { .p.audio_codec = AV_CODEC_ID_ADPCM_IMA_SSI, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = kvag_write_init, .write_header = kvag_write_header, .write_packet = ff_raw_write_packet, diff --git a/libavformat/microdvdenc.c b/libavformat/microdvdenc.c index b9cadb8be4..d4910ecf71 100644 --- a/libavformat/microdvdenc.c +++ b/libavformat/microdvdenc.c @@ -29,11 +29,6 @@ static int microdvd_write_header(struct AVFormatContext *s) AVCodecParameters *par = s->streams[0]->codecpar; AVRational framerate = s->streams[0]->avg_frame_rate; - if (par->codec_id != AV_CODEC_ID_MICRODVD) { - av_log(s, AV_LOG_ERROR, "Exactly one MicroDVD stream is needed.\n"); - return -1; - } - if (par->extradata && par->extradata_size > 0) { avio_write(s->pb, "{DEFAULT}{}", 11); avio_write(s->pb, par->extradata, par->extradata_size); @@ -65,7 +60,8 @@ const FFOutputFormat ff_microdvd_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_MICRODVD, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = microdvd_write_header, .write_packet = microdvd_write_packet, }; diff --git a/libavformat/mux.c b/libavformat/mux.c index 134c2875b6..f23eb0188d 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -268,7 +268,7 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options) } break; } - if (of->flags_internal & FF_OFMT_FLAG_MAX_ONE_OF_EACH) { + if (of->flags_internal & (FF_OFMT_FLAG_MAX_ONE_OF_EACH | FF_OFMT_FLAG_ONLY_DEFAULT_CODECS)) { enum AVCodecID default_codec_id = AV_CODEC_ID_NONE; unsigned nb; if ((unsigned)par->codec_type < FF_ARRAY_ELEMS(default_codec_offsets)) { @@ -276,7 +276,14 @@ static int init_muxer(AVFormatContext *s, AVDictionary **options) if (default_codec_offsets[par->codec_type]) default_codec_id = *(const enum AVCodecID*)((const char*)of + default_codec_offsets[par->codec_type]); } - if (default_codec_id == AV_CODEC_ID_NONE || nb > 1) { + if (of->flags_internal & FF_OFMT_FLAG_ONLY_DEFAULT_CODECS && + default_codec_id != AV_CODEC_ID_NONE && par->codec_id != default_codec_id) { + av_log(s, AV_LOG_ERROR, "%s muxer supports only codec %s for type %s\n", + of->p.name, avcodec_get_name(default_codec_id), av_get_media_type_string(par->codec_type)); + ret = AVERROR(EINVAL); + goto fail; + } else if (default_codec_id == AV_CODEC_ID_NONE || + (of->flags_internal & FF_OFMT_FLAG_MAX_ONE_OF_EACH && nb > 1)) { const char *type = av_get_media_type_string(par->codec_type); av_log(s, AV_LOG_ERROR, "%s muxer does not support %s stream of type %s\n", of->p.name, default_codec_id == AV_CODEC_ID_NONE ? "any" : "more than one", diff --git a/libavformat/mux.h b/libavformat/mux.h index 71ee5fd06b..1f386e4488 100644 --- a/libavformat/mux.h +++ b/libavformat/mux.h @@ -50,6 +50,15 @@ struct AVDeviceInfoList; * This flag is incompatible with FF_OFMT_FLAG_SUPPORT_ATTACHMENTS. */ #define FF_OFMT_FLAG_MAX_ONE_OF_EACH (1 << 2) +/** + * If this flag is set, then the only permitted audio/video/subtitle + * codec ids are AVOutputFormat.audio/video/subtitle_codec; + * if any of the latter is unset (i.e. equal to AV_CODEC_ID_NONE), + * then no stream of the corresponding type is supported. + * In addition, codec types without default codec field + * are disallowed. + */ +#define FF_OFMT_FLAG_ONLY_DEFAULT_CODECS (1 << 3) typedef struct FFOutputFormat { /** diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c index 8a0ad4c9aa..ed1242a6a2 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -44,6 +44,8 @@ int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, codec_id == ofmt->audio_codec || codec_id == ofmt->subtitle_codec)) return 1; + else if (ffofmt(ofmt)->flags_internal & FF_OFMT_FLAG_ONLY_DEFAULT_CODECS) + return 0; else if (ffofmt(ofmt)->flags_internal & FF_OFMT_FLAG_MAX_ONE_OF_EACH) { enum AVMediaType type = avcodec_get_type(codec_id); switch (type) { diff --git a/libavformat/rcwtenc.c b/libavformat/rcwtenc.c index 4ccd7b93c8..f2459ef1d3 100644 --- a/libavformat/rcwtenc.c +++ b/libavformat/rcwtenc.c @@ -84,11 +84,6 @@ static void rcwt_flush_cluster(AVFormatContext *avf) static int rcwt_write_header(AVFormatContext *avf) { - if (avf->streams[0]->codecpar->codec_id != AV_CODEC_ID_EIA_608) { - av_log(avf, AV_LOG_ERROR, "RCWT supports only CC (608/708)\n"); - return AVERROR(EINVAL); - } - avpriv_set_pts_info(avf->streams[0], 64, 1, 1000); /* magic number */ @@ -169,7 +164,8 @@ const FFOutputFormat ff_rcwt_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_EIA_608, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .priv_data_size = sizeof(RCWTContext), .write_header = rcwt_write_header, .write_packet = rcwt_write_packet, diff --git a/libavformat/sccenc.c b/libavformat/sccenc.c index 040d1ac96c..ced7208c12 100644 --- a/libavformat/sccenc.c +++ b/libavformat/sccenc.c @@ -35,12 +35,6 @@ static int scc_write_header(AVFormatContext *avf) { SCCContext *scc = avf->priv_data; - if (avf->streams[0]->codecpar->codec_id != AV_CODEC_ID_EIA_608) { - av_log(avf, AV_LOG_ERROR, - "Unsupported subtitles codec: %s\n", - avcodec_get_name(avf->streams[0]->codecpar->codec_id)); - return AVERROR(EINVAL); - } avpriv_set_pts_info(avf->streams[0], 64, 1, 1000); avio_printf(avf->pb, "Scenarist_SCC V1.0\n"); @@ -114,7 +108,8 @@ const FFOutputFormat ff_scc_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_EIA_608, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .priv_data_size = sizeof(SCCContext), .write_header = scc_write_header, .write_packet = scc_write_packet, diff --git a/libavformat/ttmlenc.c b/libavformat/ttmlenc.c index 0af82d5753..af2e2b85a5 100644 --- a/libavformat/ttmlenc.c +++ b/libavformat/ttmlenc.c @@ -126,11 +126,6 @@ static int ttml_write_header(AVFormatContext *ctx) TTMLMuxContext *ttml_ctx = ctx->priv_data; ttml_ctx->document_written = 0; - if (ctx->streams[0]->codecpar->codec_id != AV_CODEC_ID_TTML) { - av_log(ctx, AV_LOG_ERROR, "Exactly one TTML stream is required!\n"); - return AVERROR(EINVAL); - } - { AVStream *st = ctx->streams[0]; AVIOContext *pb = ctx->pb; @@ -226,7 +221,8 @@ const FFOutputFormat ff_ttml_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_TTML, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = ttml_write_header, .write_packet = ttml_write_packet, .write_trailer = ttml_write_trailer, diff --git a/libavformat/vc1testenc.c b/libavformat/vc1testenc.c index 6b4cbd1152..40d764c4de 100644 --- a/libavformat/vc1testenc.c +++ b/libavformat/vc1testenc.c @@ -31,10 +31,6 @@ static int vc1test_write_header(AVFormatContext *s) AVCodecParameters *par = s->streams[0]->codecpar; AVIOContext *pb = s->pb; - if (par->codec_id != AV_CODEC_ID_WMV3) { - av_log(s, AV_LOG_ERROR, "Only WMV3 is accepted!\n"); - return -1; - } avio_wl24(pb, 0); //frames count will be here avio_w8(pb, 0xC5); avio_wl32(pb, 4); @@ -92,5 +88,6 @@ const FFOutputFormat ff_vc1t_muxer = { .write_header = vc1test_write_header, .write_packet = vc1test_write_packet, .write_trailer = vc1test_write_trailer, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, }; diff --git a/libavformat/webpenc.c b/libavformat/webpenc.c index 85074ae315..1c5b93e0ab 100644 --- a/libavformat/webpenc.c +++ b/libavformat/webpenc.c @@ -38,15 +38,10 @@ typedef struct WebpContext{ static int webp_init(AVFormatContext *s) { WebpContext *const w = s->priv_data; - AVStream *st; + AVStream *st = s->streams[0]; w->last_pkt = ffformatcontext(s)->pkt; - st = s->streams[0]; - if (st->codecpar->codec_id != AV_CODEC_ID_WEBP) { - av_log(s, AV_LOG_ERROR, "Only WebP is supported\n"); - return AVERROR(EINVAL); - } avpriv_set_pts_info(st, 24, 1, 1000); return 0; @@ -233,5 +228,6 @@ const FFOutputFormat ff_webp_muxer = { .write_trailer = webp_write_trailer, .p.priv_class = &webp_muxer_class, .p.flags = AVFMT_VARIABLE_FPS, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, }; diff --git a/libavformat/webvttenc.c b/libavformat/webvttenc.c index 12a4b776dc..e71a6224ae 100644 --- a/libavformat/webvttenc.c +++ b/libavformat/webvttenc.c @@ -47,14 +47,8 @@ static void webvtt_write_time(AVIOContext *pb, int64_t millisec) static int webvtt_write_header(AVFormatContext *ctx) { AVStream *s = ctx->streams[0]; - AVCodecParameters *par = ctx->streams[0]->codecpar; AVIOContext *pb = ctx->pb; - if (par->codec_id != AV_CODEC_ID_WEBVTT) { - av_log(ctx, AV_LOG_ERROR, "Exactly one WebVTT stream is needed.\n"); - return AVERROR(EINVAL); - } - avpriv_set_pts_info(s, 64, 1, 1000); avio_printf(pb, "WEBVTT\n"); @@ -114,5 +108,6 @@ const FFOutputFormat ff_webvtt_muxer = { .p.subtitle_codec = AV_CODEC_ID_WEBVTT, .write_header = webvtt_write_header, .write_packet = webvtt_write_packet, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, }; diff --git a/libavformat/westwood_audenc.c b/libavformat/westwood_audenc.c index 2240d130b6..ab47e0ff8e 100644 --- a/libavformat/westwood_audenc.c +++ b/libavformat/westwood_audenc.c @@ -43,7 +43,6 @@ typedef struct AUDMuxContext { static int wsaud_write_init(AVFormatContext *ctx) { - AVStream *st = ctx->streams[0]; AVIOContext *pb = ctx->pb; /* Stream must be seekable to correctly write the file. */ @@ -53,12 +52,6 @@ static int wsaud_write_init(AVFormatContext *ctx) return AVERROR(EINVAL); } - if (st->codecpar->codec_id != AV_CODEC_ID_ADPCM_IMA_WS) { - av_log(ctx, AV_LOG_ERROR, "%s codec not supported for Westwood AUD.\n", - avcodec_get_name(st->codecpar->codec_id)); - return AVERROR(EINVAL); - } - return 0; } @@ -133,5 +126,6 @@ const FFOutputFormat ff_wsaud_muxer = { .write_header = wsaud_write_header, .write_packet = wsaud_write_packet, .write_trailer = wsaud_write_trailer, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, }; diff --git a/libavformat/wvenc.c b/libavformat/wvenc.c index 6d5fefe1bc..7da0879050 100644 --- a/libavformat/wvenc.c +++ b/libavformat/wvenc.c @@ -31,16 +31,6 @@ typedef struct WvMuxContext { int64_t samples; } WvMuxContext; -static av_cold int wv_init(AVFormatContext *ctx) -{ - if (ctx->streams[0]->codecpar->codec_id != AV_CODEC_ID_WAVPACK) { - av_log(ctx, AV_LOG_ERROR, "This muxer only supports a single WavPack stream.\n"); - return AVERROR(EINVAL); - } - - return 0; -} - static int wv_write_packet(AVFormatContext *ctx, AVPacket *pkt) { WvMuxContext *s = ctx->priv_data; @@ -85,9 +75,9 @@ const FFOutputFormat ff_wv_muxer = { .p.audio_codec = AV_CODEC_ID_WAVPACK, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .init = wv_init, .write_packet = wv_write_packet, .write_trailer = wv_write_trailer, .p.flags = AVFMT_NOTIMESTAMPS, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, }; From patchwork Wed Mar 20 02:12:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47255 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp121251pzh; Tue, 19 Mar 2024 19:14:44 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWqBvaApgA9tyJdN/QHmsj55KbZunkWNi+B+EMpboC8A94NJ8pLOn5+FWwnukqCJCytKtn/MlKC+me7GdTTtgS7WpElMWyAjgxXEw== X-Google-Smtp-Source: AGHT+IHMW3Iz+y12A2sVg8xiLwWgGFu5P7bQCpERa0ibOJ0+gr75kJBSPRxgh7mWHGEoIqwaNH17 X-Received: by 2002:a17:906:124b:b0:a46:8846:5aa0 with SMTP id u11-20020a170906124b00b00a4688465aa0mr3210197eja.56.1710900883831; Tue, 19 Mar 2024 19:14:43 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l7-20020a170906414700b00a46e69864casi843432ejk.816.2024.03.19.19.14.43; Tue, 19 Mar 2024 19:14:43 -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=@outlook.com header.s=selector1 header.b=gsKf9WGv; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A991E68D481; Wed, 20 Mar 2024 04:14:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2037.outbound.protection.outlook.com [40.92.59.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5CCDD68D48F for ; Wed, 20 Mar 2024 04:14:14 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ceejW/DcnZmSb55mdCNX7cp3nDmKKl57bx+lkgl6PIEF8kZEyDc+8w8Bb6c9rqKq+wpl15Ni6z03sxem4gIH0f5S8bO3nTAW+j+jhsNgDARMmZeaQkMaA6anFFiBo7k8XggqV14+Rchn2LM7F1v6xS2E1UZ+haRbU3+U11ixcE+/k44gPBj8xSdiRb6WtLaM9u+i6C/lYZmGmhKB9EK08AI2BlEhLJXjZiSBprtzx2asmTg3pSBj2i3xUFZpL3G/OOghLkw10wATpMrk0nK+A/kRdDBMZz5pv1Wq+Xl9lDJ9jYwIFExmyc6ykPgjCFdRgEXJPsohTvZmqEvr35Nutw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Gf4zoepHxL9HWNOM8ASVmDHnC2WW10rI5McE1Bq2Te4=; b=ir3ipS/pWGwFRwgB7FpUmitAAww9ZmzYRe3smVHnlOGmH4NRzfGQJBEOEfZwJcpFd4nOMscJIN9F7uj48gKZEkMeqnJTURFXXshiC4kBb321jXulbfF4hbB4aXado9xU1q5vROSZRsyUOIOGA2FWc/f3NGc8GXuQl4UHb3jBSjV4anLV3heqeRdnR3/rAaSXIu1cTAMhH67O3JJOwZaiYowzv+wLdQ2BeU1HhkDI3np/K0QXCemGsQouGyS0qVAylYptkL4WOye6S56SirrrZ2y2/0anFbFtQ8cuZZQ4n3MBkKaFrxOA37R9wzG/wgUTUIHitUZVbklBHVXsIRVqVw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Gf4zoepHxL9HWNOM8ASVmDHnC2WW10rI5McE1Bq2Te4=; b=gsKf9WGvccWroDgTNaGq9YaTwUoRNi6EtrRlUjx1MjCZODZLzrZXICKuJBp8zXwLFTplgUDb6UPTOZo3+JJ/nKvybZEkJw324Vs4NfQBFn6PDQ9i9QFDuyvUF7yMmuXJKqW9OmEA+g2sh81tCajEuc692z1JFPvgcuxdAW5LXa2kmMdE1drkgobBMpdETvqEFk6PnhjTQWKnKgWZxuy1khTmLbS28SCcQm3ndNvfqABwbBNhD7HeRV0xwORnnzbLYA+5P6HGuULnGV0g0wUJGI83/UTNdBGG8WWE514MD5IjaYxX3uR7QrvLfNPwpkSFfvsEP73jI6pbMhjPWJBk2Q== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:14:11 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:14:11 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:54 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [qUDQgJOkgtFQuM4BJWrYyTQPRsJvadm5ueEHBlR839o=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 7de7146e-a77f-4cae-6380-08dc48836e65 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5U+LIVMWsMtdR/plBaA2kZldvmqq7NriPZTy9lRrvwf7ggtBhZxhmEJCk4/U+vDnxSFf08yoZ3n1RK9uoFFY5sN4sOfmzpuW0md/AaJkqUK3W96Od1d/oV+O6LOIwq07qTGEiIm1DFyXEDkO4HsxjgXtggicOdgoePjwpSEMMGGOtdjvDM7xiMGHP2FXkMoUgjtQgjfoIWS7HyrRbzYn7ZWspLfRnEO3QhYzM78GDvbJA6E2e+1gimvStRhG6YgqSMql48+uZxh9MkDqfbOeTVAtNyFSso+uYdZx74ZxYRVTZO7ARAoRxcxfJJYapovAcLPDMYNGp/1Xb19mlSy63dTc4VCphgs0sFK+D9+Ea2sSb2SDu06FhPiH2/n5jrqssuR4Xok16C/Gt/mWnGwz4IKMt40G1iDr8faA3K/41itBM+R5FmKi0ZCNKFB+/3pLkKoY/byLTaCsnNYu5h5ns1S82kgGbP9RqPbjrh8J+ZTlqxTW+jnbz17lb0WqO5IV/rBzVewmcwa+aVMqPorD5QUFHiGhHepqOA8hIC8ZOqcny6xY5LPbBuKX2dOPfMp6OLA8Y715OAQVEnWacBiJBG0aj4tZ61Fa9TX9tpUjoZ5LPbaKVG1QhrsCeVFvATs4j5Ol+MB3sJOc/I1sI5F7LaYOYm0X69B3IWEm0m1515MXdbdh5opEhazJlECz9Y7sHx/vD/DXHM/zApLcaDJhUtSxkpEXOXbA3ChxPjw5LmgHo= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /SLAKXRjJ+p/BlrfwLngqURpp7YSqbeDZfhEC3p2fI62vXNffFFdsrOjXtZHUvKEd4tNRhDZB+d1yci53h8PLZER7Wglx1Q7j8SqKp8kIHAhF4LT/g3m23uaiYABGtxG3QPO1cyMIDM+KUin+l1LAwHDI9zd1Jp94YNMMNddXdjzXAe1ZlZZrOg8fuOIomATI0RzVP2x2JI7bQGD3mydPYGU912p1LiSOWzxX8zSRPgOdV1zDvCJ1EKg0U0GbOJ7tfuc4qGqSS4B4poXErNg480C+x2nt+MeAWXlNnMAoVWREPMyqmd7qJSszQ3UcihgAj9YEmWKcaGdaWx4gMm8B+pMkK7DSP5DWo5XJvBXjFGhsqSqTgNhluTIUGHrl7JcDjNOz/BK71d1MX1lTh0/PkFbcFcTNPdstR178gz9vtLKqDBoOvni9fQNKRhZ4UIqD32uy+WubDl4LfgG0PxnOTcdC8jQqtec6+0X8JazcV+ej7GtR9NGIiVd6QkYb5tuIeDa4M7RLTC0i6vswToV0W4jEwGcb/PoGOw1w13R4VcBVp4X3Ei5qLQqAVhLj4RJIDVfzCaIfyUu03mHARUTmgSHYKsYYt0wCCH/tOfsjH12vzbaHTFAayG2GfeMdSx9 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2QNel56DiukbQk2Sdhn9AYRRAHxZwQflMZKIr5dO7C0Cxs3fKuJVYo/DpyfzvsqdzPDMnWxyNkZUgITKt/n7t4CX3/NvbzK/6L+Pr0TxnunUWAMWEwb3rayFHmpeiZNgZan7vk4xE6cz0xr+xE4KdG0xW0pjIDwmKHvojQztj0LYH+BjOgGW/8/6MiM4b6RK5xX2NbsbdMVwtUispfLmqr3tGlGw1X382w2de6LZsN4P0GRXTLAWJv2rmaApCSzisjfs8u98ivSRhtQIgB618/5/mHT2egsP5/rAk20daplb8rJDvR9p0UqQfpZYkuygCkXu1c1jKgt6qLZiDj7Qzy1rBGJeoj1RWkG6SW/u6vRPl5/iOLqqAL7KPtPb1OFg7GPdN2YciNQaqUHLh8cY7A8tEgFDUqS87KRps0769z8e/C6dcNF6E0+vRzUvYX2LPfFbdhvxgpGdI5cCqX2FSNjwatCHYIzPiv6dLqEqSl2H060hp+xsBYYDnq1GIp7yTxgPG8e2KAybEOZzhtwJa48mgRjB/9RNxuqGz5UzeRlQVw9P+Ikq+b72SYRYff0UQA2ornhZL/ttivLWuBuNx6t8jNXsvJp8495drjo4v1BLWFB8eKsJN6dYEu45m8h1vv9y24zd2BVV/Cw2/+Lfv23rkhVoasdCbah0nzDqM8beLRt/vnfuyg+GYlgHLrlbtl5SuTdvOixNri1oFShTLYus6L7XJj3a0qdWKSOV3FES/bR8YhqpY0sxrWD++mf1JEZrk9emyIcwxpALP+NnzHJ+O7H0fxcVBlq6rLGBIYVzvonCEBzTUVYF8HNGdirrWtIhI0n7xVQt5ymFSMkfx33f66WsmPTCOGEYL0pIbN4Ah441OLeKGqowGbUYyX5fetPMEYNzzOpuv3LMbk7P1PMmP2gRk075RjMZPbxyp9RrbzWLn8zkn+w5PDMPgf3O1As9jqbDenDymQno8uoWXcdvE6IQki1yUQUQJhfahty2eZc/eo9UX5/GLD8p2sT6Lvg6Djxm3oMiCv7Q1iSFXEjA/W53XLaA1gdHrITJNLEtj4uZA16+sZsGD/prRTOFimvmihlUjqJ9r+TpeUc1YOR+Lkgycu1ffV2uEVg1otGS1cRvxrowzDkRyY5JE6S8GpDhL596MOoOVZwrttI7mO7uDxUAqIlH246M0qmxu18/0DtAz3txPuUJo51XT3r6AJKRSIalZnxE6aI2noGUgupB5GwzbRMsHtnvZeQuPeM6B7W+dEp1QPlpiA9/pXBxU9SBFupHk//XyAyLSzAAnA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7de7146e-a77f-4cae-6380-08dc48836e65 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:14:11.1496 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 11/13] avformat/ttmlenc: Avoid unnecessary block 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 7ZBsPXVwybGi Signed-off-by: Andreas Rheinhardt --- libavformat/ttmlenc.c | 55 ++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/libavformat/ttmlenc.c b/libavformat/ttmlenc.c index af2e2b85a5..1ffbd66f80 100644 --- a/libavformat/ttmlenc.c +++ b/libavformat/ttmlenc.c @@ -124,38 +124,35 @@ static int ttml_set_header_values_from_extradata( static int ttml_write_header(AVFormatContext *ctx) { TTMLMuxContext *ttml_ctx = ctx->priv_data; + AVStream *st = ctx->streams[0]; + AVIOContext *pb = ctx->pb; + + const AVDictionaryEntry *lang = av_dict_get(st->metadata, "language", NULL, + 0); + const char *printed_lang = (lang && lang->value) ? lang->value : ""; + ttml_ctx->document_written = 0; + ttml_ctx->input_type = ff_is_ttml_stream_paragraph_based(st->codecpar) ? + PACKET_TYPE_PARAGRAPH : + PACKET_TYPE_DOCUMENT; + + avpriv_set_pts_info(st, 64, 1, 1000); - { - AVStream *st = ctx->streams[0]; - AVIOContext *pb = ctx->pb; - - AVDictionaryEntry *lang = av_dict_get(st->metadata, "language", NULL, - 0); - const char *printed_lang = (lang && lang->value) ? lang->value : ""; - - ttml_ctx->input_type = ff_is_ttml_stream_paragraph_based(st->codecpar) ? - PACKET_TYPE_PARAGRAPH : - PACKET_TYPE_DOCUMENT; - - avpriv_set_pts_info(st, 64, 1, 1000); - - if (ttml_ctx->input_type == PACKET_TYPE_PARAGRAPH) { - struct TTMLHeaderParameters header_params; - int ret = ttml_set_header_values_from_extradata( - st->codecpar, &header_params); - if (ret < 0) { - av_log(ctx, AV_LOG_ERROR, - "Failed to parse TTML header values from extradata: " - "%s!\n", av_err2str(ret)); - return ret; - } - - avio_printf(pb, ttml_header_text, - header_params.tt_element_params, - printed_lang, - header_params.pre_body_elements); + if (ttml_ctx->input_type == PACKET_TYPE_PARAGRAPH) { + struct TTMLHeaderParameters header_params; + int ret = ttml_set_header_values_from_extradata( + st->codecpar, &header_params); + if (ret < 0) { + av_log(ctx, AV_LOG_ERROR, + "Failed to parse TTML header values from extradata: " + "%s!\n", av_err2str(ret)); + return ret; } + + avio_printf(pb, ttml_header_text, + header_params.tt_element_params, + printed_lang, + header_params.pre_body_elements); } return 0; From patchwork Wed Mar 20 02:12:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47256 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp121300pzh; Tue, 19 Mar 2024 19:14:52 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUkIVA4lRk/9PMRhlRVNJtAlm3cLfPHYpqJEG14qp1dMLvqIxo7Gh9PD9tcOx6Pa2tOvoG+9hMCZ4BjccR99+1OwCW1nQ8GTLtUUA== X-Google-Smtp-Source: AGHT+IGlquzkd5zdhtlEd1k6rn11VQmi6erlKRXY/zvNmzzQrYT8OVxEA9iZOHJu/ZZH+HOrKgjd X-Received: by 2002:a17:906:c14d:b0:a46:edfb:ff68 with SMTP id dp13-20020a170906c14d00b00a46edfbff68mr914679ejc.5.1710900892478; Tue, 19 Mar 2024 19:14:52 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id qk43-20020a1709077fab00b00a46bb764166si2736037ejc.392.2024.03.19.19.14.52; Tue, 19 Mar 2024 19:14:52 -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=@outlook.com header.s=selector1 header.b=AOZ5zXkO; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A3D6F68D4A6; Wed, 20 Mar 2024 04:14:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2037.outbound.protection.outlook.com [40.92.59.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7813068D401 for ; Wed, 20 Mar 2024 04:14:14 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F33iFw1tSm4f6AsxbtAfeiAosxUACaKiArVt1aXdYmmnxG2Q+eq+nK0PsoF3wHgQUu2mbhLGIViJGhSuWPhnZ+iBi732Wd7kqELfJYewqt8ttB79FlLFkA0EOkYAjVgVDd+D4WusDy796e1Rf/O4PUIoQfBvnhMvGAuQdRk1gs5V8T3+eyqEArndkWZFRQizE7CAD6L1kG8asAjOVDHqGURcOVgRRFk/yx4Qwostg9iTZdEXiaQWCT3VolgWQrF0Qyj1DGC2SAtrkfhiYX0S+IhLF7oo8FeOmZLPGVeX73ny2wwLbOCT3CkkVs1CaO+8/s8x/98rdFMOEWKTxXkiHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jdUqw+bra+HmSvS44Z2+agZ4JdrLWONhyEPMXnDiwQE=; b=VJhKHGmzaVTqWtlbSSbmFIP3hWwkmXVEh5xleDcQDaJ9Wwc1dx6qnnrkvpQNv6uRPGiajsGDYKyfhyH3fioaLz3O+HahhTcL2+2HGbodukof7zbxyDQ6fucaYmBr9BUh/8hiVBP/vezLfbvsfoVmEqIirOjGFvhwAyYclquhWWoD3stYaLbkHEOnAeMd2lQ5uTyLlnHJ66d/N2fsw1LnCBAtgayK2K/PXMVNJ8H2JVIao4OZ53zRc2DLGMpelDquQes8hGfVklaMDpLIvWeiwxm9IOyzPRN9grIjSMQp8wWjw9RYdUYb7YzGuJPXdHs11E8tk7SZoi8nfRavDZWMLQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jdUqw+bra+HmSvS44Z2+agZ4JdrLWONhyEPMXnDiwQE=; b=AOZ5zXkOwI2hSTPhm4WbTkPFh8lrvRLCPn65/i12u+WMWk9ocfFydC6O3FcgW9r0YbsOxKlJjYFqDJcY6C3jyQXULyaQ10gwhTbl4USrXqK6ziaxv24kuJ/YHxXkNzWu3jNzcTxLg12CtABd0bOvmEeoSdtCGCTMud7+iq/sqXPOjQaROyeHiRkLxMVeDgfrQuaoGWoMeT0wIfyM8ZOZZZtbXDEaLBUXi+oCsQn15XlDCpYlUuIRGKrn4lm9k9bWp1U3aU4g66QKSgJUYWpFdiL9Okl5A/KJrW8dWNUu3j7waxCBLeuAIXG6hc0cJ0C99tMVBewzSMGc0ekf09CpTA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:14:12 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:14:12 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:55 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [iNppyS2VRetMmR2pE11emMc3nKn6GQfah+HYamhJp7E=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-11-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: ab761b44-781a-42d7-b272-08dc48836f28 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5UsDcyySU/5zQKgtW54Lg/cFgwPgFpP+G0amyHDVurfvxH6WE4yesu0TTNs+w0jRNe+lDwPaGX6PMotmuPYzWkN2FoPWQCLcMuS4AUVtu9iqJ5dkHjxzzRV+uidbJwPEvub6eJDL4TtLCeNel06RdjRkFsWHfL0wHTJ+/yzMDhtC/S42Sityhx5BxhNTKgLZolQp5W186lJVNzybNqe+NKotwP0she87oxYGLU2wTjf6/8HQJ6efIOANgPPZS4ount75pGGe9+xQoMJRjD5IgS0iQzqFnJZoLlqUehRZF8+MKetOs7Msy1cGYh3MBTSb/M6gB3qfDDY1wqzylC0R/NOfu2arYVduVBeHqxQhIM2gx1IOMVQL5agEAD4GBHV5TNiHmbwbEtIdX3SxK2ooNM/Avp1EaaLPk7ZrIwOumTbRcoZwZu52b66sKsN9IPrMjXw6eRKFLXULvRR7qJUpDVbJrwsRvFaAqP+M5DKy5dTT3pzbOe3E4dpR0gNYU7SlQw5IAxCq04I7WrY4QwnLQ6ocgyiaED/BRyS95qZ28aNrg7cmbrXp02jWO8MovOcyzvbn4WYDies74sgMZE0ZF3kwZPCYcZr8ybSjpQ7RJef40CNY2A2RkFObMeAN1Ea45PEuU1KyZl2LypqDm0Jty2jB/5/2MLPJ7QJbGYBQkUODBUbBfLF0jM2ZGcvAiImVg13+k+InenaBxr0qtCd6zfqBLVyrV7yB9CR56rW7xypE4= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9td6r5bTwDuByFuuZmO+I2TvIhj4S5kEyTkJVYKI5DYVnEdBk5UvnoTYfp1X6FktNNL2wydqJ4dk/sq04FyaBv9UE0hdFcU7SNIGNvkUauvV77HK0wyFMIKT1EKNYM5dYW19Rf8qgkOCfKjLsGxjVNZppGmlVANU/pSpfffn2pJ2oBjL2+zYxrHMAKvaikxRZrEMym9nNShrKHrvLbcloDPnbAbIYRPU5skSsLDPz/0khX4rk9E8Nnmr1GHKgypWNpd++NNj9O6Fbk5xAz7/nRwDpDWbS9hHTZAGId9SuFk0fSsFYBadsAiw3Qxzm9VFHUjZQ6B9rMIDHVBqs7bmzJn5N3SvxWHSj15cpz339QZuVAW5SCLktO+JaWIwcRbW5/HZIGnQ9DmpM5DUwEqauF4a4808RBReWy404/Hb1JSOiqLnNc2Uk8PqdDxCRGq10RCk74ig8Lq+KUQL1ijssGaaQMuXCaw11HthG1DJAcebAUNMuU0wb7TWkqQJFqLEG9hsvXdT/H+dvPaPyJNjkqMn+N4PwmE0bPbb00jvOz3FYuh54XyxhI5hMCK/DG5/w35Ck8XOWy6m829qNCGBPVdogbJFm9SYhIkcrWMdO9GSINydQoh7tFplUjowu5G7 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: LztPIcsrcXWcDd807cva4g71ds54aLxGl3dWh2M78O/2EIacchCW9tFF6yT8c3M78Ujd70LMuzrnddgDfm+AW91k9tEPXc83NDXh231KIt7r6n95E1hiDhCga660VW5MMvzm52INiB7QRKeU5fh01JerLhpBk1G3VtGNxZBQr/wIsJ7oaQh5gDw0DGdd8Q2opV3fat9gjj11Y+Vqcr0pa7SrAlvUScOY0l+hSau1oujKd5vNyBWQtLvJZee5MKErgqOaFUoPwloGeEJoXh4u+Lb4DJkzubEXIWialf5zEZ52itIOqXVBHQzw9JGCR4HYJL8Jf7kEdzJYktd2yMhgeDjiXoEOOj8bLRyNWYRREJRcmEhWZ3VTBM9GGiRJAqiGMmeacPDLj1374xiiKJwoNadv93ryDJ05/gEyrVVjB5glJTjBip16awxq8w/w5k1/odeXoH944WLcpChilCZf8ZR4zE2vR+R/SzGfr+QNI6//x2uIVLiUd6K9vVTyXcTExJd+APz2zz8AUlkEO3SjybOZzuqys5ScHweZLp26XO0qY3eprHkPbrFWkVYEjQn6m8c2rc9eESN5JAW8SYXebfk4WKG5mQ05DMgVusxWb5pVXTgxHdsmebUVPM6oUlCBCS4VB24wb4xMJ0IU7NVY2fhw2KLyV8lL3iwGCQt4RKCVSmmVAmDrnYsTlUULxD141C5l4Qp9k5Q0AIMAJWLjcv6SYk6Fx/vapg44rvaVD5TCuLhtykStwBnrH+zBticzWGb3vMgjrE/dg8KxzIqVNu9xJ7KzNUBCp9xZ7XjckufoQfs0+WoK1qzjBCGVSzEu9Y5spZf1Z/JLLcPJC0lPUgHYs29uoYumkaZX30oVLbutSGSSH5Y8QJpFJ7TdC5g1Jg8qLCoUMuOGkZhJUKRHbC8ukbvtsm00pwxlAUYy2fssK07TAKEDs8HfjnbNn+2OxFpMwBMD25mue13ZTLc/0Uqs4clNGlczI9pKRbb7XMXektv1MeQPv7tCJugPpn9VxvCGrMYpCTg+4c/RcZhHPQvrYErGkluShx5fIJMu8sCD6WGY4bHuy/cSf5l7EWe/NUDIA61GMX8es0GrCNVGPy9nHzGmwE1xBFK+UjiJVwXg34m/g0wrYumrEejVp4UWb8NM0lIEVOwBKsJK7Nt4IC0N8LHH4cfUCtktsIUcFXJaOsrFTx5+3nAlT4urCvUrdBEL6z+/Q6gdjDn26mbnlURQpdc6t8lNP3tWFoIUj1vlL5ycbkr38k+EasZHYZX2LymVtuX/b1PIppLla+vCRw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab761b44-781a-42d7-b272-08dc48836f28 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:14:12.4428 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 12/13] avformat: Enforce codec_id where appropriate 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: YhMCMOhX9zfP E.g. chromaprint expects to be fed 16bit signed PCM in native endianness, yet there was no check for this. Similarly for other muxers. Use the new FF_OFMT_FLAG_ONLY_DEFAULT_CODECS to enfore this where appropriate, e.g. for pcm/raw muxers. Signed-off-by: Andreas Rheinhardt --- libavformat/chromaprint.c | 3 +- libavformat/daudenc.c | 3 +- libavformat/filmstripenc.c | 3 +- libavformat/fitsenc.c | 3 +- libavformat/idroqenc.c | 3 +- libavformat/jacosubenc.c | 3 +- libavformat/mmf.c | 3 +- libavformat/mpjpeg.c | 2 + libavformat/pcmenc.c | 3 +- libavformat/rawenc.c | 102 ++++++++++++++++++++++++------------- libavformat/ttaenc.c | 3 +- 11 files changed, 88 insertions(+), 43 deletions(-) diff --git a/libavformat/chromaprint.c b/libavformat/chromaprint.c index 62264d6a4b..4beb75c7a9 100644 --- a/libavformat/chromaprint.c +++ b/libavformat/chromaprint.c @@ -179,7 +179,8 @@ const FFOutputFormat ff_chromaprint_muxer = { .p.audio_codec = AV_NE(AV_CODEC_ID_PCM_S16BE, AV_CODEC_ID_PCM_S16LE), .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = write_header, .write_packet = write_packet, .write_trailer = write_trailer, diff --git a/libavformat/daudenc.c b/libavformat/daudenc.c index f1e0da058b..5c8db5104e 100644 --- a/libavformat/daudenc.c +++ b/libavformat/daudenc.c @@ -64,7 +64,8 @@ const FFOutputFormat ff_daud_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, .p.flags = AVFMT_NOTIMESTAMPS, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = daud_init, .write_packet = daud_write_packet, }; diff --git a/libavformat/filmstripenc.c b/libavformat/filmstripenc.c index b2a4cee8fa..ec9c814f8c 100644 --- a/libavformat/filmstripenc.c +++ b/libavformat/filmstripenc.c @@ -67,7 +67,8 @@ const FFOutputFormat ff_filmstrip_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_RAWVIDEO, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = write_header, .write_packet = ff_raw_write_packet, .write_trailer = write_trailer, diff --git a/libavformat/fitsenc.c b/libavformat/fitsenc.c index 605056af59..a8efe93d3c 100644 --- a/libavformat/fitsenc.c +++ b/libavformat/fitsenc.c @@ -199,7 +199,8 @@ const FFOutputFormat ff_fits_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_FITS, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .priv_data_size = sizeof(FITSContext), .write_header = fits_write_header, .write_packet = fits_write_packet, diff --git a/libavformat/idroqenc.c b/libavformat/idroqenc.c index 75a191189c..f3172692e0 100644 --- a/libavformat/idroqenc.c +++ b/libavformat/idroqenc.c @@ -67,7 +67,8 @@ const FFOutputFormat ff_roq_muxer = { .p.audio_codec = AV_CODEC_ID_ROQ_DPCM, .p.video_codec = AV_CODEC_ID_ROQ, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = roq_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/jacosubenc.c b/libavformat/jacosubenc.c index a792fda42e..428505e51f 100644 --- a/libavformat/jacosubenc.c +++ b/libavformat/jacosubenc.c @@ -39,7 +39,8 @@ const FFOutputFormat ff_jacosub_muxer = { .p.video_codec = AV_CODEC_ID_NONE, .p.audio_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_JACOSUB, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = jacosub_write_header, .write_packet = ff_raw_write_packet, }; diff --git a/libavformat/mmf.c b/libavformat/mmf.c index fab4509711..42a88cff90 100644 --- a/libavformat/mmf.c +++ b/libavformat/mmf.c @@ -320,7 +320,8 @@ const FFOutputFormat ff_mmf_muxer = { .p.audio_codec = AV_CODEC_ID_ADPCM_YAMAHA, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = mmf_write_header, .write_packet = ff_raw_write_packet, .write_trailer = mmf_write_trailer, diff --git a/libavformat/mpjpeg.c b/libavformat/mpjpeg.c index 81ace8e9ee..8641c9c670 100644 --- a/libavformat/mpjpeg.c +++ b/libavformat/mpjpeg.c @@ -70,6 +70,8 @@ const FFOutputFormat ff_mpjpeg_muxer = { .priv_data_size = sizeof(MPJPEGContext), .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MJPEG, + .p.subtitle_codec = AV_CODEC_ID_NONE, + .flags_internal = FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_header = mpjpeg_write_header, .write_packet = mpjpeg_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, diff --git a/libavformat/pcmenc.c b/libavformat/pcmenc.c index 4879f1deed..c4dd8e43c5 100644 --- a/libavformat/pcmenc.c +++ b/libavformat/pcmenc.c @@ -35,7 +35,8 @@ const FFOutputFormat ff_pcm_ ## name_ ## _muxer = { \ .p.video_codec = AV_CODEC_ID_NONE, \ .p.subtitle_codec = AV_CODEC_ID_NONE, \ .p.flags = AVFMT_NOTIMESTAMPS, \ - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, \ + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | \ + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, \ .write_packet = ff_raw_write_packet, \ }; #define PCMDEF_2(name, long_name, ext, codec, enabled) \ diff --git a/libavformat/rawenc.c b/libavformat/rawenc.c index 49dc0a9109..cf298d223d 100644 --- a/libavformat/rawenc.c +++ b/libavformat/rawenc.c @@ -45,7 +45,8 @@ const FFOutputFormat ff_ac3_muxer = { .p.audio_codec = AV_CODEC_ID_AC3, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -78,7 +79,8 @@ const FFOutputFormat ff_adx_muxer = { .p.audio_codec = AV_CODEC_ID_ADPCM_ADX, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .write_trailer = adx_write_trailer, .p.flags = AVFMT_NOTIMESTAMPS, @@ -93,7 +95,8 @@ const FFOutputFormat ff_aptx_muxer = { .p.audio_codec = AV_CODEC_ID_APTX, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -107,7 +110,8 @@ const FFOutputFormat ff_aptx_hd_muxer = { .p.audio_codec = AV_CODEC_ID_APTX_HD, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -121,7 +125,8 @@ const FFOutputFormat ff_avs2_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_AVS2, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -135,7 +140,8 @@ const FFOutputFormat ff_avs3_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_AVS3, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -150,7 +156,8 @@ const FFOutputFormat ff_cavsvideo_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_CAVS, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -163,7 +170,8 @@ const FFOutputFormat ff_codec2raw_muxer = { .p.audio_codec = AV_CODEC_ID_CODEC2, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -197,7 +205,8 @@ const FFOutputFormat ff_dfpwm_muxer = { .p.audio_codec = AV_CODEC_ID_DFPWM, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -211,7 +220,8 @@ const FFOutputFormat ff_dirac_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_DIRAC, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -225,7 +235,8 @@ const FFOutputFormat ff_dnxhd_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_DNXHD, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -240,7 +251,8 @@ const FFOutputFormat ff_dts_muxer = { .p.audio_codec = AV_CODEC_ID_DTS, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -255,7 +267,8 @@ const FFOutputFormat ff_eac3_muxer = { .p.audio_codec = AV_CODEC_ID_EAC3, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -270,7 +283,8 @@ const FFOutputFormat ff_g722_muxer = { .p.audio_codec = AV_CODEC_ID_ADPCM_G722, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -285,7 +299,8 @@ const FFOutputFormat ff_g723_1_muxer = { .p.audio_codec = AV_CODEC_ID_G723_1, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -298,7 +313,8 @@ const FFOutputFormat ff_g726_muxer = { .p.audio_codec = AV_CODEC_ID_ADPCM_G726, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -311,7 +327,8 @@ const FFOutputFormat ff_g726le_muxer = { .p.audio_codec = AV_CODEC_ID_ADPCM_G726LE, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -326,7 +343,8 @@ const FFOutputFormat ff_gsm_muxer = { .p.audio_codec = AV_CODEC_ID_GSM, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -341,7 +359,8 @@ const FFOutputFormat ff_h261_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_H261, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -356,7 +375,8 @@ const FFOutputFormat ff_h263_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_H263, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -379,7 +399,8 @@ const FFOutputFormat ff_h264_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_H264, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .check_bitstream = h264_check_bitstream, .p.flags = AVFMT_NOTIMESTAMPS, @@ -403,7 +424,8 @@ const FFOutputFormat ff_vvc_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_VVC, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .check_bitstream = vvc_check_bitstream, .p.flags = AVFMT_NOTIMESTAMPS, @@ -427,7 +449,8 @@ const FFOutputFormat ff_hevc_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_HEVC, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .check_bitstream = hevc_check_bitstream, .p.flags = AVFMT_NOTIMESTAMPS, @@ -442,7 +465,8 @@ const FFOutputFormat ff_evc_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_EVC, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -456,7 +480,8 @@ const FFOutputFormat ff_m4v_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MPEG4, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -471,7 +496,8 @@ const FFOutputFormat ff_mjpeg_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MJPEG, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -485,7 +511,8 @@ const FFOutputFormat ff_mlp_muxer = { .p.audio_codec = AV_CODEC_ID_MLP, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -500,7 +527,8 @@ const FFOutputFormat ff_mp2_muxer = { .p.audio_codec = AV_CODEC_ID_MP2, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -515,7 +543,8 @@ const FFOutputFormat ff_mpeg1video_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MPEG1VIDEO, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -529,7 +558,8 @@ const FFOutputFormat ff_mpeg2video_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_MPEG2VIDEO, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -549,7 +579,8 @@ const FFOutputFormat ff_obu_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_AV1, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .check_bitstream = obu_check_bitstream, .p.flags = AVFMT_NOTIMESTAMPS, @@ -578,7 +609,8 @@ const FFOutputFormat ff_sbc_muxer = { .p.audio_codec = AV_CODEC_ID_SBC, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -592,7 +624,8 @@ const FFOutputFormat ff_truehd_muxer = { .p.audio_codec = AV_CODEC_ID_TRUEHD, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; @@ -606,7 +639,8 @@ const FFOutputFormat ff_vc1_muxer = { .p.audio_codec = AV_CODEC_ID_NONE, .p.video_codec = AV_CODEC_ID_VC1, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .write_packet = ff_raw_write_packet, .p.flags = AVFMT_NOTIMESTAMPS, }; diff --git a/libavformat/ttaenc.c b/libavformat/ttaenc.c index 661aa8fc83..671820f00e 100644 --- a/libavformat/ttaenc.c +++ b/libavformat/ttaenc.c @@ -169,7 +169,8 @@ const FFOutputFormat ff_tta_muxer = { .p.audio_codec = AV_CODEC_ID_TTA, .p.video_codec = AV_CODEC_ID_NONE, .p.subtitle_codec = AV_CODEC_ID_NONE, - .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, + .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | + FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, .init = tta_init, .deinit = tta_deinit, .write_header = tta_write_header, From patchwork Wed Mar 20 02:12:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 47257 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8ba5:b0:1a3:31a3:7958 with SMTP id m37csp121352pzh; Tue, 19 Mar 2024 19:15:01 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWUmhYu4AWr5gzR8l3FM+u97VaTiIHv6TdS5Yfg1XDk9oHyVsqxoG90/uH43Z6fN7oM0Z9ZoJMiFCM8LJfMjtOlr5h+gRnLbgrWJA== X-Google-Smtp-Source: AGHT+IGCr6xs0+RUljR7Gl9QNzjpzqLIts2+myTlYRsBeU2GlYWbdT8KfYsl1uVzMhdlyKQDYUYb X-Received: by 2002:a17:906:3914:b0:a46:c4c6:38 with SMTP id f20-20020a170906391400b00a46c4c60038mr4070128eje.10.1710900901031; Tue, 19 Mar 2024 19:15:01 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id lt18-20020a170906fa9200b00a460419e664si5827504ejb.629.2024.03.19.19.15.00; Tue, 19 Mar 2024 19:15:01 -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=@outlook.com header.s=selector1 header.b=OE4T9tSg; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9F52E68D472; Wed, 20 Mar 2024 04:14:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2056.outbound.protection.outlook.com [40.92.59.56]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6A7AE68D49E for ; Wed, 20 Mar 2024 04:14:16 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y6d/D1w7Hd++F3TB7fg5dpnWrnGeRzY6RDtM3U8FcOUzm2hWoELMkJQZnjL4DQrkVFPMhuzAiVn1KGrW7p/QxX9UMMjnEUEhpl1wPv50qQWLd+Mvgta8H84AOcpQisTbGY1zV4Ax6+j1fdhAbZLQeyFgZDdrI8KQT3EsKLjgrALWDS/O2vcu/OC1faWg2oWo7Ld5VMKs0UUaA2LA+pnoAwavIiZIpXrpa79GiDyESJRsjRBMYixbdU3WX+vgHVzDws/WIpZPLNvkV6Skf64Y1caU/blWa3MxU2fAG3ol/tzTIjZIcgM5TyfykjH6Qo3vqjHvKMnffyVpv/4Xn4VJvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aXy/RFk+eSlG5h5CQw/RVU8VP4DMdb5dCr2yDbmIXO8=; b=KR5SHh7hCdR7sqBvS0GUg+GWGff0I9xOyw12Bifg+HXIqvWAkWPzM8kS/ysLSKkzhLBlbps2F9tJFSVBtZUgdkTqUrNXXvZ9BA+L2PjeNeHA8nNpe6EzJyYDhfmhef5htL+WgUDrC/+yQEzczLIjTodBR6QDhxUGJOMxo9VjYMtNRp7aMzYzdKYpli14Cf+sy6VB+EpOdCpdhMBT6jdNnpRdulNpLLxiohUQQqE7tQb4W9NytBt73FQjiEB2yjPqVa2CBfyoETtSwilT7ikHO53lF5VJMisChSEwcUj5Z+CXrvermiuiCZuKKQ8fMu1eQg5Sydihrrs9IbPWdMQJwQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aXy/RFk+eSlG5h5CQw/RVU8VP4DMdb5dCr2yDbmIXO8=; b=OE4T9tSgDxJvjVW1OnSMxREYlRG2XFpQEuitQjj/VJKX6XxFYy8E8e4mODpjEr5oAqD/usbDgUe185Pu2GLDXS3c59ifmTBDlN5QndKNdRApyNpFBPiWts9SgvnAcgWNSQK1P8cEqRdy0GV7VwIbl8L22r2yWExqJgCvsJOS4DxzddyRseOIphR9Qj+XCkmaxs26hCfMCpd1eio2Y2vqJwnDfdQG084l44Ufvf1YoF2WpULlLWt6bISETfTbcQwqkhJCCUgo+vq+m9u9mZopvSJOot+7xvrO7qlilD0tdhUuK7bUe0gNnLjXRBDpxFfXEzLtH6zjOj2tqRa2HRBM4A== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PAXP250MB0543.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28; Wed, 20 Mar 2024 02:14:15 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::228d:8c6f:ed10:82eb%7]) with mapi id 15.20.7362.035; Wed, 20 Mar 2024 02:14:15 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 20 Mar 2024 03:12:56 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [E7QSOCK5AiDEzjuRy/NW/QylRfAAP0D/FJ08J3ZB9N8=] X-ClientProxiedBy: ZR0P278CA0062.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240320021256.107338-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PAXP250MB0543:EE_ X-MS-Office365-Filtering-Correlation-Id: 5c5a3d0c-f572-4e90-597e-08dc488370d6 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnpHlru1h1vRfamsRCbuNA5UMSCVaUkvMTdey/lq31DjOGORk6VydOSj0hgHGnb0hsqg/yCyUQ8WBNzUgW7cvonTHc+2RpnfcBgPO4BJNF4gi9PbtVumQJs3i+s8FVySnavpavqB8C8wzrLrVPPSSfzVPFcxb9nfxzgX/f/55h0tFY0/FqhWV5IKGUWRI16L26ADHKx2edBPyYsbvVU4fyjsNX0G2y4JhMfBn1R6QQG5Uvt9tAItMMcghzYRQc0v0OfQJKmIEOaHy94qNpbyyRbm6LTrj3nKwkRTHZmoZVfzkmX1yJmo8Rtzp9rEqgUK26TIPuGsCOSqEyS2rMFmjroO7qzrVPhFNGzwOAFzyQ1XovUAHoBe5mnHicPSfBkwbhlY5/dlGYYxmWhE4uYi1jIlabOcSZxLTQdO2Drl/0e6bAMKa/oK0Fwj1VFYPiW06D0ZPHwZdxF3gKMQaivtZ4M5d5BX9RJzopoJ7N7lOubVWhvvSq2rKsDcyoGkQ/T+qZ4ztyq6g3j7tbn4vQT8DquhELz9Mh6BN/1Bmi/XO1FGMoAmFehBroTyNWZ6L//Hf5YmLM3rQTM1mIY/dnK+c+JKe9vyKUIcJc/NRc+14QjSPFP4g65K8gRycUwGheAnxCnfzsEGevKIpFj79G3Ud+OO5zk2BLpRHW01pIUy8yjBy9Lqw5gLc/YhN6C9ryUchC3gdMJ2RtWMLQW3eLYU8R3CVSpxj8dJYkm9v/VsU7TeAVgKnSmTIoYfupRQmUm92yM= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6cN8dEaxgMkZ7MB8WYBvRYJkwNBqSz05RBDQpYD1yvMFOhLx6nShw/kkWsl0d5nU+QYQXqA5KLUkawttfBKCDAuXu7wEjfT3rdy/M7fbPY6h0Sa1129YWvmNHx/gJcl/Viv08BR+HEn5+Ecnq0m2kdZn1LpgeGR5Cf6R88BrcwJrJwe4aVz6BfIAFzBBF1Xwt9Kzgr0O+caFkteA1KBYUtyMGAjPDhnYj2TuVfsqbNGque/Le2vIOTmHMhSGEshutDzxbswwAwnTqSXy/T8VlszqEN8ZmvujkVwC4qd81yFOgFYPws6MKLPJP9y0EBKJtn6sZNzZB0VAnHsRTFytQ9fgco1HDoMD0rk4Sstc2f7FMEYb0GFIP5/tPJC1exbicg8lpe+nl2VDv5uxT6uep2FARdyYfdKTrQXha583bHPF+LITcExQuR0VYw9rXly0mhH3SbpaWvutqpNg03VnJpaKlANzshkqCxRw7bve/quwmekl4wA/ITO94kd//hwzphkn6L+9du3f4kFL8ZXEhY1CXbVpicQn64s2wATLK/aXewTyDeFPlfB8ApkgVJLosSu+vca80sv/dkORz+Jf0VoH33KCEeM9y/HJ/iA3VB+4Y/FO4Mitch7OERxqv7kI X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: z5/1dRIYbocRATx4x0jMe0A4191VuNPUPvOy2wGHPoVl2QNDxL3XoXYjFkO+SwjcaoXs4mjtT5tTKNIEaYpPLA6onmwzoHeMCCIJf3Yl7Ruf9qBJB2UEbYpFgeXmt2jwMl+XKeP8yD1N1pW0JXn7zZjkTDPU62bUvIeHmAcm7eapXtbRC63UXiJKYzfOFkOemjGCBYNMuHgNiNJq+gzpdfXjwRYYTk+lrbgcF1FfuDl/fLvdZE5vuP/TkrgstLvEY85zLPmvmkzY3pzGh5c9c+KXhquZ427zo78xdCtL0WyVwar8L40OTO0Z94TcnnHKkhLQ9xrdKdG/qu336BnXh7lAEPtBDRt0enVZFS74b1mCO8ut4pU/ia+bmsBJ5JZ+/8elWxWT8Vpaqg9LuIvJ90ka3TERFyolK8wooz2MdHGTFEi2WS/TDiZA4LVlxqFWx5J4Ml/e2vyg3i+STJO2SCfn6YyC4VyR9vAxicG0829LqDb4NQ0Dly89mq0yr0LNZ2qzSSaVJTPz8PlBLIWCtDDb58Sa1nbnAfd7bKr7ClrjMpls/lkUJSw4idMmZ5mLk6O+WykteSf8ecQ2NbxS6BAHBYBMpERSJ/GKiuy6HesMdInAdZmpvEBJ0XRRmMqqQyPNhTDsVfvk2ZH23vRwNEV5O8ppiv4VPoIRpCs7Da3taqb2sq5YQlQJ44s2jmpWPhwSMrgm/EWpsao+mZa7tMUvCYK0Ho/3ugp0NCscSKAQTe4gi+wMSwisWPp6F3jfLAcIH0dm8ssn+hojz73uuQiHTOqqYLPgr/jY37miTaNUNIVehHXkCfOxmlO9gWEmz6MlBk3T7JLW29t4T1js8FzC2ilb4jok08svCAuN2HGaN1AOb8kx+lc2AoNNU8uf/BrUIt4oVf1Nt73xWELz1vYHsHL+ZTpmeEYmcrrr5QM7DIAuThICyPZBVpKCUYe8E107fDGjSAa4QqJP+aW8hLWi3a4TndQocJ5ZTEUaR+4q8WDT7JITgpTSg1/4cMhA3iqOtsW0BVF/Ar/h38XwL1dHNk37BTvNeMQCkOdKIkF/PRjM5m1JUBse8dI4hhyvarqe1boPH9VMBLzYoQPYGqqsAWUn2wJ/QSqTXmsHvIsNGY7KQjwp/NKuDJ+GsqFEPHjwRV2WBMswpZJsqm4g62dmXiY0Xvm0g9WRHBjK3/a02enBf1oeoiQqNtQTpW+V9RkfqETc1CCay40pQ2uto8bSL7lswNpohiCkCEDe5uPhiawW4FrKx9YEXCsLAr7ujhQHmum1nm4beujwMv5tdw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5c5a3d0c-f572-4e90-597e-08dc488370d6 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Mar 2024 02:14:15.2323 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXP250MB0543 Subject: [FFmpeg-devel] [PATCH 13/13] avformat: Make init function out of write_header functions if possible 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: XJ66XO23AW/o Also mark them as av_cold while just at it. Signed-off-by: Andreas Rheinhardt --- libavformat/bit.c | 4 ++-- libavformat/chromaprint.c | 4 ++-- libavformat/filmstripenc.c | 4 ++-- libavformat/gif.c | 4 ++-- libavformat/supenc.c | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libavformat/bit.c b/libavformat/bit.c index cd088b87ff..5c3eb31c57 100644 --- a/libavformat/bit.c +++ b/libavformat/bit.c @@ -125,7 +125,7 @@ const FFInputFormat ff_bit_demuxer = { #endif #if CONFIG_BIT_MUXER -static int write_header(AVFormatContext *s) +static av_cold int init(AVFormatContext *s) { AVCodecParameters *par = s->streams[0]->codecpar; @@ -170,7 +170,7 @@ const FFOutputFormat ff_bit_muxer = { .p.subtitle_codec = AV_CODEC_ID_NONE, .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, - .write_header = write_header, + .init = init, .write_packet = write_packet, }; #endif diff --git a/libavformat/chromaprint.c b/libavformat/chromaprint.c index 4beb75c7a9..1cdca47ea5 100644 --- a/libavformat/chromaprint.c +++ b/libavformat/chromaprint.c @@ -58,7 +58,7 @@ static void deinit(AVFormatContext *s) } } -static int write_header(AVFormatContext *s) +static av_cold int init(AVFormatContext *s) { ChromaprintMuxContext *cpr = s->priv_data; AVStream *st; @@ -181,7 +181,7 @@ const FFOutputFormat ff_chromaprint_muxer = { .p.subtitle_codec = AV_CODEC_ID_NONE, .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, - .write_header = write_header, + .init = init, .write_packet = write_packet, .write_trailer = write_trailer, .deinit = deinit, diff --git a/libavformat/filmstripenc.c b/libavformat/filmstripenc.c index ec9c814f8c..b5d9179ff3 100644 --- a/libavformat/filmstripenc.c +++ b/libavformat/filmstripenc.c @@ -32,7 +32,7 @@ #define RAND_TAG MKBETAG('R','a','n','d') -static int write_header(AVFormatContext *s) +static av_cold int init(AVFormatContext *s) { if (s->streams[0]->codecpar->format != AV_PIX_FMT_RGBA) { av_log(s, AV_LOG_ERROR, "only AV_PIX_FMT_RGBA is supported\n"); @@ -69,7 +69,7 @@ const FFOutputFormat ff_filmstrip_muxer = { .p.subtitle_codec = AV_CODEC_ID_NONE, .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, - .write_header = write_header, + .init = init, .write_packet = ff_raw_write_packet, .write_trailer = write_trailer, }; diff --git a/libavformat/gif.c b/libavformat/gif.c index 8264e118c6..211705facc 100644 --- a/libavformat/gif.c +++ b/libavformat/gif.c @@ -40,7 +40,7 @@ typedef struct GIFContext { AVPacket *prev_pkt; } GIFContext; -static int gif_write_header(AVFormatContext *s) +static av_cold int gif_init(AVFormatContext *s) { avpriv_set_pts_info(s->streams[0], 64, 1, 100); @@ -208,7 +208,7 @@ const FFOutputFormat ff_gif_muxer = { .p.subtitle_codec = AV_CODEC_ID_NONE, .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH | FF_OFMT_FLAG_ONLY_DEFAULT_CODECS, - .write_header = gif_write_header, + .init = gif_init, .write_packet = gif_write_packet, .write_trailer = gif_write_trailer, .p.priv_class = &gif_muxer_class, diff --git a/libavformat/supenc.c b/libavformat/supenc.c index 9d5ca51894..ebdfc7c939 100644 --- a/libavformat/supenc.c +++ b/libavformat/supenc.c @@ -72,7 +72,7 @@ static int sup_write_packet(AVFormatContext *s, AVPacket *pkt) return 0; } -static int sup_write_header(AVFormatContext *s) +static av_cold int sup_init(AVFormatContext *s) { avpriv_set_pts_info(s->streams[0], 32, 1, 90000); @@ -89,6 +89,6 @@ const FFOutputFormat ff_sup_muxer = { .p.subtitle_codec = AV_CODEC_ID_HDMV_PGS_SUBTITLE, .p.flags = AVFMT_VARIABLE_FPS | AVFMT_TS_NONSTRICT, .flags_internal = FF_OFMT_FLAG_MAX_ONE_OF_EACH, - .write_header = sup_write_header, + .init = sup_init, .write_packet = sup_write_packet, };