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 ESMTPS id E7D5A4BF0C for ; Fri, 21 Feb 2025 11:44:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3582E68C7C8; Fri, 21 Feb 2025 13:44:22 +0200 (EET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2018.outbound.protection.outlook.com [40.92.91.18]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8493C68C72C for ; Fri, 21 Feb 2025 13:44:15 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cRevK4zWOStWDuots06gpHBD3mtqx2JchaBxiPp4WbxD7UWMmN1ttVG4FrjH7ZjD0MlXxIRci6LDQtU7vSEjeOC8zGZIDVb9m4ByI7F8mZGb5MSL3t+yfog9XIuOkmb1Vt+Ij9O81UTtKXM4GusBxD/FAa5pDh6rw7/rhH8YdbOkmjBl1kP3LBhDf1eddVwPxU1R+Jh5DSSJaFNkuStGYpxg5o3Cvl+plWuFm58f6avrUpQ58bRPb/L5pWBJQZa1uALpmVUewNFuouOVC4/Cx8s+sl/cIV3jzm+NYc+yMAYbTcwMcGCCBAIgNadIPUqZ82TGAqd3xyMVgEsCU/Wprg== 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=Go0Zz332ubi+cFhJMqml/nF5mc7s06jilHf0VnpXs6Q=; b=MjO/GA/k9RwICHlnnZx9NhhM9nFQETJWriiUvUZ8fB43Gjtsu7Dg6vPEMno7vnrV5VKJJP+L+PZO6AkKl54Zhwza+3GFzh8PfMCtVSiFtityVI7eR+9DyoJ1akCbpRlMkRFAUCRUNUM0G1lbp2KxX99gJTmUVg/93nBMgqz710YQyRjG9HEkdDhrNPm9OiYDoAlliWRKsuK8hpFfmUZWQMyUUqWKYe4XysXe0ZVptvM2Z/+K/TlrJHtM+WYKPmTVqAv2fKLR37ajIF/F2nyUb9Gk46ahIszylg6fqb3/OrJNFZLrWlJGbAL/q2HHZU675iKsU1QEnTa26bjIztkSLg== 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=Go0Zz332ubi+cFhJMqml/nF5mc7s06jilHf0VnpXs6Q=; b=ELXhfmyJQwu2o24rqFayhbJJF0urkoTFU6SdBHuYyyzly8hRZgh+cs/vDP2h8F1PF826hnhZIMzUzn7AZFj0Uyr37SY7WYyv4PMHnUVY6tr6hTz/+IMxlwrK6HlOHcirLAbg3TpPy7VPoVeNd3i8I/D2BAJOmSOPohCT6fc2Gm4pN7bRnEXaN5171mjrBiZ45e33t5ZJrIU8EmBn+xOxM388vq8uwuFq1tmcGtQDGtRyCbxWZFzrk/8FlEjopqRkO9OWDtGxDZY/hJLXF/6xDHScx3bCgbGQB2DKV83t33sCvrjpa7xs/dzH0mYh9iHnaQTqaF8eQOc7mwARS5QpgA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0309.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:328::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8466.17; Fri, 21 Feb 2025 11:44:14 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%5]) with mapi id 15.20.8466.013; Fri, 21 Feb 2025 11:44:14 +0000 Message-ID: Date: Fri, 21 Feb 2025 12:44:12 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250220172454.2952-1-jamrial@gmail.com> <20250220172454.2952-3-jamrial@gmail.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20250220172454.2952-3-jamrial@gmail.com> X-ClientProxiedBy: ZR2P278CA0004.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:50::8) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0309:EE_ X-MS-Office365-Filtering-Correlation-Id: 46f2dab8-066f-4f37-8bdd-08dd526d1075 X-Microsoft-Antispam: BCL:0; ARA:14566002|8060799006|6090799003|5072599009|19110799003|15080799006|7092599003|461199028|3412199025|440099028|41001999003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Qm4wTGFURGdzdDZ2Wkg5NEFxcnhUTTYwOWpsVzRFdzg3OVZKZWlYZnIxN25Q?= =?utf-8?B?RkpNQWhkVjdtREN1SG8wd2lwUEFWMDBtNWlzSjVDVkZRa09qa0NuNmlrVFFr?= =?utf-8?B?OXAybXZSb3BVOVBJbGJhRW5pV3dDWGsreWZzM2k5clBKdnZ5UStGZ2Noc2Rt?= =?utf-8?B?QzVYVHNTVklpdE9sQlZ5VVorK1hVNDdjOEY3UXp0bnR2cTFUNDZvUk52ZXpr?= =?utf-8?B?YnMrQzdickFieE5WMktWL2JlZjVMaG5uYmFhT3IxWFY5N2hSWmI3ekRqZUY2?= =?utf-8?B?bnFmTHhGMTFjQWl4Vk1TUUxvVFZPdVpPQnF1RUdVa0F4MWhMN09pS2N4S25S?= =?utf-8?B?RmM1SkpCK1BoQ0xONXM0aVhyUE5nZjk2eFBJSzlHK0RLMWlHeHpxdW91bTZU?= =?utf-8?B?MlJmbnFXRzZIK1NLZHY2NTQzTDFnMnZWckpnUlRhOVUwUUcrUE1zb251NTdp?= =?utf-8?B?L2hEMW5RY0ZiYjZuZkExcW5namI1bzhCUkFnVE5zaGNqaWlNOUFFRk5JMHNr?= =?utf-8?B?WDVRb0pYcTh4WEcvYXNzTzJkZGFubjdTZENzenBBNnhrU2JneXltSXEvU1J2?= =?utf-8?B?cjI1ak5sb3U2SEVEUjcvTktZaUtjTW0wV3EzMVowRGZnNzdWbGUweE5lNzFC?= =?utf-8?B?NjluNkxDNy9BU3hiOWZzRERobEdJWHVyQTJvWEdWZWZ4MHVKSG1zZXUrKytN?= =?utf-8?B?Sk1UUGFmSGhWRVFPMU5yS1d4RnduNmQvU2NJT1ZHWDJyU2FYb09oTlpZRlow?= =?utf-8?B?a1FZSFdVVHBwNWJPanBLUUh1TlR6SkhSK2hBZ20rbFo0cGp3cS9PeDhoQ1lJ?= =?utf-8?B?eUYzeG4xOFpBYk0vbFg5YmdSdUxyTW8yanNVcWhJMnpBaW5DTlZCQVBTVXpu?= =?utf-8?B?ZXBNL0lvNFFpaWxQa2Q3MktPdE1iMnlteGR4b0RUMUh1TWFoUHJuMXQ5bjA2?= =?utf-8?B?OTJiTndTQ2lIQUFYcUdUOW8rajFyTWdrNm1aZEZPcy9sa3ZZRjF6SDhBUWJ3?= =?utf-8?B?ZDVENUtkV29FbGdTRG11TnliK0p6SnkzYkhnRm1kZm1WYjlFck9CYVpRekVC?= =?utf-8?B?K2Y2RzIzcldnNjJpeUlnWFBRWkhYWkZGYzJud3ZqbCszRHM1NGFnTSs4UnZp?= =?utf-8?B?R3RpRXppamJLYURPWTJQWlhXbnIweXFKWlJlanBXNGIyZjhYN0hkNU9odjVj?= =?utf-8?B?a3F3NFVzekRxYVVvdWJZUHljN24ya0MwQ0NXVGI5TG5MRC93NVVPWVJRUUk2?= =?utf-8?B?Skt5ZzlySUJOeWZTanRFREhwclF4aEdvNXFYTi9jK2RUc1ExTTAyQXpsYmls?= =?utf-8?B?L2J6a2tCNGRic2I2L3ZicDNMd3ppZXZlNFBHMnpWSFExQnBYdE9KUmNkUmFD?= =?utf-8?B?djFhZFFnSUxzUkhiWEFxTGJ0dVdPZFZ6YjU2N05DTFdicG5JVEpSdGZUa0I4?= =?utf-8?B?L01SWmJlMWhUQkorWFAxL2ZYYWhsdGVmY2R1VTZML1dpejQrT2ptR3pteXB1?= =?utf-8?B?MzNlWk15UnBNbHBOYkVpRDBReWI1TDd0M3g5UnNoUzJpZHZsZmYwVjV3WXBs?= =?utf-8?B?T0pndz09?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y1I5NlFpekhJQm5xOU9uMTBFTUIwQk12UXFVN2RCMjVTcHpTM0k1Y0hSTE50?= =?utf-8?B?cUh6TU1qbkxrd21qU3FnWno1bGVpaVA2dVZXdjdRcm5tKzhiUDNJYUpaVEVE?= =?utf-8?B?ZDdqSHJtTUExOWRKbzFkaEszcTRlU2tUU0ZkVG41THdNbldVZHVBOUpzU1lX?= =?utf-8?B?WDUvVk5iL2U3MTVoNmRQaTl2MTVOMGJMS3IvOVFPUTdCUDFTS255bEdKeDF6?= =?utf-8?B?Y1RURDNMZWxqWFNCYW1OQjlqbk5FL2V4cEQ0cXpmcGpwTUQ4ZVdkNCtYNWhm?= =?utf-8?B?MnlZdDZOcXpoYU5ZcnY5MFVOSnRqVGYxZUxpU28xVHZjZTBTdjlwN0dFVFB0?= =?utf-8?B?THZqZC9BQUdMK24rb2xJZnphamg5NWdKUnQ5eHZyVHlMMVMzZm1UNGszNVFs?= =?utf-8?B?ZHRiS1B5b3k1U3lTeCttOFZQWVdKZlVCVFNSWmw0QVkzWGVxTGt4WDRhdjJ1?= =?utf-8?B?Sk5ZTDNNOC8zTTVBY0hkNzJDemYzMGZKbUZ3Zm8vby91M20vQXhlK2VFWlUv?= =?utf-8?B?TnllZlhvVVB3RzRGWUw0MC9JbEJKU3lQZXJKYWx3T055WXovMHlmZnNDNlJE?= =?utf-8?B?S2dXU3VqMHIzK1B0MU9zcitUbStDTkdONHJpRjJwRlBOYzdBSnlYY1d0a2NG?= =?utf-8?B?SXA3bXI5aHk2b1c4SFBtNVYxZ1JhNmZMVy90TGJZbXBmN2N0MEpjTkdrMzZ4?= =?utf-8?B?dlI4U1RZU0wvcXhMWXhhVWd3Q1ZlVVJhUkx0SW1kZ0FBVDBUUlZQMkNjQ25C?= =?utf-8?B?YktTMlFWWDJKaXBVcGhiQW9WenJuOUhHci9kWExjVU8wNGFMakRaYnBHMVhz?= =?utf-8?B?bVMwL0FYT1gzQTRBdkJ6SXJVaTlQK2dvWG9UTzEzUTV2aHRTRTJiMVZmNXo3?= =?utf-8?B?Vktaa3o2VjZZTTFGUFRKVXJEdXZCU0ltSzV1L2RMTU16MUNzd0dUeEo1R09m?= =?utf-8?B?Wnl6bVUxMDEySEhubHp4RitXamVJOXJEd2JZSE9nNXdhRENnRXhNaWE5Zms3?= =?utf-8?B?cFRiR3lBRGU0MmNTVkpQTFBKMkpzdldCWDFTa2V6c0lNZVBOQVZGdGZHc05Y?= =?utf-8?B?STVEK0ZSemVMZkNxV2EwNk5RbjNEZEcvY3poWllHVGRmWWZUZU5yb29meC9U?= =?utf-8?B?MnFsRERydGpjbDJ4R2M4eDN2dEF1UFR4enVMYnpoUGRIZVN6R2tJcDIyMDZI?= =?utf-8?B?bENNUURYUVh0RTVoSWtuay9SdUQyYkFwSHp2eG9CNjh6dDFTZUpRbUJVclRE?= =?utf-8?B?bnlnQkRkbjJTYkoyWElMaE9mejYrblQvRmhEdkZPRGxIbk9tL2dSeXRKL2Uz?= =?utf-8?B?KzdCWmtpUW11WEZEN29yeEhPbkpNOU5vemV6andnbDZjSDRSaGlHSEsyOFpX?= =?utf-8?B?R25FVzRrRGV3UDB4NWtWeFUwdXdHeTV0aUJSbDVIRW4ydVcvdVV5cjVSVXZs?= =?utf-8?B?Qk1iTE9ibDZwM21KWExnbE5XL2Y2V0xOblkvajIxSy9KZjZKcGZ1QXdXNlBk?= =?utf-8?B?SGwwMW9SdjhWL0x5bU1iL1dWZnlqNUdPa3BSaGsxVG1NSjJ3ZktyaXpJK0xs?= =?utf-8?B?V3IzSjZpdHBJbXdRQlJqZStHaWZ3b1BqSzlncUVQaUd0alBYRWs5b1VJL1FU?= =?utf-8?B?SGR0T2JzbHlLK2NlV0E1MmRsUis5YnZlQXpObnFBQ2syV0VMTXA2SGplSVZi?= =?utf-8?B?aWR3ZlA0YUs2b2JTT3FXZ3NybnpiS0NQSVlxQnk1ZGN2NE1SKzRXQk93PT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 46f2dab8-066f-4f37-8bdd-08dd526d1075 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Feb 2025 11:44:14.0957 (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: AM8P250MB0309 Subject: Re: [FFmpeg-devel] [PATCH 03/11] avutil/frame: add functions to check and ensure a side data entry is writable 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: James Almer: > Signed-off-by: James Almer > --- > libavutil/frame.h | 19 +++++++++++++++++++ > libavutil/side_data.c | 25 +++++++++++++++++++++++++ > 2 files changed, 44 insertions(+) > > diff --git a/libavutil/frame.h b/libavutil/frame.h > index 49260ae2dd..a707b35087 100644 > --- a/libavutil/frame.h > +++ b/libavutil/frame.h > @@ -1211,6 +1211,25 @@ void av_frame_side_data_remove(AVFrameSideData ***sd, int *nb_sd, > void av_frame_side_data_remove_by_props(AVFrameSideData ***sd, int *nb_sd, > int props); > > +/** > + * Check whether the data described by a given AVFrameSideData can be > + * written to. > + * > + * @return 1 if the caller may write to the data, 0 otherwise. > + */ > +int av_frame_side_data_is_writable(const AVFrameSideData *sd); > + > +/** > + * Create a writable reference for the data described by a given > + * AVFrameSideData, avoiding data copy if possible. > + * > + * @param sd Side data whose data should be made writable. > + * > + * @return 0 on success, a negative AVERROR on failure. On failure, the > + * side data is unchanged. > + */ > +int av_frame_side_data_make_writable(AVFrameSideData *sd); I don't see the point of either of them: The former is just a wrapper around av_buffer_is_writable() and the latter is basically the same as av_buffer_make_writable() (and could actually use it). If this is designed with using something else but flat buffers in the future in mind, then av_frame_side_data_make_writable() is misdesigned, because making a non-flat object writable is ambiguous: It is not clear whether making something writable is meant in a shallow or a deep sense which may become an issue if future side-data contains references of its own. > + > /** > * @} > */ > diff --git a/libavutil/side_data.c b/libavutil/side_data.c > index 8c57fd838a..beb8ea3212 100644 > --- a/libavutil/side_data.c > +++ b/libavutil/side_data.c > @@ -315,3 +315,28 @@ const AVFrameSideData *av_frame_side_data_get_c(const AVFrameSideData * const *s > } > return NULL; > } > + > +int av_frame_side_data_is_writable(const AVFrameSideData *sd) > +{ > + return !!av_buffer_is_writable(sd->buf); av_buffer_is_writable() is documented to only return 0 or 1, so the binarization is unnecessary. > +} > + > +int av_frame_side_data_make_writable(AVFrameSideData *sd) > +{ > + AVBufferRef *buf = NULL; > + > + if (av_buffer_is_writable(sd->buf)) > + return 0; > + > + buf = av_buffer_alloc(sd->size); > + if (!buf) > + return AVERROR(ENOMEM); > + > + if (sd->size) > + memcpy(buf->data, sd->data, sd->size); > + av_buffer_unref(&sd->buf); > + sd->buf = buf; > + sd->data = buf->data; > + > + return 0; > +} _______________________________________________ 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".