From patchwork Tue Feb 18 02:26:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Soft Works X-Patchwork-Id: 17825 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 408F444B048 for ; Tue, 18 Feb 2020 04:26:49 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1E852687FDC; Tue, 18 Feb 2020 04:26:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10olkn2080.outbound.protection.outlook.com [40.92.42.80]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E949F687EEC for ; Tue, 18 Feb 2020 04:26:41 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aWEnpUl6CnaPUo48kk6F3KnZirbyRNC/jH1AvMkkr0UtythFHXpk0TbkblD5ZPMlAcEH6ZkhOEsEbSDf+KCvyNzYauCtkbHa2IFqtwwMluHzHfzFzqQyBzNMTYcsmfjfuJa5pY9UpwwVlMPLNMiml7vBzLU8L0uNKKrP+deWTc3cAcLdulXAxyVzGjd/sX0JjRyhbivpV0ytSPbe3I46zXkRgrt1u9uIva1nVDMUh+nyag4yKiM0Cu6TEzjVNIJycEbgGh7FcHoLxr2yzKyrJ3J8lHhVGkduTlL0Bty2e8rEv2pliH3k7UTxe2O7vSfV/koWXKXZiH389y7FFj4oeg== 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-SenderADCheck; bh=8OTbhenGAa73DxKBaYsKS2WqAFfkpPkFctJy75fMADs=; b=LiLDh7n2lpNffGPAjZ9n4TPje7UCT2f3EkzNk5TwaKXsp53+Dq5nZLWRHPKShF61T/yOP8ynLsF4BDGxFp52xphoTeCI7xUQ/MPmC2H3c/mwVMnowitUHmV0UXbhqKkxlJJmH/TRp0Nu8bJUV/aSPn5MkgZvXmZ9x2DfkcvooyL/3QJxCIegq7OKmcPjr/WmSrZoWXxlr4P5jlxVvPgN+/UPD/5HnRrFou9jBbvnob4B/lZ9qk+dMjob4zaWJ7c09eo5jVMh8cVguELb45Xd/8ayMVbDSgT6f5LDzKMTk5L08T9wND0KLEvHX7eFYpL3kiAgYIUVcknh2G6qsYkuJg== 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=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8OTbhenGAa73DxKBaYsKS2WqAFfkpPkFctJy75fMADs=; b=EpI8+PDWo4vTiEeUCjoKu3Jb5ZOIRRqzPpDYz0bfiPkw9BYnXsizNXuFqXJitVrBX6jkeOeYFjEDK8KP8nEOROWl/5forJ36YXbaeuNCy5hIWRCDaHeF5bf3n4NvHNu5P1qZsXmrIMP6LB+W3fWwQbGyLghAYEx+4KPPY0/xQwDlUumz5VEgvESnZGn6U/pBt9XIwQ98styh95XZJAQpVy8FOh5FIxG8EMaYyc5IT80aUnvXHsuYMrD3LEAesqV1A09qddZhE6klOk5d0XXKamBNNRnw1eM0NyZgyh2Bp6X+0jha5fwLvrnnJ/urqfWKu+F5pQUOLPk6VTYbGHgGyQ== Received: from MW2NAM10FT055.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e87::39) by MW2NAM10HT175.eop-nam10.prod.protection.outlook.com (2a01:111:e400:7e87::71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2729.22; Tue, 18 Feb 2020 02:26:39 +0000 Received: from BYAPR04MB5222.namprd04.prod.outlook.com (10.13.154.54) by MW2NAM10FT055.mail.protection.outlook.com (10.13.155.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2729.22 via Frontend Transport; Tue, 18 Feb 2020 02:26:39 +0000 Received: from BYAPR04MB5222.namprd04.prod.outlook.com ([fe80::d8b8:6d31:b124:299b]) by BYAPR04MB5222.namprd04.prod.outlook.com ([fe80::d8b8:6d31:b124:299b%5]) with mapi id 15.20.2729.032; Tue, 18 Feb 2020 02:26:39 +0000 From: Soft Works To: FFmpeg development discussions and patches Thread-Topic: [PATCH] libavformat/webvttenc: Allow (but discard) additional streams Thread-Index: AQHVY2E0yBDruMybtEWcgJrvew6xQ6ghPH/A Date: Tue, 18 Feb 2020 02:26:38 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:EA310D0995E86A91831D5E8C74ED0B860D325C4861EF1B4FDD0B703CA20A07B0; UpperCasedChecksum:78D324F17AD700A63A9CB9AD36329A671C2E31820C5718214592A7A3CFF2ADB3; SizeAsReceived:7121; Count:44 x-tmn: [JoS9mo1fNmWqKRhkSbK3+HPglRfknBTOPBm070kauJIO0If1TByTO2dVACHSIbWo] x-ms-publictraffictype: Email x-incomingheadercount: 44 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 067064c4-a0bb-4c62-c1d6-08d7b419fbed x-ms-traffictypediagnostic: MW2NAM10HT175: x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: R5TcSVx9yzIefJfdaQyz7g1q5F57wu7TGHCCDOXtFf+hUt/Oew6jMihqK1hrGbBeTSZrhhSlQPJTKgUO3emzUFEt4/ujZXnCVU+lrGuG/p3UzTSKxJFPzVMzi+mlXSwvj4BLqdXeSqV0DOSsRftd8zBqrpZkjOqfHoiD0l/qZmE0YN8LHfpYhoRct5GCoKKJ x-ms-exchange-antispam-messagedata: 9UALpzCF17an0wFoanJF1ntVSEFBDT5+z+guZJhNLkm/1tXF4+xWECWH/dV92WWiywERYlIDS31bqXg+9531XfBQfvoXwCif1Zxipwxwq7m7LzimGm94f4+NUfLt8dxXV0L4HuFqQBGT2cE8oUC+GP3OuL0q8YI9pIjlhliVisbsOjTMkj87QBbnkBD4ouzmxezA1V/phE5tg0fIsv20rQ== x-ms-exchange-transport-forked: True MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 067064c4-a0bb-4c62-c1d6-08d7b419fbed X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Feb 2020 02:26:38.8430 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW2NAM10HT175 Subject: [FFmpeg-devel] [PATCH] libavformat/webvttenc: Allow (but discard) additional streams X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This allows having a video stream as reference stream when using the segment muxer: The video stream serves as a kind of 'heartbeat' to ensure that VTT segments are generated regularly, even when there aren't any subtitle packets for a while. Example: ffmpeg -i INPUT -map 0:3 -c:0 webvtt -map 0:0 -c:v:0 copy -f segment -segment_format webvtt -segment_time 6 -write_empty_segments 1 -y "sub_segment3%d.vtt" --- libavformat/webvttenc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) -- 2.17.1.windows.2 diff --git a/libavformat/webvttenc.c b/libavformat/webvttenc.c index 61b7f54622..be85c03130 100644 --- a/libavformat/webvttenc.c +++ b/libavformat/webvttenc.c @@ -49,8 +49,8 @@ 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) { - av_log(ctx, AV_LOG_ERROR, "Exactly one WebVTT stream is needed.\n"); + if (par->codec_id != AV_CODEC_ID_WEBVTT) { + av_log(ctx, AV_LOG_ERROR, "First stream must be WebVTT.\n"); return AVERROR(EINVAL); } @@ -68,6 +68,9 @@ static int webvtt_write_packet(AVFormatContext *ctx, AVPacket *pkt) int id_size, settings_size; uint8_t *id, *settings; + if (pkt->stream_index != 0) + return 0; + avio_printf(pb, "\n"); id = av_packet_get_side_data(pkt, AV_PKT_DATA_WEBVTT_IDENTIFIER,