From patchwork Wed Aug 31 11:35:44 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: 355 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp327576vsd; Wed, 31 Aug 2016 04:36:24 -0700 (PDT) X-Received: by 10.194.28.5 with SMTP id x5mr8371207wjg.11.1472643384072; Wed, 31 Aug 2016 04:36: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 f23si10101599wmh.115.2016.08.31.04.36.23; Wed, 31 Aug 2016 04:36: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=@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 4AC81689A65; Wed, 31 Aug 2016 14:36:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20104.outbound.protection.outlook.com [40.107.2.104]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6123D6898E8 for ; Wed, 31 Aug 2016 14:35:59 +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=mkj079WpXhbmiV20Rt8ssl70lh76mnqGX5rA6v5d5e4=; b=l0FxDSZFUL+wKCfT3ryXB1hAgFsG2CAqh/0bIe1ynVwsMpOvrVT5lRCLbXZeATScJKtkOUQ9Mm6kfbSWdSaE0ZVPRHk7JLZ2a1LQFgUC8K5KbuDFxWiexclPK2+mqlV1xO290aXyh1vKqpPWeFSxcYYQkKscciGTA8ILMmMg7/w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=erkki.seppala.ext@nokia.com; Received: from erkkise-laptop.vincit.intranet (131.228.2.27) by AM5PR0701MB2529.eurprd07.prod.outlook.com (10.169.153.149) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.599.9; Wed, 31 Aug 2016 11:36:03 +0000 Received: by erkkise-laptop.vincit.intranet (Postfix, from userid 1000) id B75354CB940; Wed, 31 Aug 2016 14:36:01 +0300 (EEST) From: =?UTF-8?q?Erkki=20Sepp=C3=A4l=C3=A4?= To: Date: Wed, 31 Aug 2016 14:35:44 +0300 Message-ID: <1472643361-10118-2-git-send-email-erkki.seppala.ext@nokia.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1472643361-10118-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.27] X-ClientProxiedBy: AMSPR04CA0022.eurprd04.prod.outlook.com (10.242.87.140) To AM5PR0701MB2529.eurprd07.prod.outlook.com (10.169.153.149) X-MS-Office365-Filtering-Correlation-Id: d4cb25a6-de40-4507-e681-08d3d192fd95 X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2529; 2:TIZTNfUGO7NLRYT2Pj6EPgQmJkT0k9sa4KnICVS2NNDWZflOiDsDoCNmer8caPnD+Dd0UebT1GpZ60+bhWmTjI75q6Yo8eqqPCyld3dgxxnQW3KsITaR9WZay/WCzlq4YhIfZ073mAAPoqE4bb+2Ycd0WvB2epMx5OAjEscbtWGRcB69qTMq+PdICLgl7KVJ; 3:9ZGYlRJI0N9Ka3/BjtIh/NBSNoksT2R46vCi1z9P4upzlkQELjwQd0wmCMilZY/Y9OBkkQfpxkNnyvwfb1t7UFhZJNIJHWfOgBXR9b/HIYRc3/aB6V0tsBciDNcZT/Gi X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM5PR0701MB2529; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2529; 25:lzU0vWyf/C2XO9T9/jttEwQ5mQ5Qxy7ZqE8TPMRvfINj3Uc05IUcnvFoF7rqwpTRGayc3FOa4WQLMQ7Bd/ujhvxK6yXqFHJqj41xuhRqid3ghGSlB+oRXHSsImFphptCLi6FeddrjsG3n4uRbHdTYooTHYeA8qCaFwKZCwojQW4fY4EJWBRJ5wiymO13Y3ebnnJOjZmdj7qQQIS0Jx+MlkzsnbLo4egPjaQ8WTAZsJDhiCjmOGilUFKgWBtD3Ln0+gdUCLHKjLyxI+txNkq0kIoWNP23D0HUvkeI4juA+WHB4kY78iNE/gEVMPdOv7bEyJHdsx4fKbX0XNCzfnitLwk6gqvF2MGLAnScxQqQ1pVlrYzicu1QmreCC3hN5U7pHrvISMMSZDSaO/Z2vgifE2islsGuWCw8dHoaKNj6oYjalfsXEU8dg303YE5uVsQARkh+FHjXLuZjZA7CARS99YAHQm+OJTp0DBGVY5M6q28ppiLhGrkN9abqendzRkiADrnk9WQm7u6qS1WgusnVKAcREKAkr3HZnoH4Wc8dHa2Y1WlpfDOx+fXUf8R0UJRivkCd5BHd3A0xk2whbkXNu3m+ebdIkAM4Jco9bFjjqDl8fSjvHVlF1V+HEnX9jW0a0WL8BDS0o8e3bKVCC0shVqfeTJAoLTCNxOMSSuQsbTt37hDt35CJmlWljW+Vfu5A; 31:sk3OCtD6OHdy36DJDQGg6TEOsRxKhc55ZpvJYKijenhA/D1PomKRdcn2bRygkjPZ+M4MXWWH2l2KfKVcTw9Vq+RHWqt+nA/KFyR3KqdUPeF2o2HLSC03i+bNqg2CCwXhK3NjFaXO4Vk8zXdZ6aXIwa1vX8oV5pjKrw/w0l5/meiHSd918xs42XrFyVM/dmrHmT4+P1niwHo2WI2CfbPpQZzvclr/721HiWo49O5oHkc= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2529; 20:0/x6Ku8VBFBxYJIewOHzZ1bZ1LE4qmH/RrRsu4xPYBEr6MUPpbxC9EfYp+nlIRwtxjjhCvGCYplyyQlZyiAX89aNAGQLeJFkviVbJV1Fw+v4SFxsrFTQHZgNEJYW53r4kWxGOPOmYkgoOlctENf6oVSO7RRxSD00JL1Rv676MzrvFxu15/kscI2g+/2Yj0fj6hhPkFnUFClqVaTcCFhnD+ZB8+DF538p/D4/uIYGcQGsKEzptIiX7PObi647m8XprIbUeIWk2qkLqA3Rmt5GAJ1rS67Bd4EQiMN0cST1VDtc/3nBqmqT0C4MmuD6y9uQ9K2/86xQEvgHlAmMSidzh5Av7x9MQYXOlGuOv7ZQsmpjM7r3blNaodpPwL8Dj7nalA34X7YEDHmktTNTMFXOJSpE7+98xj+Sr2yIh3yMGW7MjsMa0YbPjJUS7SYKjW4m5T3dVYHpEDNmnI9+PagQQRuz1iqqQPqaIHB6XdJB9fPjHo46D/kiUTGuzZSLyZO3; 4:LZa7GDNeCdqbftxfSthR7HTtk80x4GXOd+MHIWabbo+cUigXWvwyQAszdBeMBv7mUM/rLaPzAz4b0zBUnFYFKhakH53rK9CKlGctU9fPxcPtq294hiqWkHzC7LtGZjNulYeaP0+fIu0Ti1cntnbGUz4K25PEv6txm3WkhIiuGf8+qtmpsbDScrFgzMs18KvgkpfTZvQT4ALl1X69nmEvdNWpGuhs3pxIoj9hxDGhyBCMhw2u0Rup+u9BRlqAwf1N6diPPTYhXr8enx8f9nGtCwJvt00q1/3rd2soszQbWZwjaGzckXjxQgm9fEPTJz5o8PjuvDcUwwtegglwGjs51SrTNBnGjEhqKG98BWme2UaCOfRsy6fX8w+JgpnpzaDQJ/5Aw7ekcW0uXB1+r2gdzF9Tj/iuB70GFg8lR/tGzyp7G+fPbtDLaoQfkjIbKZRb 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)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:AM5PR0701MB2529; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0701MB2529; X-Forefront-PRVS: 00514A2FE6 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(189002)(199003)(68736007)(8676002)(4326007)(2906002)(50226002)(86362001)(229853001)(50466002)(2870700001)(7736002)(7846002)(36756003)(81156014)(47776003)(2950100001)(46386002)(92566002)(5660300001)(45336002)(2351001)(33646002)(586003)(19580395003)(110136002)(4001430100002)(52956003)(90966002)(42186005)(107886002)(19580405001)(189998001)(76176999)(23676002)(97736004)(6116002)(101416001)(81166006)(3846002)(5820100001)(122856001)(50986999)(105586002)(106356001)(66066001); DIR:OUT; SFP:1102; SCL:1; SRVR:AM5PR0701MB2529; 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?MTtBTTVQUjA3MDFNQjI1Mjk7MjM6MitBTWJheXVOSDBObjJZcjBOajlpTjRm?= =?utf-8?B?YzBTVWlNOXJIcmtrRFhsZ3JXSmZSSVBQNDBrdWhPN09kQWprQVMzLytNcTJD?= =?utf-8?B?T05Xb1RmbENSSzMza2RJSWVDbnRpSFZvZ0NjYXVNNmxJdCt3V2NKZVN0UHRr?= =?utf-8?B?YVZJY3pITmNxOXpyRHlMaTR4WFY4Qy9WTEdNVkM5NHo1VlM0YmIzVHhZY0RB?= =?utf-8?B?UnZCNHlEYWY0RnYrdE9OdzU2bHhNVytmQVJBcENjRXVqUUEvZVdnc1RscCtw?= =?utf-8?B?WUtYcEVTUDhLS2Rtd2pZSXU0OHZuK0p4TGlEdndJU3dUdHA1K0hzUFUxMmdl?= =?utf-8?B?SWUxMHZjczNIZWx6bWdhTjJEZThKc3Y3dXloWWJTbzR0ekk2bnF6VUpOdEdL?= =?utf-8?B?a3J3VlJsQy9BTHBqNmNxZHlRMi9sdnVZOFhmb0lTMytDbWUxeFhyRnFyQVpJ?= =?utf-8?B?S3c3c3JyajNkTGFKN01pVjdBT1NGOVJtTTM3VklXZWRpSE5EMEJOQjJqd3Zy?= =?utf-8?B?dWpvZFhxUUVZQkVZTit3RWUzbER6YmxTOFI3VDU3TXR3VkNpSFBHbFlaZ015?= =?utf-8?B?VzFramdJVElmNDh0TnVVdzc2SGRPRFg5Q1UxNHlRdExOdkQ4TlpPUGU1WGRo?= =?utf-8?B?aWVjY2JrUHdBYmRVeXVXajlDcURLZFFTT3kxQ2tIMm54S1daRk9NcFJJUWRF?= =?utf-8?B?T1V5NmdZOWYrTkZGUk03bUF1WXpPaThzUEZKTzBOSTNzZURCc0dYKzZLVGkx?= =?utf-8?B?dGpHVWZxTFAyWk9mUms5SUVzS0lWUk5ZYmJFeStvTytweVFqcFdpTkRvQ0py?= =?utf-8?B?ZXNxNkhYOXpScUUzejRhbGY1dzkyTGE5T2t2MWZsazgwQlJHWmhhWVRNMlVR?= =?utf-8?B?TnJQSURoK210a0lrcHIyZVEzV2dtUmFMTndxSEdIZ0syWkRwV0ZtTTkzM1RM?= =?utf-8?B?Z0JycTAwcldwcDFKYWswQmF1WnE0LytTeE9tRWVEaE9pQnk0Vm9KVlpPQ2VE?= =?utf-8?B?WjE1Z3VLVzZNdGdIdGJlaUNKcm04RlhTOTEvMnpSQmFBZ0pBRFJFb0hPTFlK?= =?utf-8?B?ODVvaHFLUXVoQWRrNUNjQU5zYnc1WUNZOEFtVy84eDZ3TmlEMDR5SGI0TDV5?= =?utf-8?B?RWxGV1dOY0o2NUpOUnFONGUyT1dBZjVGYm4zTW96RlRsTHJ6eENCcU43SjEy?= =?utf-8?B?Sjk5WStCajZVL0JPbmI5aEtaWW9xQ002VVA5VW9ZRzdyRXpyUVVBdy9IZnhN?= =?utf-8?B?YU9YVnhFekdvS1A3K1BLMlRoV1NXa0FDOFBickVBSGx3cUowYnZwc3R0SVR1?= =?utf-8?B?UkdmSmdJUGlobmZIWFFvb0ZYRG12UFZ6MTZuSGIrc1ppMVhzbmNyTVV1MVk0?= =?utf-8?B?QkRiRjlPSEpjaXpkUXYrMG5zV3J5QmY3d0tueldlZ3JSTXVtQXg2VU56ZmFY?= =?utf-8?B?TDlRTllyMVhEbXpQWm90R3g4dnloTjhzblB0UjdPcCtKNFRKdHk3VkdmbkN6?= =?utf-8?B?ZkNNTVk0SjdObGNwQjBZZVdYaVFKTTk5SW9OTFd6dzhaTDBKYzA2eUY0UlRN?= =?utf-8?B?dVdJZk9vOE1XZVc2RlBwdjBaSW9WYXpOOUtpbmEySDR1cGFwem54cmd0WXgy?= =?utf-8?B?RlRLQXZYbzFTL093R3ZLd1hrRGVEcnE5UHNYYTRTMGtVaGR0T3FXSHRTUVE9?= =?utf-8?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; AM5PR0701MB2529; 6:rI7vCxllKAzqppqcYDSLOYimtHWyolY+oJYe1WceGAW55LVMT+UgH8v9Hz1U61aG1XffynEr/y11hl04oga+KhApoICJczqGJXiCtT+2GbiU/HIAEz82fadDBbf0r5N3F7TPuNAJ9VKnVr9mrHS9BXBlb/iIx2OpWTM331Rm6UuROdqM4ae4AKn732yf7qR4HNgADt5O0ctRR1t8dl7DgYI3PRWdkoTLtwdcFA/fgEZ/lDwQt5eIeyZEg+FZdCgqM+tvcFSZ/+HEIAMSho7GDmE1Um+rW9MMT4hC53gD6Q96cIGDZ/eLaFshnPUoXSTd4E9Mbbv81Tc04/TLgStQFA==; 5:apgb/ZSECP/1oOZbQqC0U/wS1t8m2u7UVdy8S4WM5jNeg+fHeOgXRQhR6w7JyniAflKoPcr8AJYy/h+TdEC2fXkXI6JQY4yGFaIi7EmiGdzKdPbYUInVv/CJM9WWEs+aK4KiXtJMcCq7Sy+MK2eKMw==; 24:kA3i7XEtHdw76dLzF7t+tv3yeMJBG42mhULS57uDVCjCrheKybgV1o7joIf3PYynFVW2CKHi2nx0vDbfMgE+cPvkoK4OTDscSG+/pDIjq0I=; 7:WqAEnM7bf4L4+ouU+rPaZ6/0tPwWTbMkRcrny6r7xv7EbRrgErDWHCfFJIBm+hb0L6/6MrQFrwKlwghieL0e41ht7Rw91nTd/BniSas0Ch6EkpvdQwsCwUoIKbzC/NUaW2WmbxKNjAKEoBwDVxwHOrytFHWecJo92U2MFPR4v5pfXwNfoJMghr/yoUP39JdwhE7QcPe15trhQamUKurw+B9gcrIYhl5NhSxmNpZ4oyo5j5ss720csvBpJit6ujmg SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Aug 2016 11:36:03.8881 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0701MB2529 Subject: [FFmpeg-devel] [PATCH v2 01/18] avformat/movenc: added ability to use original stream ids as track ids 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?= , Carl Eugen Hoyos , OZOPlayer Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 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 | 61 ++++++++++++++++++++++++++++++++++++++++++++++------ libavformat/movenc.h | 2 ++ 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 1f55333..525d103 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,52 @@ static void build_chunks(MOVTrack *trk) } } +/** + * Assign track ids. If option "use_stream_ids_as_track_ids" is set, + * the stream ids are used as track ids. + * + * This assumes mov->tracks and s->streams are in the same order and + * there are no gaps in either of them (so mov->tracks[n] refers to + * s->streams[n]). + * + * As an exception, there can be more entries in + * s->streams than in mov->tracks, in which case new track ids are + * generated (starting after the largest found stream id). + */ +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 +3490,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 +3577,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 +3600,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 +5822,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)