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 631E4428B5 for ; Tue, 5 Apr 2022 15:32:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 13B8D68AF13; Tue, 5 Apr 2022 18:32:24 +0300 (EEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2100.outbound.protection.outlook.com [40.92.91.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A7FC0680B8B for ; Tue, 5 Apr 2022 18:32:17 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Eg3lRDdRQU0oPS4BYFuKJqwhYoHGbtXUGv5hgBWPUjzrVZ+iFqvuZ+rXLAh76mjmtfnSD/Tl2sCS+IFTGNjcG/Mh5HqaKYpmmiE/CPXxSVw86f7TNGlUNcxSJr38PqRDLRjRhtPd9CDxf5Iup8wCAO22QIRc1st2WDM1Pu1/fG/MxliPzjhP0aBYq+r+w6HqHmQQovP+uP65o+c+UQQWdqpuu2toVByXcogfKN2dBkIzH8EqmeNrjRARL0BqDOG+rM7Kdshqq1LX0WtUAi1S/G8e5rr/QC/Brot45P/BI/QbnxKpSDp64rC3J6aKMgxxxFMQER2dHBPxO/LFIqKXXA== 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=Uv6dwYwQt/lIlzhHdWb34qXh3AMRNK8m4s9KXKLFbEo=; b=H3HrUkIuoIH+o7lyMhhwkxh/ZP2dxR6mWEZodMbhyjNLANSHU1/CRUJd9kGOHfXwgA8v1WeBwoLG2O3wkOh54C3529xpbdwRDZgc9zHNRBoN41p0Hopk5XQ1Tx6If04VJ/SbmOmSMeFYmfpWWQcFuBq/aMMjYyslemJ2iNxLeQRs9cqYb0vW8Vh3rJQrPX0heRMu/TCMhP5IivD+XvfC/mycu5i+sWjV6C4EjOreTZBLZtZf0/aQNqNXCyxXInMPH8Dgiv0ILQY8ZYq3KqTWToJk19ltdO1vppUSGFzW8ZYDH34SHDYRpoYOz5LlNH24eriIcoD2jXpGNdy56QXxmw== 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=Uv6dwYwQt/lIlzhHdWb34qXh3AMRNK8m4s9KXKLFbEo=; b=IdkiaCrdR2U/9ziWN9yk5MgMJ8Vnlgs2uKJe2tTpBrb6Cx4LV8FvU50KK0vczQ7P6AwgvUUX0W1i3HPxQHqaFMrHCbx5/FtloXpCXWhK4XKqRLmJmG9je8x1n8R13vzbLL1Wnzzm2u15ZJArcr6YWDRsCFOqiNpLJbFAqsjTB0VOr5z0KS2pIgKl908XGpr7UrTb4GXXW7+zz+/i8uDHbR0VSfga60ihPxHJl9Ut8p6F7rySgnsJAqAe0CN3cWfEqIAEOLgkQ0ovvcei0r+HndZZ22PQrNRlRPbdbtOhr7dLSotjhsKNkc4jdSauS+jJbLKv7gsVuPfq+mZmJrqQxQ== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by DU0PR01MB9120.eurprd01.prod.exchangelabs.com (2603:10a6:10:35c::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.21; Tue, 5 Apr 2022 15:32:13 +0000 Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::6553:a424:79bf:6dc3]) by AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::6553:a424:79bf:6dc3%3]) with mapi id 15.20.5123.031; Tue, 5 Apr 2022 15:32:13 +0000 Message-ID: Date: Tue, 5 Apr 2022 17:32:12 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <1648423513-21261-1-git-send-email-lance.lmwang@gmail.com> <1649166427-9667-1-git-send-email-lance.lmwang@gmail.com> From: Andreas Rheinhardt In-Reply-To: <1649166427-9667-1-git-send-email-lance.lmwang@gmail.com> X-TMN: [a1gNvqa8RlFWE7GzwUiThb4nG0tK5FKX] X-ClientProxiedBy: AS8PR04CA0136.eurprd04.prod.outlook.com (2603:10a6:20b:127::21) To AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e442742a-657e-4947-9d5a-08da17197549 X-MS-TrafficTypeDiagnostic: DU0PR01MB9120:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8CUcGQsp0LcBBqsZ5MMVHO5v/7Rrl3IQqZ4AjREmMo96mKl0uFmBLkAF5j5Fqb/nh2JI0rfD4BFeZu40odqqTJQJnESEewFg1NFZai/w28f/ufrkEidd2HUPq4hgm+FI26BWcHjR8hn/q8kgvIFEdJml4bPApgWYP2DMjAFJ+7Nr3ni3V1Ram7IoO8LIT1W6QLSGMvC1NinckztHQsDo1w2mKE1qaN1hCg/Ow1kvWuKTdspmoYrqWqNTx50afYCEyavHfvzbCD+IzBh+DMSGoXpJc4jx3kjZVF0xEPApYrEMysJZmtbg5Gnn69vU6Z5lj6GBNX1T9ZinZjn5D67kLqv4Mdvqq8+eO6ai4nc3dRO+DaASZOqRtz2OQp4gYlg5z5pT9Nt+hPVJrWRhCOskiC3Lis2qSMoHXcOBFjN6lr242C47evNDFr283VFUCs+aUReSg7AjBMeT6AWwez7POjAJ9J33c27Agg0XDkCKJPnl8MunhRgHQmma69RbOqscTFKdAQUFwQLcScRTUjJI0j5QKrkgTRulj2WFVtquRwvs9MH3YUTak00RL53jY8twdxK2Ih4P6dqnd9D4/ijfVw== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Y0ZxVVNTS1AvQjVFcGlFM2xtTlJ1TjU2ZmZNc1lDcUVjWE9VeDQyUy9rKzhR?= =?utf-8?B?UFZ6TjZLTWhsUVZ6WHFmb2hwTUlSM1o5TExaQXp6UEswOFBKZkN2cTg3RVpn?= =?utf-8?B?MXVUVVhqN2tsclpHOVplaXVOSDNkMVdLc2c4bm85UjN1cVozRVMyS2o4K0xC?= =?utf-8?B?d1phNk9uODQ4cms2cVJIeFg3Zkp5dEtQam4zMWtjQU1WdUE2c204cFVSMmpG?= =?utf-8?B?SVJ4YVkzZ09Pc1dROXRkaStBc3hPbGJYZ2k3amRUN0k1QXRqeDlzaGIvbWJW?= =?utf-8?B?VTBTNlNSNkMxZnNPSEVJT09EZHBpUFo2SHVyVDJtVDQxTW0yS3kxS08zLzVW?= =?utf-8?B?YWdqemRiOGtqQ3VXdENNb3crMjA1YzhXSWlQSG4zMFBHS3hReFdkMTZld3ll?= =?utf-8?B?OVd5aU5QenZ5bFZLRE5XNUJha25VQmlUTC9BeWN3WEg0eGVlQjVtM2lpdFVs?= =?utf-8?B?eEN2UnFqaUV6TlBuYlluT3JEdktQcFlSMHFtd0ZJaGd4T3VJdTcwUUlVekJ0?= =?utf-8?B?WTM3OWE5dE5yd2tYRGtmakdLNzRMSHBGSGs4UVY5SXZ1akk1K2RCc0k4cXJh?= =?utf-8?B?dEJrdG4rVFBvcHRaeUppbzVPWGxlWDBlR1g0QXArdG83eHUrWW9naW9jZ3Jr?= =?utf-8?B?U0RQWDJJOG9IV2xla3h6WVI0ZHFUOEYzSXA0QzBmZnJNdnJ4UVd3MTVhZDNw?= =?utf-8?B?S3VtTm82eHlnUzQza1Y3bXpjZ0xkRVcrVFNHSWJ0MERtdkczbmM4VDhodTN6?= =?utf-8?B?RGVxMmluOTNLUTh4V1RrY0xyc0R4NXhpZ21qdEZJdXpKZ1NxQ1V5clNkQWp1?= =?utf-8?B?dm82eWlMT1JPMzFML2hJVnV2TEdOYnVFZ1NyWGh4eENZZmE0cXBZRU1uTVhF?= =?utf-8?B?Z2QrQVFJbVpQME96NS9GdzVWY1VzcHQxRW8zL3JyUnlPa0FkQlZ1TVkzVE56?= =?utf-8?B?M2pDRHNCWUl3M01iMHJERGN6UllqVUVHNUxzYkJHcmUvWVFoQWNOdWN2djNa?= =?utf-8?B?aE9GL3dGYkI3MXNKK3BpWmRuNitDOFQrdTMyb1k1TU1rZ002TGNhVWlMMGhI?= =?utf-8?B?a1RqUHJtcTN4MnVHUjZiNTMxS3F1Y0xGSExBbzgwMnlVQzI4VDJjaVZiSFpq?= =?utf-8?B?WXZINU03ZnQ5Ui9Nd0duckxGU1pnWHM5WGJnWk9VRnoxWThVWU9qdER0LzRq?= =?utf-8?B?N0pieUliVFE1bldGYjgwdUdqeGdaL0lUMTdkU2RtRlBOQ3ZGbU1EN05SS1dq?= =?utf-8?B?cWp4cXZaWk9xNWRRVlNaUjUyRDZXZi9UdzZUM3owOWVzeUVGUG9oT1orbk14?= =?utf-8?B?OCtkb244aFU3R0NaWEhUbVcwVldNUGhuY2Y4OFFwSSt3SHh0WXNFMFBLdTB2?= =?utf-8?B?dlZzMXAxZHVXb0ZjZnpGRXNzc3ovUXhYT3hVSGFRczFRUkxuam1iaEpmUG5V?= =?utf-8?B?dFM5OVJwY0daOUFHWmY0bDRlSmNTOTdZdjVVT3JyZ1FYZTVPY3lJK0ZtdXFE?= =?utf-8?B?ZE1oTTh2ZUtPVlhLRUR0NnQ5azVnYmk1dXNQYnF0Y0wyRHZ4ZkU2YzYvclFq?= =?utf-8?B?bnVRR2VhdUEvUXdobThRSXo0WW5FRnl2RWV2QVFjNUg2QzgwR01SMDBsN25p?= =?utf-8?B?WTUrZ2hxY2F0NVBOamVRT3pMd3JPdkp1ZDZ3Rm9rOXNIQ2g0ZmZkaHZEYkxk?= =?utf-8?B?bHZLNit3aWxmemg2blNCRytBOTgxWXBZY0t0RlZkYUZieHdTaG5XSW5UV3p0?= =?utf-8?B?d0J3Y3dEc2NXc1BTV3kvT0hHT1BVVjR2NXlHVW5ZSFlST2orRU51ZDRwM1lY?= =?utf-8?B?Sk9aVHBoWnNWeVhZKzVpMWpyOWl5Sm5PSjdHRlhnaWVKZ1FvUHgrbnNWWkpp?= =?utf-8?B?MWNwQkJ5alZraHRzSTN4c3RlNlFIMWo2S3lNS09oMTFBMkZXMTNRaXZJV2RI?= =?utf-8?B?SEtTRzR5SHFEamRiY281ZG5yVnBWbmZIZkdpdHhERFRFVTVjMURWSWRLenF2?= =?utf-8?B?N01RV1puVDF3PT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e442742a-657e-4947-9d5a-08da17197549 X-MS-Exchange-CrossTenant-AuthSource: AS8PR01MB7944.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Apr 2022 15:32:13.8240 (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: DU0PR01MB9120 Subject: Re: [FFmpeg-devel] [PATCH v3 1/5] avutil: add ambient viewing environment metadata side data 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: lance.lmwang@gmail.com: > From: Limin Wang > > Signed-off-by: Limin Wang > --- > libavutil/frame.c | 1 + > libavutil/frame.h | 6 +++++ > libavutil/mastering_display_metadata.c | 23 +++++++++++++++++ > libavutil/mastering_display_metadata.h | 45 ++++++++++++++++++++++++++++++++++ > libavutil/version.h | 2 +- > 5 files changed, 76 insertions(+), 1 deletion(-) > > diff --git a/libavutil/frame.c b/libavutil/frame.c > index fbb869f..8882da2 100644 > --- a/libavutil/frame.c > +++ b/libavutil/frame.c > @@ -815,6 +815,7 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type) > case AV_FRAME_DATA_DETECTION_BBOXES: return "Bounding boxes for object detection and classification"; > case AV_FRAME_DATA_DOVI_RPU_BUFFER: return "Dolby Vision RPU Data"; > case AV_FRAME_DATA_DOVI_METADATA: return "Dolby Vision Metadata"; > + case AV_FRAME_DATA_AMBIENT_VIEWING_ENV: return "Ambient Viewing Environment"; > } > return NULL; > } > diff --git a/libavutil/frame.h b/libavutil/frame.h > index 33fac20..92413c9 100644 > --- a/libavutil/frame.h > +++ b/libavutil/frame.h > @@ -209,6 +209,12 @@ enum AVFrameSideDataType { > * volume transform - CUVA 005.1-2021. > */ > AV_FRAME_DATA_DYNAMIC_HDR_VIVID, > + > + /** > + * ambient viewing environment for a video frame, as described by > + * the AVAmbientViewingEnv > + */ > + AV_FRAME_DATA_AMBIENT_VIEWING_ENV, > }; > > enum AVActiveFormatDescription { > diff --git a/libavutil/mastering_display_metadata.c b/libavutil/mastering_display_metadata.c > index 6069347..f094eab 100644 > --- a/libavutil/mastering_display_metadata.c > +++ b/libavutil/mastering_display_metadata.c > @@ -64,3 +64,26 @@ AVContentLightMetadata *av_content_light_metadata_create_side_data(AVFrame *fram > > return (AVContentLightMetadata *)side_data->data; > } > + > +AVAmbientViewingEnv *av_ambient_viewing_env_alloc(size_t *size) > +{ > + AVAmbientViewingEnv *metadata = av_mallocz(sizeof(*metadata)); > + > + if (size) > + *size = sizeof(*metadata); > + > + return metadata; > +} > + > +AVAmbientViewingEnv *av_ambient_viewing_env_create_side_data(AVFrame *frame) > +{ > + AVFrameSideData *side_data = av_frame_new_side_data(frame, > + AV_FRAME_DATA_AMBIENT_VIEWING_ENV, > + sizeof(AVAmbientViewingEnv)); > + if (!side_data) > + return NULL; > + > + memset(side_data->data, 0, sizeof(AVAmbientViewingEnv)); > + > + return (AVAmbientViewingEnv *)side_data->data; > +} > diff --git a/libavutil/mastering_display_metadata.h b/libavutil/mastering_display_metadata.h > index c23b07c..c1ba659 100644 > --- a/libavutil/mastering_display_metadata.h > +++ b/libavutil/mastering_display_metadata.h > @@ -125,4 +125,49 @@ AVContentLightMetadata *av_content_light_metadata_alloc(size_t *size); > */ > AVContentLightMetadata *av_content_light_metadata_create_side_data(AVFrame *frame); > > +/** > + * The characteristics of the nominal ambient viewing environment for > + * the display of the associated video content. > + * To be used as payload of a AVFrameSideData the appropriate type. > + * > + * @note The struct should be allocated with av_ambient_viewing_env_alloc() > + * and its size is not a part of the public ABI. > + */ > +typedef struct AVAmbientViewingEnv { > + /** > + * specifies the environmental illuminance of the ambient viewing > + * environment in units of 0.0001 lux. > + * ambient_illuminance shall not be equal to 0. > + */ > + uint32_t ambient_illuminance; > + /** > + * specify the normalized x and y chromaticity coordinates, respectively, > + * of the environmental ambient light in the nominal viewing environment, > + * according to the CIE 1931 definition of x and y as specified in ISO > + * 11664-1 (see also ISO 11664-3 and CIE 15), in normalized increments of > + * 0.00002. The values of ambient_light_x and ambient_light_y shall be in > + * the range of 0 to 50000 > + */ > + uint16_t ambient_light_x; > + uint16_t ambient_light_y; > +} AVAmbientViewingEnv; > + > +/** > + * Allocate an AVAmbientViewingEnv structure and set its fields to > + * default values. The resulting struct can be freed using av_freep(). > + * > + * @return An AVAmbientViewingEnv filled with default values or NULL > + * on failure. > + */ > +AVAmbientViewingEnv *av_ambient_viewing_env_alloc(size_t *size); > + > +/** > + * Allocate a complete AVAmbientViewingEnv and add it to the frame. > + * > + * @param frame The frame which side data is added to. > + * > + * @return The AVAmbientViewingEnv structure to be filled by caller. > + */ > +AVAmbientViewingEnv *av_ambient_viewing_env_create_side_data(AVFrame *frame); All this boilerplate code for the various side-data--types makes me wonder whether they should not be replaced by something like void *av_frame_side_data_alloc(enum AVFrameSideDataType, size_t *size) and a corresponding av_frame_create_side_data(AVFrame *frame, enum AVFrameSideDataType). These functions would return an error in case it doesn't make sense to create a side data this way (because there is no struct associated to this side data type or because the size of this struct depends upon other parameters, too). > + > #endif /* AVUTIL_MASTERING_DISPLAY_METADATA_H */ > diff --git a/libavutil/version.h b/libavutil/version.h > index 6735c20..998202f 100644 > --- a/libavutil/version.h > +++ b/libavutil/version.h > @@ -79,7 +79,7 @@ > */ > > #define LIBAVUTIL_VERSION_MAJOR 57 > -#define LIBAVUTIL_VERSION_MINOR 24 > +#define LIBAVUTIL_VERSION_MINOR 25 > #define LIBAVUTIL_VERSION_MICRO 101 Micro needs to be reset when minor is bumped. > > #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ _______________________________________________ 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".