From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id D4E3C42222 for ; Thu, 16 Dec 2021 23:08:20 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8903D68AF42; Fri, 17 Dec 2021 01:08:17 +0200 (EET) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-oln040092071102.outbound.protection.outlook.com [40.92.71.102]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2C7BF68A607 for ; Fri, 17 Dec 2021 01:08:11 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PtHOvDTNJ+wcgHGLZXR2hFlBmX9Hj4Gni1WEJ83iwpCqPON5AadQ5RltXsJBBlhLD8gT7mhLikFU++SC3WaMCcmCGkrV/twFvfi9pIDOU17/fJFvjknLQPNZs9C8ZrB/CgMNsSaXpbCEotBUJXSWSAPXhSNorc20Q4CG+pf0rJ/jDucLtL1le8hbu6V4W9NBC/HwJ9YakOvDacJwdvXEsxii62X8/jhdUTPuyd5kmpF0fLesEJwJBMtR6z7Xw6pWBen66bGqpcv+PAGBGizXy0qJEXxwsaQB1vEiEdfNsKAt+uA0cVL21e7uCrC5siPXT71oP25eacgux2K/iMgBOg== 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=ZGSzrocp4Mh0aOLlecMQRPrWzGMUBoGDcD1ppQ0vnrI=; b=YIGZuaVmiGOTpxmEELAW7Odl3g/hF55VvSUqBiNpuPW2YB2VCyKQ1CLt+QxBSWSFvEStc/1DwHhazzOcZ1YKSemsTuNDKvAp+tOAGApn0MbusFvUfyqyKURoAfbg/9VINUA1w4GHl94NxDWpEKzDPtF2W1WTacPWc4FnALt0qme1hC0pHrjB7cIe63kaTeq/arCddfoSIaNi7pseMjY6dyxH0fj9aOLKmzKJNgQL3MHYTdXymDBIuj4q+H6NpIeolt1EtqMGPxLXzfFZyGHRWPcJlCb161OsP41ojp8oEBR1eW3NoJgvxzsd4/cptLS5iYj0KiczlRSyb1FKi7gEWg== 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=ZGSzrocp4Mh0aOLlecMQRPrWzGMUBoGDcD1ppQ0vnrI=; b=c8XaDoqzr3HE8KSxjL0XYeRC8x6JPxRDlNjfQzpuGktLbynqsB61qUpZAvn680i1eTsvPNLL31pFMraFPzQujBvuetlFH9Oc4lTZ68qIW46uPBcgSVF1OpBjHrBQDPTya+VIH20mnglOWn5r1PIVNXMrmYLxNdfyf7A7VDvRINPmCB+R+dyribuEj6CCCmE5yFrJXIVtFVkHueFQeLiRyKK7+6Lcw7RNkvxf4DUal01h8Jvd0sWuj3P5PjiVdrsUKW/U+HuUYNvK41JMmDSWkJ3Z9a0M/Z/m+ilHgnZsBkCn++JNZv3zv2v1OuWZIzmvuE2iZXB5pMTbfnPVHWPh9A== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4375.eurprd03.prod.outlook.com (2603:10a6:20b:5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4778.18; Thu, 16 Dec 2021 23:08:08 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%6]) with mapi id 15.20.4801.015; Thu, 16 Dec 2021 23:08:08 +0000 Message-ID: Date: Fri, 17 Dec 2021 00:08:07 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20211213152042.5900-1-anton@khirnov.net> <20211213152042.5900-16-anton@khirnov.net> From: Andreas Rheinhardt In-Reply-To: <20211213152042.5900-16-anton@khirnov.net> X-TMN: [IfDdyQATIAHZsJBxb5qylvHCZS5J3DLP] X-ClientProxiedBy: AM6PR05CA0022.eurprd05.prod.outlook.com (2603:10a6:20b:2e::35) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <9df7b19e-7389-8c2b-fc1d-ae3aef9c4158@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f2dc4d73-2f08-425f-3028-08d9c0e8eca0 X-MS-TrafficTypeDiagnostic: AM6PR03MB4375:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 4xhebOzifPY314v4M7NX5283FOUMlezHr/QCJHTDfGvj+Gxm5xLPB17iY14WInGU6SVF84i6vzmXStHwWSj/Pjq1R0P8zwU2oX0aIq4jFH4jA4Ln3uKGAsjIW+9WhiTX0hHHYKL3trsNGOyiMrouuCoqQ72abdb4IYl9T7hD4HMFgUYY0auFifKm/CX2XygYcaOQRaHWIX0/KudWXsb1ltgTEr45ey5Ir1Zg1Fzrfz+qoQASmpXhtOPg4nGOmG4LLSiBWHBMEtmE5uui2sRSSu6R24T2RsGQJ34OhMyuncJ7ABTYB3FJjnp1ABPZ2XGc/XsUUHWWluybDIGm9FN2So+OC5PLWg3gLEXLtjXdNlirui9W6C+BC2QZ6rCTtsAA6w/zsmWAx1hNI7EqvlM2h9cfbw+KPbBiFjwIuq5Y3bXCzRVIvcVpMNuEJ4KVF32FwPsMUfj9/7XbjPZGD5RwTuQvQDeofml7sL6tMdcEp9uIDc/7FAKpuzSr4NvGsCTeRkWZxrEbQ2yNjMgz7ADsPM63Ejvpain4tZLmJRklRVOlxphP10tKyYaVgCjU87b9zMAFw95zr6PEMQOloVh3jA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?dU9GOTd6V09Ua2pYenVjckVHUjZSZGZqREJvei84a2N0Rm9VWEt5TDhXNGll?= =?utf-8?B?YVZnWERlbG00aU96aFQrMEVIYlJzSHptdVN3Y3RES0hrejV4Z2pMaHV6c2hp?= =?utf-8?B?MHdQWHpyQkJ2ZTBXTm1SNFB1V2gzSDVPY1ZIRnNuN1Q0TjU2S2p2U1lBcmM3?= =?utf-8?B?Z3FpOHA5QzJFbXl2dUgyWTk3MVZKcEN4SXpOVDBHVFlwNlYweXFWeFZnZnZr?= =?utf-8?B?RWZKVjEvU1NjOG5QTGl2elhlTmxLYmM2RzNHRWtQcEdsb0s3R1ZJeTNIeW5p?= =?utf-8?B?VWlUWU91VDc3UTZuVVN3Lys3bDhwNTMzV3FheTB1ckNGc0xQNU5JTVUrSDJn?= =?utf-8?B?VjMwalJIcmttNjlwUllpV2pHME43WWNobUlnMHc0WUVLV3ZJeUtSdHBncUFa?= =?utf-8?B?RllubjJOV0IxNmQwSEtkcUFVd2N3UTV5cld6WHlxbHB2U29MV1BOZ1ZnRThX?= =?utf-8?B?a3RqUFUrMDNDV01nejQrM0Y5MlNWMXZqUjZvQXFjTmlTZWl0TGs0NlcvY0RF?= =?utf-8?B?eTk5T2FBajFwK3pVSHRaUDhCOG9tSjd2aU11VkNwWk9sRFc2RGV4Uzd0RW5h?= =?utf-8?B?VEZvaWFjQXhuTjFxNnFQQkphTlJUU01MU3JZUlNMWldlMHRrV0lPQytSNEIx?= =?utf-8?B?aTdTc3NjRzU0blROUS9OeHhzOVNKQkl2eUlXUjkzWDRzRTIweGc2aUVFdStw?= =?utf-8?B?T3NrZnpOR1dxeEtIL0p1ZEgwZDBtTi8rV1VYWkp3WDd4RHYyK2VSUnZsanBR?= =?utf-8?B?R0lTVnFZRVBaOXYyZ2I0RkJ5TnQ2eVhDTmFlK05Scjcra2dYeUhYZVdUSkhk?= =?utf-8?B?ZzZrdEllbFhOZkhBQ1RzaVltOVJQcHFoMDRyNlJCVVIwbXJra3MyVFE4TkRv?= =?utf-8?B?Q21icU9TVTFMNmtzdDFKSUVYUldNS1BJQXQvTDc1OXFoNDhPNHJiTmRrOHFq?= =?utf-8?B?MXltQjRlSERDcnMzdi9SdnQ4VlpXOThnTlRrSjJ6QkpoenRHSmwzZGpQYjFV?= =?utf-8?B?SUpIdGg4Y1JESENRTDdkZ01qbTdWc2tlakRnZVRBWVRQRFpTb2NGSzRhTlEx?= =?utf-8?B?eS84d0xxSUI5QVVmbVp4Q1hkaTIrQWNvek5oZGdVMFdKU3RxSDNJNno5Y3p0?= =?utf-8?B?VDg4Vy9UOXM3aHBLL1MrWWhaTEIrdC9IaERaUW4wSGFLSDVUWjFTNzBvblYz?= =?utf-8?B?TVlNTDlJaFQ5QXpIdmJEV3ArZm9LL3FtVUhTK3RseGYzK2EvSGkxL2xoL3k3?= =?utf-8?B?dU80L25pTytycTdJeS80dlY3ZlF1dnNYRGpTYWF5LzI1SjRWUT09?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2dc4d73-2f08-425f-3028-08d9c0e8eca0 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Dec 2021 23:08:08.6689 (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: AM6PR03MB4375 Subject: Re: [FFmpeg-devel] [PATCH 16/24] ffmpeg: access output file chapters through a wrapper 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Anton Khirnov: > Avoid accessing the muxer context directly, as this will become > forbidden in future commits. > --- > fftools/ffmpeg.c | 15 +++++++++------ > fftools/ffmpeg.h | 2 ++ > fftools/ffmpeg_mux.c | 7 +++++++ > 3 files changed, 18 insertions(+), 6 deletions(-) > > diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c > index 902f190191..d69e4119ef 100644 > --- a/fftools/ffmpeg.c > +++ b/fftools/ffmpeg.c > @@ -2909,12 +2909,15 @@ static void parse_forced_key_frames(char *kf, OutputStream *ost, > *next++ = 0; > > if (!memcmp(p, "chapters", 8)) { > - > - AVFormatContext *avf = output_files[ost->file_index]->ctx; > + OutputFile *of = output_files[ost->file_index]; > + AVChapter * const *ch; > + unsigned int nb_ch; > int j; > > - if (avf->nb_chapters > INT_MAX - size || > - !(pts = av_realloc_f(pts, size += avf->nb_chapters - 1, > + ch = of_get_chapters(of, &nb_ch); > + > + if (nb_ch > INT_MAX - size || > + !(pts = av_realloc_f(pts, size += nb_ch - 1, > sizeof(*pts)))) { > av_log(NULL, AV_LOG_FATAL, > "Could not allocate forced key frames array.\n"); > @@ -2923,8 +2926,8 @@ static void parse_forced_key_frames(char *kf, OutputStream *ost, > t = p[8] ? parse_time_or_die("force_key_frames", p + 8, 1) : 0; > t = av_rescale_q(t, AV_TIME_BASE_Q, avctx->time_base); > > - for (j = 0; j < avf->nb_chapters; j++) { > - AVChapter *c = avf->chapters[j]; > + for (j = 0; j < nb_ch; j++) { > + const AVChapter *c = ch[j]; > av_assert1(index < size); > pts[index++] = av_rescale_q(c->start, c->time_base, > avctx->time_base) + t; > diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h > index 78c2295c8e..8119282aed 100644 > --- a/fftools/ffmpeg.h > +++ b/fftools/ffmpeg.h > @@ -697,5 +697,7 @@ void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, > int unqueue); > int of_finished(OutputFile *of); > int64_t of_bytes_written(OutputFile *of); > +AVChapter * const * > +of_get_chapters(OutputFile *of, unsigned int *nb_chapters); > > #endif /* FFTOOLS_FFMPEG_H */ > diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c > index 3ee0fc0667..6c9f10db9c 100644 > --- a/fftools/ffmpeg_mux.c > +++ b/fftools/ffmpeg_mux.c > @@ -390,3 +390,10 @@ int64_t of_bytes_written(OutputFile *of) > return of->mux->final_filesize ? of->mux->final_filesize : > pb ? pb->bytes_written : -1; > } > + > +AVChapter * const * > +of_get_chapters(OutputFile *of, unsigned int *nb_chapters) > +{ > + *nb_chapters = of->ctx->nb_chapters; > + return of->ctx->chapters; > +} > I don't see any benefit of factoring muxing out of OutputFile at all; to the contrary, it adds another layer of indirection, of allocations for your opaque structs, of prohibitions and of unnatural getters like this one here. If your patchset were already applied and someone posted the reverse of patch #15, I'd LGTM it, because it makes checking for the bitexact flag local to the place where it is used and thereby avoids storing these variables in a context for only one usage. I also think it is more natural to store each OutputStream's queue in the OutputStream instead of adding a new array to your struct Muxer. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".