From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 2CBA84BC61 for <ffmpegdev@gitmailbox.com>; Mon, 28 Apr 2025 23:24:31 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 24FAA68B172; Tue, 29 Apr 2025 02:24:25 +0300 (EEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10olkn2089.outbound.protection.outlook.com [40.92.42.89]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 11784687B50 for <ffmpeg-devel@ffmpeg.org>; Tue, 29 Apr 2025 02:24:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oxVvHz0QElKoHucq3ijSzxTjTj3cAITIwBPmmlr41q8Y8SoS8/dsrQjtwQOxpgFGf/Nli++h/H5voYpaF7FP/3S69sVyE3WZxUa7UBS71wU21XTQvI86ZZsCxrRh9hDlYYNrAr4r83AsWG3nAYWNLy53RKfHc13WukJP9+sskqKcMHs00E2cp4QzUfsh678pUCn71hUU6hzfW6fwzM9l0+bXDWSZSK+iTyI/Ka3YIbJuz9FPYaUztNHj/3+ZymmPQe498THcFbUmzY/poZf90gjw33vpz/eWcoKozD+/pAIkjsg3DEL9QhaE0zl0iBKXM3KmiQuUv+Duvxsgi6d3MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=lKIc0zBG9sB9vWOVz+QikMq4Zrf80PeHDnFYMsjeVY0=; b=kPNaJok1D97yjmiblqACM4dXKsSM+CRJqN+62xVFltskuQKI2vcBJNsmzkMhnsSvgoyK/USM7RE30svzWWL9GDrxpDyBFL/Mngo8kjPX7ME6zOWw6DWryLWfAdcAoQcnM9Yz+7PlEJBU5+GMy7FBjtsp5+1o0YnSwCoRza7GjiGnTz8BEfhp81Rz5L3IRVNrvaG1Gwpp72IZ6rf/8kNq45BzpsZgryzWpUCUgSxH7kIgKy8qTKH184VdiDAH3U3BICUwMfBEuCoEJjEgWMJpYxRRb8Ko3N12jTBbD7QUKxFbo3dz5zYFB6jaArTiSfqNNX8mOpwIZeZtk0F0d19RUg== 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=lKIc0zBG9sB9vWOVz+QikMq4Zrf80PeHDnFYMsjeVY0=; b=sJyTjeJBL0VAC16NHjhdZDMTaXwtXVMIG4tlCT4vceNfmpI811iAUJ4BCY7PctOpfb86cxsJHjfAFDQ+Re1PznSHAN3GYH+radIQCD0Iaol9Qi0Z5W3p04D0EY+wkser+F9YqzEFcszI2TrRV0kgwrfMUXvwFkCG5GVGLSERBEXGTRqgZCHhMt9Ja1FAxNqi8DjRIXYFVyZTWEpAmurDXQvG07EtAPjH/HMvMH+6dFUvzOkZODqWAeTPzskXm+rgZk7HPWFKpI+UHWipRlMIoDLdFSB+Ow6TmVmZz4/XOBJxe3VNyznmJeX+u1FB+gfEZfSjAKxlnM56OzU5yYk2Kw== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by EA2P223MB1162.NAMP223.PROD.OUTLOOK.COM (2603:10b6:303:251::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8678.31; Mon, 28 Apr 2025 23:24:14 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::bf09:8e9:b07f:98a7]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::bf09:8e9:b07f:98a7%4]) with mapi id 15.20.8678.028; Mon, 28 Apr 2025 23:24:14 +0000 From: "softworkz ." <softworkz-at-hotmail.com@ffmpeg.org> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Thread-Topic: [FFmpeg-devel] [RFC] Shaping the AVTextFormat API Surface Thread-Index: AduzMDhGXdsgXHAcTguhmPiAzJ4vgQCFz10AACbdH6AAX4aHgAALTBgQAD+ZO4AAAOjBQA== Date: Mon, 28 Apr 2025 23:24:14 +0000 Message-ID: <DM8P223MB036544510099A04264475BE1BA812@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> References: <DM8P223MB036504CFC0521633C2ADCCE3BABB2@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <12650153.O9o76ZdvQC@basile.remlab.net> <DM8P223MB03656267310C697B2094F675BA842@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <aA4J/XYOzKKMouhn@mariano> <DM8P223MB036535B434099A2C30D82559BA862@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM> <aBAAm5UlUYl72dqB@mariano> In-Reply-To: <aBAAm5UlUYl72dqB@mariano> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM8P223MB0365:EE_|EA2P223MB1162:EE_ x-ms-office365-filtering-correlation-id: b466b649-e2f7-4771-936a-08dd86abc9e8 x-ms-exchange-slblob-mailprops: Cq7lScuPrnpFX5gNBgVui9nZ6J+Gucr/43cEvj3tnNI/DTou+rYkNNewwfwgpwRzo8+QvH8W3XDq+KFEV1jWKC+3y9DsUtBA8hTp4NN8qnR+/7P/YIYCBOmbZXH1RKBj7azpWX8K7SUq37EkolUKXUv0QHCb0WNGicAxYPCRoNnow56H3n8vv4zl42JqaUfjcrhSI9aJtzgIBo/BJhzMO90ptx/BPZV7CS0lbuh0iLhT6F8Oe1Lm5BA6xRYZPUbTI/+p9PolrDu/oGyy9sdrktPV5Lzmmi8ajDgw/F2I778QbwLLoxhEE9t48I02CW5rkacMGRaNEE2lbwpcCD8T0TRyNXo44K9PHjnyG7akL6FrZi+yZseiOM4cNLzhbC5wneFkqxfTd/VzKzGg7ssU04amx0f5lFPwNdOSrHu/0xIekzNvxvO/6wowJFyVmVSPbo5MxNiJxT2gPt+MZJrpw593iYhT6YHwU20L/qd9wscSXpYPa/k93P10KDhatV6Ykb1eZNB6r3r+nmwqFvyuLyl8+iIwX1F6wuNkGw/DzaaUCfIUCA1n4JRDHa6ogwdJHdrz6en6NTxni+A9ABhzufGzKf9daLq+VOx/E2L/mLvrTCyrbsuQlqQQ7oxyH5DR7lyQ93WchCJj+Eg/mOZ38qy1/w4RdaIpFXtNYWJnJKncT89nk9CY/R8ped+Gx9WVDZRYL3T1aGRdbwA60gDg+ZwQCvK/3VlwTRkNS51nDJa33f39qbxVx4ZVyek0/54v/YDpgdRJrSQ= x-microsoft-antispam: BCL:0; ARA:14566002|15080799006|19110799003|8062599003|8060799006|461199028|7092599003|102099032|440099028|3412199025|41001999003; x-microsoft-antispam-message-info: =?utf-8?B?UHV4b002Q1paRlZZcmJGK1Bzd3pwOHhCTWdRZ0R0d0NlSTZYSGVQV2NhVENz?= =?utf-8?B?S0ZBTXBDZHRLWmxzL1NHYXE4WDBnM0p5bVJZY3U1ck5iNmFjUmxDMUZMWXBV?= =?utf-8?B?MzMxWnlaR0FTS2NSb3pxVjJiVDEwaTJST3JXUXVnRkRRTEg5bHR5b0Vua3p1?= =?utf-8?B?ang1clhRdFZiYktWTUlDRXJoeTNhMzlZZkozY2x6TWt3SWpsNmpGTEI4L1Jo?= =?utf-8?B?anRjc2t6TEFxWnFXY1JaSWlWajIxMTNwVmZaUEUzdDlMaENLdWsrUTdYMmVv?= =?utf-8?B?WDhRYm0zeDVVOTVESHZQcmw2VkdLQytUeGFqZFp0WnNLM1BVR3g5L01Xdld6?= =?utf-8?B?TlZaRmkrZzBuNHVMbUxZOEVmVnBlSW4xTnRlcFpTYVd1UElzWGVJOUY2T1B2?= =?utf-8?B?VkQ5N2ZpYmNWeW9vTnk4UzJVTVJDUE84dGtXV3Fsd0Jqald3cUhPNjBoMWtq?= =?utf-8?B?Y3pJc2ZhazZLK3RhcTRnV1FYRG1zcXZ0N2lLSkxrcXVlNkd3OTRZUjZlc1NX?= =?utf-8?B?VzBoWXhOV2NXL0lpOUdyb0tKbG9pQ0dXWEtZRmJWUTJZcjNQZTMwclJQRGVz?= =?utf-8?B?SzRsdFhvbWVEUU9lbzNqWGVIc3NlTk5VY0s2R05KVkRxWHgvam5ZQjNzQkJy?= =?utf-8?B?dHBYQ2MwcS81c2ZpNEp6UUtjMDFHektXQ1FVbkpqdW5FbjFHNFhnU1RXTlVu?= =?utf-8?B?SkpHRGVVVXo0dXoxd2lnWk1SdDZJNDJPQVRBMFFTUEIwcXlEcDFaWmRDeU1I?= =?utf-8?B?aFR0WGV5ZVVRclVKRUVDTVZCOFBWRW1HN3BMMCsrRUNVelorSUw2dEs1OWYr?= =?utf-8?B?RWJmb3JWcGw3T0ZkczlLd1ZnbEluUnJtUUxYeHNGSFYrekpaVmRHUEZ5V0pY?= =?utf-8?B?Uk5yV3BZWHlKUjdEc1dUcjRjcitDeHpwS00reXNZSThtMUJWQUUvVWRLZDlt?= =?utf-8?B?OHgxTktTNTNKOTdEMHNDMDZ4QXFKQ3l4QlVHbzJjbUlnVVN4emhhWVhhVHFG?= =?utf-8?B?TlgxeUEwaWxnZjkvTERKY3UwVnlvWDNJa05KVENZcGhaUGxCWnRmUFFpc3NK?= =?utf-8?B?MkdLMTNUaHFBWkFTK084NDlmUWFSQW9XSENPQjMvTXRKa21NTUpCREhpNkpX?= =?utf-8?B?aHlTOFlwWGF2TFNZQXd5RnhRdTN0REpsTXpvQnU5NE5kZk9vY2VZMXJGblI4?= =?utf-8?B?bDY3RjB5S2ZONGhWVnRlQm0wSkJvNXlyaXErNE1UaHRGYm9OUjNpQUxHZ3NS?= =?utf-8?B?Vm84KzZ6VVo1VXRSODRLY2V0SVZFUlRiT0g5YldqcmtZY2s1eEVaQTAwTEdC?= =?utf-8?B?R200QlI3WWlaSFN2dVFjNnZvbFF6TTA5QVowODhTbHdnTDF6NkNkNmNEemtj?= =?utf-8?B?WmRzYjFlTm1OdTNsQ3czL0JRMnZVREJhajRtL1RoOWh3ZXNFcjVUNll5Q3Uv?= =?utf-8?B?WGJHK0ZzU1VtNGRmQWdwWTRGRzROTDFYTnZqVkpOVHBPZVNXb0RNdmcrNTNp?= =?utf-8?B?aWFHN3RvNktCT1A3cjBlWEc3K1VJWmRTQWJBNWYrTHUwYnFPNTNlejJScTZC?= =?utf-8?B?VXdPdz09?= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cy9HL1YwN1hVOFhTZFNKVVRCUkNvdWlWM0ovOVp6ZkZYYmlBM3RUeVE1cVpT?= =?utf-8?B?elJjOHNncmhZOGIzZDJ1NnNpS3RpUXhDRGowN3hJcFdaemVqbm9oc3hQa1Rr?= =?utf-8?B?WXc3R2JTd1RrcXh2QWFxMlR3dktReXkwTjZOb0JKY01RSThXS3VyR3MzdEJ2?= =?utf-8?B?VmlMTkZKTXNoTXd0TlYvMStsVFpybnBBejlEdWFYN1pCbVAxWHpQZWY0SjBj?= =?utf-8?B?ejV2bjZKVXkvb0xJNE5WRStkOFZMZVhnMnZPTTZ1OTdPa2YxRUxsT3FUVmVw?= =?utf-8?B?WDIvVzE0UEh1dGJKWEtIdkxjZWV4T2wxTmJPZHo3c3RNV3ZiNXF3NkM2bTJB?= =?utf-8?B?eXhjdFdEcDd1MmVHZFRsWkhSVUw2K3VLYkRWUWlmU1RWZG5iQ1M1U3MwZzMy?= =?utf-8?B?Q2JrZU5uODlRcHBFRWh3alB2cTJTWGVYcE0vaFFwd0pLNnVkeDNjSGVERHRD?= =?utf-8?B?MVhGNW5TZ05sK2VCUXlwQmtBWDIxa29NZVBRbDdxNXFzT0NobVpqQloyMVhw?= =?utf-8?B?RmVxZlBrN3g1ekgxeEZKREJOWjQySExnbkJQbWJWQ3EzVjJSeEpoSUFxU2Vj?= =?utf-8?B?TDc5Z0s3NG1hNkg2TTNudlVmMkJOSkNKUXh2WHFjdlpTdUFSd0FLSEovYnlD?= =?utf-8?B?dGVZdm9iR1hweGlyUkM4RGM3Vm9neDdqQ0pJaGpubU9mQkJoaXUrRVg1bG9q?= =?utf-8?B?bUNKU3ZTQ2ZKdUxkRGNCUDJRVE5zN2toTWZXQ0lmdjg5QWlOWUd2SlF3MXY2?= =?utf-8?B?RHlrZnZsRTlHZjY5d2RyZlJSUkFnL09Gclljdk9KYlY2Vlh3TTN6bGNpZHl1?= =?utf-8?B?Vk12Qm5uWGs0RTU5SnpSVWtpTSt3QjVWbXlrU0g2T3dtdXYwZzlxLzVVT1ky?= =?utf-8?B?M0lHcU1FZnk5MjQ4Z3I5c01ZT3ZNRlVtUzZjOUNrWjhhbktUZ0gvaTk1Y29l?= =?utf-8?B?K3hLWDAxL1F0NUtTNXVLRXFCM3NhY01MbFpiUUIrVzZFL0tvaGdkUC8xVnlm?= =?utf-8?B?K0Ficm9UOVJ5Zlh0T1FPQzNmVjAxSjJJZFlkejdjNDgxenJNRlRCZzZ0Ulk4?= =?utf-8?B?RytvbzlmMXpwV2xrSEdMT1dtK2VFYVZrME1UbUhBQ1ZHSE00emhFcG40VTgx?= =?utf-8?B?QzkxUTRhTElHQzhrZWw0dEFQWW5VSDh4T2VrK3dVaGVSU0FvMENSNU8wamR6?= =?utf-8?B?RXFZY01KSVY1R0xLRlNUeWx4RU1TZDd5Y2tPbFN4UnJLNlRHUkp5RGVmTkJa?= =?utf-8?B?Y0tta0pGRy9CV1JDRTh2OGZGbDhOTitlejBzYUM1QjNYZm1mcHY1eWlMUDN6?= =?utf-8?B?U1NFb0JxU2U0U2s4R2FuT05RcEhmMmFyeGFQbHo2ZzRhVURRUmRmUTZDa2w1?= =?utf-8?B?VVhSVGR3ekRaWlV1eEZDS0dZeEwvVkZyeVlqNUIrZzl3d3hZNnhJbE5YZTNC?= =?utf-8?B?VHNwUTd3ZHNPbzVHZXhBRHBSMEcxMEtzc1VZdDJ5bnlOcktrcHRMNytUcXpj?= =?utf-8?B?TUhjRkZMYWEzT2kwMVYzU2NJUk53MlM4eERyTDJ5QkhGN2hsb29mbzRPNEpQ?= =?utf-8?B?bXQvcWVSNHl0Ulhld0ttcEFWUitmSFM2UFNDZjdEZnB5Q3NsZERKVDAvQmRE?= =?utf-8?Q?cCimubd2xuVL2gnTKMOqeW30BXJRI7mz+yz7D+pu+Z18=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-7719-20-msonline-outlook-92255.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: b466b649-e2f7-4771-936a-08dd86abc9e8 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Apr 2025 23:24:14.1091 (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: EA2P223MB1162 Subject: Re: [FFmpeg-devel] [RFC] Shaping the AVTextFormat API Surface X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/DM8P223MB036544510099A04264475BE1BA812@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> > -----Original Message----- > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Stefano > Sabatini > Sent: Dienstag, 29. April 2025 00:27 > To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> > Subject: Re: [FFmpeg-devel] [RFC] Shaping the AVTextFormat API Surface > > On date Sunday 2025-04-27 17:54:21 +0000, softworkz . wrote: > > > > > > > -----Original Message----- > > > From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of > > > Stefano Sabatini > > > Sent: Sonntag, 27. April 2025 12:42 > > > To: FFmpeg development discussions and patches <ffmpeg- > > > devel@ffmpeg.org> > > > Subject: Re: [FFmpeg-devel] [RFC] Shaping the AVTextFormat API Surface > > > [..] > > > > Probably it's best when I start by making a suggestion as a starting > > point, then we can refine it from there: > > > > > > 1. AVTextFormatter Implementations > > ================================== > > > > print_section_header(AVTextFormatContext *tctx, const void *data); > > print_section_footer(AVTextFormatContext *tctx); > > print_integer(AVTextFormatContext *tctx, const char * key, int64_t); > > print_string(AVTextFormatContext *tctx, const char *key, const char *value); > > > > > Rules > > > > - assert tctx and key > > > - data and value can be null > > Also: should we return en error in case of invalid nesting level? > This is context dependent so maybe this should be a recoverable error > - my guess is yes although this means complicating usage. This is handled by doing nothing in that case. The functions are all void. Changing that and checking the return values would probably blow-up the printing code in ffprobe.c to 200% or 300% (when for all) or still a large amount when only for section header and footer. "Do nothing" has always been a behavior for that case, but it wasn't implemented consistently. > > > 2. AVTextWriter Implementations > > =============================== > > > > writer_w8(AVTextWriterContext *wctx, int b); > > writer_put_str(AVTextWriterContext *wctx, const char *str); > > > writer_vprintf(AVTextWriterContext *wctx, const char *fmt, va_list vl); > > assuming this is directly used by a programmer, the variadic variant > might also make sense That's one of the big questions, whether this should be public. I'd rather say no - not for consumption. It's rather public in the sense that a lib consumer could create their own implementations and supply it to av_textformat_open(), then use the other textformat apis to write output - but not by calling the implementation functions of AVTextWriter directly. > > > > Rules > > > > - assert wctx > > - str, fmt, vl - ? > > Can the operation fail? Should we return an error code? Our implementation functions return void and so do most of the upstream functions that the writers are calling. Same as above, probably not economic to add checks for all invocations. > > 3. TextFormat API > > ================= > > > > > > avtext_print_section_header(*tctx, const void *data, int section_id) > > avtext_print_section_footer(*tctx) > > > avtext_print_integer(*tctx, const char *key, int64_t val) > > avtext_print_integer_flags(*tctx, const char *key, int64_t val, int flags) > > a single variant might do (as we have a single print_string) Yea, I'll try. > > avtext_print_unit_int(*tctx, const char *key, int value, const char *unit) > > avtext_print_rational(*tctx, const char *key, AVRational q, char sep) > > avtext_print_time(*tctx, const char *key, int64_t ts, const AVRational > *time_base, int is_duration) > > avtext_print_ts(*tctx, const char *key, int64_t ts, int is_duration) > > avtext_print_string(*tctx, const char *key, const char *val, int flags) > > avtext_print_data(*tctx, const char *key, const uint8_t *data, int size) > > avtext_print_data_hash(*tctx, const char *key, const uint8_t *data, int > size) > > > avtext_print_integers(*tctx, const char *key, uint8_t *data, int size, > > const char *format, int columns, int bytes, int > offset_add) > > is this really needed? also this seems a complication as it implies > tabular format That's not my addition. It is used in ffprobe.c for DisplayMatrix. > > Rules > > > > - assert tctx and key > > > - how about uint8_t *data, unit and val in ..print_string? > > what are the current use cases? Can we have empty data/unit/val? Do we > need to support null semantics? I seem to remember we do, let's check. Ok > > > 4. TextWriter API > > ================= > > > > avtextwriter_context_open(AVTextWriterContext **pwctx, const AVTextWriter > *writer) > > avtextwriter_context_close(AVTextWriterContext **pwctx) > > avtextwriter_create_stdout(AVTextWriterContext **pwctx) > > avtextwriter_create_avio(AVTextWriterContext **pwctx, AVIOContext *avio_ctx, > int close_on_uninit) > > avtextwriter_create_file(AVTextWriterContext **pwctx, const char > *output_filename) > > avtextwriter_create_buffer(AVTextWriterContext **pwctx, AVBPrint *buffer) > > > > > > Rules > > > > - **pwctx: leave unchecked > > - writer: return AVERROR(EINVAL) > > - avio_ctx: assert > > > - output_filename: log error and return EINVAL > > or better propagate the failure from open (see libavutil/open_file) Both is happening already. > > - buffer: assert ? > > unless it makes sense to support an empty buffer? I believe it does not. > > > > > 5. General > > ========== > > > > Assertions > > > > > Which assert - av_assert0() ? > > they are once-checks, therefore no performance critical, so yes Alright, thanks. > > > Public/Private > > > > > > Looking at AVTextFormatContext - should we start thinking about > > which members we would (at least logically) consider public and > > which as non-public? > > From what I know there are no public/non-public fields in FF structs, > but we can extend them with private data/class to be handled in > specialization code if needed. I meant that the final result would be using nested structs like it's done in several places meanwhile. But for now, I just meant to do something like adding a comment line saying something like "members below this line are not part of the API. Thanks again, sw _______________________________________________ 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".