From patchwork Tue Aug 23 09:03:21 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: erkki.seppala.ext@nokia.com X-Patchwork-Id: 246 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp2179874vsd; Tue, 23 Aug 2016 02:04:51 -0700 (PDT) X-Received: by 10.194.238.170 with SMTP id vl10mr24559323wjc.18.1471943091800; Tue, 23 Aug 2016 02:04:51 -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 br4si2134341wjb.146.2016.08.23.02.04.51; Tue, 23 Aug 2016 02:04:51 -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=@nokia.onmicrosoft.com; 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 dis=NONE) header.from=nokia.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EC250689C54; Tue, 23 Aug 2016 12:04:46 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0109.outbound.protection.outlook.com [104.47.0.109]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 89358689B0B for ; Tue, 23 Aug 2016 12:04:06 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.onmicrosoft.com; s=selector1-nokia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=oucTGlJGQi2DqZHEEsIjOIUNb7PRlhZC2TlIhaApcLE=; b=JCtmyjw8m96xgRL+64s++LENPFfyY3jlVAQ7e79O7PG8z67Y90nviKOFgzlmtQV2jwSnyPm/Atxi6LnN/rN5FX+Csd9TIwo5Aq1KoP9hWJC8+SayvCaP7wR1CxukU3FJVbgYMbfYEOWR4b2zGfvebRj1yyoE58+SVuOcrPHhHOE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=erkki.seppala.ext@nokia.com; Received: from erkkise-laptop.vincit.intranet (131.228.2.4) by AM5PR0701MB2531.eurprd07.prod.outlook.com (10.169.153.151) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.557.21; Tue, 23 Aug 2016 09:04:06 +0000 Received: by erkkise-laptop.vincit.intranet (Postfix, from userid 1000) id 434FE4449E2; Tue, 23 Aug 2016 12:04:04 +0300 (EEST) From: To: Date: Tue, 23 Aug 2016 12:03:21 +0300 Message-ID: <1471943019-14136-4-git-send-email-erkki.seppala.ext@nokia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1471943019-14136-1-git-send-email-erkki.seppala.ext@nokia.com> References: <1471943019-14136-1-git-send-email-erkki.seppala.ext@nokia.com> MIME-Version: 1.0 X-Originating-IP: [131.228.2.4] X-ClientProxiedBy: AM4PR02CA0030.eurprd02.prod.outlook.com (10.165.239.168) To AM5PR0701MB2531.eurprd07.prod.outlook.com (10.169.153.151) X-MS-Office365-Filtering-Correlation-Id: 2ec1bf9e-a5ba-486e-ce96-08d3cb346ffe X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2531; 2:Q5AXNPXH+qyCmARMUPVcT5YX78d7GsyCIVrntTh3BNdpmcwpO+/BStjlTzFl3J69dyC9Sqi65wvyr2Jditd8nnDXIjZAv5cFRAuufRJAR2lu/9ZJONo+HwisF09gKf4jFVPnThg5Uhi3F4e3p+Qw3AR21KE9pRKFrLZI3jv6GKF39EoOSHNNsncsyEkte6q/; 3:Vp1lOjbBo+OCRUuOCZUHLTRrI1pM5foAImMjFKym8lVMpV1CNNpX7ElbXehnlEVxcFx8hU0eghdZnSwsQUOWx+pQNqnSmdhJmSvAeMVCXmLRxO7xMutcfRawlFdiiPSK X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0701MB2531; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2531; 25:1IauI97RchEjaNxkvbhRJBfnst8f749i/ev7DeI/oI8PqudczVVzd7imff+ldmBm9OSxCf7O7wAF2Ad520alAKwOypK2Z7+5YV7eDPn4KtFcmL9ioAx8xov/HtZbMnKUIGquqvZMsd+wwmyR14fWdf38nNR7EBD3f+Ea3p6mRbF48ZGHzpE9m/I2UzZyNk1QgaxqXUUfiPzpRCeGPugW10b+ZgoQw3dZMR65sJ5Bf283Iu/dc1YD/PUzrVjZxE8Vd8fm6nSskec9b4MpFr8dv5nKyt0n5W8bhWLRkRiqZaYeZGt4KtRucyGeOor8KYVCyuvj6+nus8Kxy495y2BpCSDNlLUWqQ98eozzWPQEx/0VSBQGSo5PfkDo/IjEFsh0Dz04X6Hn+4HJOz7khspQ78J24V9j0cN2whNukB5h7Wfe+askPwRq4cA+ZFqLtniagWS6Odfc6U2odUj4bK1sVf+q8QS7apeSQisaVT+/o6UwrY/2CoUPciuo50Ebq71mgrPmlQIP3xy26fCBGPkb7xKjn2cRpYCABUyCO1LRWFyV5zpfFvFoZ+1bJMN3REccI/oPH2AwzSthHfbybUEWIVYlex9dp/3WTBgGDWmIJttodGxRXZmVaOlsunGXZlh5+2Vryprc5UOAI2PMBD+uQMvmlt35k29I8THEORSjuQw=; 31:+u7Xf/djIljO2jaKNVtow3zdR7mFS6akHej+KRuN5SowxrwgJFHLnG+RmhjgN30eC7fx8m1KBoR7QUfsbYI7z7FSA3XyVZieVIfpeeiSoEpG7B3VBnI8eNGydlE9NDLvOw9SaVx4t2prflLiCI/JwEYcE/IugcP/8Q+dRkmU2kQCxYNEFYizZQMhALtyf0SMIh32q9ezZ6IrcVATzT3Osuzjg4X3H7dzqWpI+eTeGZE= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2531; 20:zk0m9xRtSaIqsLNgn7B8suFoRmbRbNVHpaofmqSNRg3rGh1di/gXzvhhMN60kVBa282ZvaUg1ohLeJi4sSPRfyupPC/3x5KCZMvfibLyIYh8u9Ps34K5ABtKGxr6izAl0ERw/QO2hvlc4Al6jLIk/9A7ZXRnx0Z3zwUkZ92hC8/aSbh1mki3v0ULjFfigk0RvFdImWUXevqos0mOWWL045fkSXi8tSsyy8NREmdruSwmJ1+v2trBGetyxG0FWwiWPE2WUUCobiaiQA1xGiLOkiIman3TwlP8YXItPtZqvBDMU5RcYVZyVY3q0Aktqv+zgnwBlYLoc/6Ia1N+rc0PFaymkuu0JKS91zGm96mU133V4n6dDiiOq0qtFRg+oKKprtPnKfgQoJDaGA6bv1PodnysEcGmiWfGE3dc9GFWrE547IaLP/731nEeHlFOQVIm7bmhtXBeYNd5luxfE6GDrZ9CdvLOsc7qYzw85NsugArFja0nvJ15b8Yl1yHx8vbO; 4:HNUUQaGO1dg1nV8mxoOgKONtoyGBKY5pGKZPHBJb/v/Nqcu+irSyB9sb6FeMuYEXhOaiAdFyUkppp0GmJKPSZmOjrUS+MaVRHqSal8fplYjqYFhkpCSFJ2NMlmDOHK0P1JoHCF3QS9Yo0TCzhbmpXhckv25s2xdAB9krJpOfzKwTxk05uyEl9nWqGw4Mh/X7eXMQbRMX5iI80nDEacFPoSTwmV8Ed/LzxvGgBXTX9jCg7RCm3nef0t3ZhHX9VxdIluRjIHC8x9REJYd9jUBWGMMT/h7iJzpf9VMFs6yxCCJoVDU5WRWWLLZd3S0Aqwuqh386A9n/rE+QHV0ZSgjGOgJdNHUcK2avHyV2zCl0TmjxWiNSi8WxfeIdNaqR6rYKTSrZeCiXPpCU+4ZmwjoVZPyimdz22O32uQSFG5fcxAwGvOd4xWGsblSeEx2EnlNG X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(82608151540597); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026); SRVR:AM5PR0701MB2531; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0701MB2531; X-Forefront-PRVS: 004395A01C X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(110136002)(107886002)(586003)(6116002)(3846002)(97736004)(42186005)(90966002)(92566002)(86152002)(52956003)(5820100001)(122856001)(86362001)(50466002)(4001430100002)(19580405001)(46386002)(66066001)(33646002)(19580395003)(23676002)(45336002)(229853001)(105586002)(81166006)(7736002)(101416001)(68736007)(8676002)(47776003)(2950100001)(76176999)(4326007)(36756003)(7846002)(50986999)(2906002)(81156014)(50226002)(2876002)(2351001)(450100001)(189998001)(2870700001)(5660300001)(106356001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0701MB2531; H:erkkise-laptop.vincit.intranet; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: nokia.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTVQUjA3MDFNQjI1MzE7MjM6WUdKOFdEOWtWdFVVemFibnc0TE42QjVm?= =?utf-8?B?eVRjejRhakhMZk56ckUyNHRqMWNwLzBJWUd6VzdDSTBuZDIrMWRZemMrMklG?= =?utf-8?B?WEFpWG1pS0s2amswUGJmaytFSjFGZ0JkU0xudkJBcSt3Sk1HWVBacHlJV2ZR?= =?utf-8?B?T0NkOGwrZDdYZnFCbHJSYWVjak5LVERjRmx5K201azd3SXZqeWhqcWluQjBo?= =?utf-8?B?alAwcmc5OHRndlQ1dk5OVDl0eHRaK0wrOFpjMEZvSC9sSlJ6VFdHdWNNZDJ6?= =?utf-8?B?WjJhUTNrMGFVL1RmdDVyUEpiR1NhQXlCd1BtenpicC9jSno1RmViQlZmMDU3?= =?utf-8?B?Yk5ES0lIRlREQUZHWndiNzRVYVhhcm4rdnR0UnZiUTgvZEo0T1UzenRjWGF4?= =?utf-8?B?RlowVHlSUkZHTllEdDZPa1cvckZuYkFsbGFsRlZWVTdVdld1NjJyZzlNNm42?= =?utf-8?B?ckg3SW9INlRzUkFuYm1kTmU4bG90K0tCRjNUbmVpTm9QYWdzK1lZTUIwSm1S?= =?utf-8?B?ZStzRzh5dmxYODNOalgxaG16dHlQM01WSUlVbHZzRVppM3hHbkpyS2c3L3E2?= =?utf-8?B?U25COFlycG5PS1RoeDNyTTVqcnhvWmhyc09xQ0pmTGZ0QnA5YUVjemZZWW1I?= =?utf-8?B?SVd5enl2ZkxYcW00OW1TL3pnM2ZRbzU1bTJETERUNEI0djllR2ZHcjRiSlFh?= =?utf-8?B?bFhPZUdYT0krUTZqYndHOXUyamVPRi9Cd3VxNGRwV1liWkpydDVxL25YL09C?= =?utf-8?B?ZkhnbG84dE5zbXFUMVJGNk96MHgwcXBSTmVkRFAwYTJpeUxvU2NKYTcvcjNx?= =?utf-8?B?QUpuaXhmbXRHaGU4NG50ZS85VGZYME9YcElIYUhQNGlmSEJuUDhjNVFVUEs4?= =?utf-8?B?Uk0xeVdpaHIrc09YcXNwcVZDNUZUWXByaVZEOXpISWdWd0RvNmV3Z1docUNQ?= =?utf-8?B?alFWK2hIREtJT1hScGVhWjBYSFVaNExiZWpDOEtKK1IrUEQzWjFtamMvakVU?= =?utf-8?B?UVlUL3hBdVU5TU1ucFBkYVhzbENVRXBEVHE1YzBiRXc2ZkxQckgvd0dZTUJG?= =?utf-8?B?a3lvem4rYWthZHRHOHJvOFROeVUxWWdzRlJFOWQwWEc3S3RJSDl2K1QvNjFF?= =?utf-8?B?SWFKVHpybHNFYWRjenQwL0FDTXdZeTZyUFEwZ2szZVllU3BZSjlneGFuZHA4?= =?utf-8?B?RTE0dTU3c3pXcUhoVTJKTHJMcTVLQ0k5cHQzeUJjWS9LUVNkSjRsd1ptdVVH?= =?utf-8?B?RWszZGpGQm1MZ2Nzc1lSd1p4aEs4U3Zxa21TL3ZkRWtEbzJlTXh1d3BsT0c2?= =?utf-8?B?c3h3TW9wVHVMNlJFUGliaWhpaHZQb2crQzgxWEhzZDEvTmNVTDNtWlBGSjQ2?= =?utf-8?B?VXlHLzBvRmRydjJtTUs1M1EwbjhIN2V1Skhna2crRmhOcUpZQloza21RMWl1?= =?utf-8?B?cmRUeWVkRjJMdzBwcVo5cU1vTXU0ZFVoc2RIYmd3eW5oU2xtdUFxaTRINFRa?= =?utf-8?B?TkRPalNaY3hRZzhvNWJjT3g4MDdFRmUxMDM4cENxZXIxeENyeDZ0cDU0WGxN?= =?utf-8?B?dFkwQzBDT2NqbUJUSnNmUjYrMHRaQjRpTVRXeWdDNjZoTk9HMGFBZ3B1NW1v?= =?utf-8?B?Z1E1N1V0Q2hZYTJoOThTTUM1SnJDWjA2MlRrNkhCSnRIdnhYaXE1Z3RzSzV6?= =?utf-8?B?YTBiVUFpWEtTb3V1Y00zMEFIdHA2aWQ5dlZsNzUzNHFhRlNoRm9JbklHRWt4?= =?utf-8?B?R3EvMnoxMU51SmZTcENVTnZBPT0=?= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2531; 6:K86/B6dxkuxZO+27lZmxDzXhu4RBozZtC+fj/BA4Jkd/7Z+aU84H9xSqc1VPLa2G3F6OXz1/tRZAAxkt4rSgm8LXN3TYtmBTTqwLoJsNmxX52lPWsAglhA0s9yHqbXdMBODwC+MJ4OTlEjLt6d+6T7TbChNc9IgD+v01CLrVpV3sI1RZ0v2RmHgw6RiONRhIadaQ3pS+JcR+YGl0ECNwq02O0NZ2KodgyZ+2JSM0utSHjMuMh0poIDC6N0p9Wc7I4F4ruPchZI+rZ2gFijtbLBQ1jkMjiFPTxaRNqOgdGlCO2aCnwnT1lxaD2jDC8AjlwNU5jq4a95dRlTXczeQNkw==; 5:chMVVWio/DV9k26YOB3SLmrY7xzz8KzcahR6Om6lPzwVjaBp6uI/KGEEWWQRQBuuLd5r/Dyad1Uj6kNovKCRr0j80NwSe7NsAUtcLnNdA9l8dITLF5kqvSS5LHfkFwHxafvT98GT6JWTa4E4BuHl+A==; 24:k5nXRL8R3+ahsaaFDvI/Z30SMWRY1l2tetaoI9R6CupA4DPiQfTrMLoA/Kaia+xRkulMB1XZwzn3JIHG4EXi3OeedwZYHrETpG6HAhLjEnw=; 7:MDSAousdmA5wM/els86Y0Npxh2LaNSF/2oe1VzJ8iPKRRawXqiaUBNE3s64vFUewI4OcAzjMU4qwkVfnOmt/Co/FIaZQmbPw55rw1cFrUHK/+4RpXjxp/Pxi8Mrldi/MjQ5WGWuiq/6XvNPJZ8x9WF+8nPYXUGYynZ4Plwf6Gq6fysQNguiYqLoggI+nrXObxUNPKfo5CgSr6PKm73OYsQIaxGcfLAzxxjzrKvve8oUl/7NeVCtOeUQlya3gUs+R SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2016 09:04:06.5898 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0701MB2531 Subject: [FFmpeg-devel] [PATCH 03/21] libavformat/movenc: added ability to use original stream ids as track i ds instead of regenerating them 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 Cc: =?UTF-8?q?Erkki=20Sepp=C3=A4l=C3=A4?= , OZOPlayer Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Erkki Seppälä Sometimes it's useful to be able to define the exact track numbers in the generated track, instead of always beginning at track id 1. Using the option use_stream_ids_as_track_ids now copies the use stream ids to track ids. Dynamically generated tracks (ie. tmcd) have their track numbers defined as continuing from the highest numbered stream id. Signed-off-by: Erkki Seppälä Signed-off-by: OZOPlayer --- libavformat/movenc.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++------ libavformat/movenc.h | 2 ++ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 1f55333..8c4252d 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -89,6 +89,7 @@ static const AVOption options[] = { { "encryption_scheme", "Configures the encryption scheme, allowed values are none, cenc-aes-ctr", offsetof(MOVMuxContext, encryption_scheme_str), AV_OPT_TYPE_STRING, {.str = NULL}, .flags = AV_OPT_FLAG_ENCODING_PARAM }, { "encryption_key", "The media encryption key (hex)", offsetof(MOVMuxContext, encryption_key), AV_OPT_TYPE_BINARY, .flags = AV_OPT_FLAG_ENCODING_PARAM }, { "encryption_kid", "The media encryption key identifier (hex)", offsetof(MOVMuxContext, encryption_kid), AV_OPT_TYPE_BINARY, .flags = AV_OPT_FLAG_ENCODING_PARAM }, + { "use_stream_ids_as_track_ids", "use stream ids as track ids", offsetof(MOVMuxContext, use_stream_ids_as_track_ids), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, AV_OPT_FLAG_ENCODING_PARAM}, { NULL }, }; @@ -3435,6 +3436,45 @@ static void build_chunks(MOVTrack *trk) } } +/** Assign track ids. If use_stream_ids_as_track_ids is set, the + stream ids are used as track ids special case is taken to generate + track ids for generated tracks, which don't have a 1:1 stream to + copy the stream id from. This the order of tracks is the same in + both mov->tracks and s->streams (and no holes). */ +static int mov_setup_track_ids(MOVMuxContext *mov, AVFormatContext *s) +{ + int i; + + if (mov->track_ids_ok) + return 0; + + if (mov->use_stream_ids_as_track_ids) { + int next_generated_track_id = 0; + for (i = 0; i < s->nb_streams; i++) { + if (s->streams[i]->id > next_generated_track_id) + next_generated_track_id = s->streams[i]->id; + } + + for (i = 0; i < mov->nb_streams; i++) { + if (mov->tracks[i].entry <= 0 && !(mov->flags & FF_MOV_FLAG_FRAGMENT)) + continue; + + mov->tracks[i].track_id = i >= s->nb_streams ? ++next_generated_track_id : s->streams[i]->id; + } + } else { + for (i = 0; i < mov->nb_streams; i++) { + if (mov->tracks[i].entry <= 0 && !(mov->flags & FF_MOV_FLAG_FRAGMENT)) + continue; + + mov->tracks[i].track_id = i + 1; + } + } + + mov->track_ids_ok = 1; + + return 0; +} + static int mov_write_moov_tag(AVIOContext *pb, MOVMuxContext *mov, AVFormatContext *s) { @@ -3443,12 +3483,13 @@ static int mov_write_moov_tag(AVIOContext *pb, MOVMuxContext *mov, avio_wb32(pb, 0); /* size placeholder*/ ffio_wfourcc(pb, "moov"); + mov_setup_track_ids(mov, s); + for (i = 0; i < mov->nb_streams; i++) { if (mov->tracks[i].entry <= 0 && !(mov->flags & FF_MOV_FLAG_FRAGMENT)) continue; mov->tracks[i].time = mov->time; - mov->tracks[i].track_id = i + 1; if (mov->tracks[i].entry) build_chunks(&mov->tracks[i]); @@ -3529,7 +3570,7 @@ static void param_write_hex(AVIOContext *pb, const char *name, const uint8_t *va avio_printf(pb, "\n", name, buf); } -static int mov_write_isml_manifest(AVIOContext *pb, MOVMuxContext *mov) +static int mov_write_isml_manifest(AVIOContext *pb, MOVMuxContext *mov, AVFormatContext *s) { int64_t pos = avio_tell(pb); int i; @@ -3552,12 +3593,13 @@ static int mov_write_isml_manifest(AVIOContext *pb, MOVMuxContext *mov) avio_printf(pb, "\n"); avio_printf(pb, "\n"); avio_printf(pb, "\n"); + + mov_setup_track_ids(mov, s); + for (i = 0; i < mov->nb_streams; i++) { MOVTrack *track = &mov->tracks[i]; const char *type; - /* track->track_id is initialized in write_moov, and thus isn't known - * here yet */ - int track_id = i + 1; + int track_id = track->track_id; if (track->par->codec_type == AVMEDIA_TYPE_VIDEO) { type = "video"; @@ -5773,7 +5815,7 @@ static int mov_write_header(AVFormatContext *s) avio_flush(pb); if (mov->flags & FF_MOV_FLAG_ISML) - mov_write_isml_manifest(pb, mov); + mov_write_isml_manifest(pb, mov, s); if (mov->flags & FF_MOV_FLAG_EMPTY_MOOV && !(mov->flags & FF_MOV_FLAG_DELAY_MOOV)) { diff --git a/libavformat/movenc.h b/libavformat/movenc.h index 894a1b0..ea76e39 100644 --- a/libavformat/movenc.h +++ b/libavformat/movenc.h @@ -217,6 +217,8 @@ typedef struct MOVMuxContext { int need_rewrite_extradata; + int use_stream_ids_as_track_ids; + int track_ids_ok; } MOVMuxContext; #define FF_MOV_FLAG_RTP_HINT (1 << 0)