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 07CB74AD76 for ; Tue, 21 May 2024 06:58:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3964368D2B3; Tue, 21 May 2024 09:58:07 +0300 (EEST) Received: from EUR02-VI1-obe.outbound.protection.outlook.com (mail-vi1eur02olkn2013.outbound.protection.outlook.com [40.92.48.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3EB1868C8AC for ; Tue, 21 May 2024 09:58:01 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hndbjaSlGqR/G0/+fDwK/0TgVoudydk4BMfSsxcMhFbeS+ra4xaiCzZt0VCuFuJ+SMXo493utlPCw5yBbg3f6qKXmAhncu5g9oA/Sns/8Fkq80dkJ5Yd0xS+MPL2iY5oFzyI9uhbskIkmoNhTdHuhr1qvTtIt1Fpnlt8OBX2NAoSLHR4QlbwLkOYhnhYqvdPZB7Am5barZ6lHK5B255m+0pnMHF0K3BmbF11UebW+Nb+pGP7K22KMqiaiyfSFKu/UE8RCC+j0pyZccw0cBz/Lxevck+CGilOJcR3Cm5IbUWgsc0H9caeRD0QhsUZoKx2FzCI5AlBQ6S25KpwsROV4w== 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=FZTZ7Bknv6rXbcLxBimIdOEbImvpR2OnSu7SM3KPgdU=; b=k63Abzdn9jQWh4pFetOPbl5no6018t0F0UflrOakleOXBly12JAZV4kKxrjESh4NlEJPqr67KZAUz6fxkm/xd+ybG/UHevR4ih9Pi8icvSH5CLDjTi55suFnEkDeRi0hhvTPOSwFsybHHjafFc8srxcI/9Z5iR1D2Jrjzh/goswvAhPwPVUSmKuzhT5Ssnot9mF9EOoA8xlJ1FTUhwc/xEnCqGvvn/SEARnEy9f1hvmOnBRe8vlMzWzmZAEGlJhM/V3cwEJ4gAH22BtLi+39jvARt2DCHunG+xWGoz2nTneSPLu7bS++KX4lMb+DMlszWHG83496bRMLbWBwnQjuMA== 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=FZTZ7Bknv6rXbcLxBimIdOEbImvpR2OnSu7SM3KPgdU=; b=jL9d63gApGJ0NNVJvLngVdvdo6mwH09F7+G/b16TDp5ChQXnIsPSejfQbSohtPxjLYd3zkm/daQk9nZYadRbjUiNhMzAHyqnITOuEZbW2g7F1PbUH2gw9SeDzu6WjMf0scMz1fNMh0a/xyboTcbOPfxiFck3ISP9hd/lmmoDlG9NfF7CatV1MGz0InETjt3QreFlsF/NOYPkkNqmQ8AXRQDDnrFMseSNRZtdHd3TRavqQ++yurpFAJQa4vn9gSPnFb0qKzSL/2y9FNv4Wn8+iEvKLDJxeBUXD+ZV5VQUXpnRgEojsXzJa4/lULUM2bRlCRtslLxK1WoC1rSOdtoofw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0205.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:276::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.36; Tue, 21 May 2024 06:57:59 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%3]) with mapi id 15.20.7587.030; Tue, 21 May 2024 06:57:59 +0000 Message-ID: Date: Tue, 21 May 2024 08:57:56 +0200 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240521053948.1516155-1-haihao.xiang@intel.com> <20240521053948.1516155-2-haihao.xiang@intel.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: X-TMN: [sPSMDDAuwVIYS0ukI7bbNXdR+2uFNW3ZZgnO0YUQL/0=] X-ClientProxiedBy: ZR0P278CA0116.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::13) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <722a79a7-c5f2-445f-b6c2-04dff20bf45a@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0205:EE_ X-MS-Office365-Filtering-Correlation-Id: b4a6b24b-95ae-4f28-1a26-08dc79635959 X-Microsoft-Antispam: BCL:0;ARA:14566002|461199019|440099019|3412199016; X-Microsoft-Antispam-Message-Info: Y8PDSzz8IC4Q0Upfq5oS6EXOxsdZMMsfNvf93snOTAvTu2wjR5DxEHwHH78utHJNlILbm4mm10jtyVOs0z92ho6/I7HJNCd7zQutYOJLVCWWz6ub+xhqIzMyRBfk1iD2YdA/GwlQ1UCDuqXXLBcVq6tbV8D3HAW26BPkUs/D4+qc8dQfmjRzpYqfA5L+6FbW2rI5bVddObT097BMVbE7Q8HVF1WXfR+9yVmfMyzZz2fyg9I2r0eUQJSkMz9sHdJb2TQdrKcxI4swtmRyU73ax3jtfCSB8XS8ExAKqRE419c/dX66qIh9ssk7pYerbUTnY4r3mktar2ZWQGk4rJweMCuYsrkqci+tm6ZOdK0WnCdC06JNN43GWefNXTIhnolLSSdTLJk2GJ6p02KMz6bFX19t990Lh4vLb2m16kZLL/tYO5ElXQ2JHl/pD0P4mIJ8rRNR+HZ0RZlQehPmQwB3dyl1ORbiO3vyNEZzHtsJ629Nh8U84XKQVtH44a4OKw+4XIfs4dKd3rFz21FC/cLUTfDX/cohRMz6RZukSjqZ0bDK/60HnSZXPZjHBdTAfEEh X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UERSeHpsWFlzbnA4WGM0ckpRNXBoSTAveVJ4bFpaZGZnWFVUQloxeEpaVE5X?= =?utf-8?B?MHlNR01CL2UvVjlMMnAxSVVjSmdlQkVUVEJCSENoUXdmUEVOb09kcWhUelA5?= =?utf-8?B?T1N3d2FNUnV4Nmk0YmcvSEdaZlAyMTk2WktCQXY2T1ZOSGo1MHFQbDJRVHVT?= =?utf-8?B?amdPVCtHUzU3WTBQbUlIcnIyUGxxdUt2VnUvSys3N3Vkczh6RUdFcVprYnph?= =?utf-8?B?dVF4RnZ4ekhYRnhmSWNnM0ZoYlIrRXdNanJsUzJlVWpMWG5FOFlrR2JPZjMv?= =?utf-8?B?aHg1K2dBOEFXM283ektrRDRHS1g3Q1ozb3ZhalNycmJHRS9xK3VBbThSeUpk?= =?utf-8?B?NGJYK1dFSFJjUEJhaDk0U3FLS2Fza3MxNURudVNSYnhPd0lqYnNNS05ITGhi?= =?utf-8?B?U2ptaHB6b3V3OEJ6a2NsNUlZTG93bVpZUmVTNmxRcUlPcThqUzc4NlVmNE1G?= =?utf-8?B?RllvQkpBZGgyVU45MWMyOUZqczgwRVJvWUxIVWljWk1POFFTRkRxdVBDZnJx?= =?utf-8?B?TXdkaFh0c1gvUW11SC9oZDR5SEZQa2MwQTg1c3RvUHZQZG5vQWFaUjVGdVZQ?= =?utf-8?B?cC8yZHB6NStQb1ZKcEV1N3pWUGhTN2VOVDlPaUxubE9xZHlQam52ZlFNeGxL?= =?utf-8?B?ZTJWeDY1NFMrUjluZElCNWtpVkdKWlJwK2JId3NSUndaY0Vnc0x6cEVuNVJ2?= =?utf-8?B?bmFKcG1LRWsrZ2JURnRYc3hxVURnN2RXSFQ1M2FIYXA0cVV6SWNKN0JRZlQ0?= =?utf-8?B?dE0yQkxVQ0ZUNFcvbm5wU3FrbEZCcDF2WHlrc0ZlelAyYVRNczJLVG1xQnFQ?= =?utf-8?B?bUQ3eVh5N3FWbStwbm1zaXVwTHpGbTA5aFdqWVR0TllqOGgrZjhXT1NZSk1v?= =?utf-8?B?UzVWbk8vK0lIQnJPZGRDazlLdDNYWU9yM2Z6ano5UFRlS1hwamN3Q3VTN3dz?= =?utf-8?B?Nm4zRG9GaGpxNUZrajNkWUg0TXViRk9ScHB0bjUyRyswSjZETlNRWENGK0Fj?= =?utf-8?B?dmdEci9nQ0tDemsvWmhKNk5Db2IwWHp5U3d1NTdWVzVqY2xuQ3dIeEZKcVZh?= =?utf-8?B?U0VPQ3NGSlRZcEJrSlM4K0YwZ2c4OUtYUnFtdkhTRWdFZHNhSEdPeENHeDNF?= =?utf-8?B?WmVkbWZrWUlKV21TMFBxdEJTYkNjc0szSVFGc1NlZWlmV0FWTEMreXpCeHI4?= =?utf-8?B?MWM2MmgrZDQxNzJ1ZXFLbXBibEg1UVlacUZ4cFNWaVVIZXUxVTZlK00zazZq?= =?utf-8?B?NTIwdk9SdDBsdGxadWxBeklKSWJRd1c1SDVPR01tWHdyNDhzUGtoai9CM0tB?= =?utf-8?B?Ymw3cndZSzRweGYwcWhoNXhNcjU0dVErbGx4V3ZlTDBUcFl4aHB6UHNhZmZN?= =?utf-8?B?YWtya25zWFdDbXVtbURnekZEekJlMzVabVRxUFZSRVQ4V05NenViN0ZLT29z?= =?utf-8?B?UG5HZGFwOFZodHVReFJWMXEzSjhkR1RsemtxdlQ2NFJ3RGZEVlN6bndOVWJQ?= =?utf-8?B?dzFOTVg1bXBzK3hmd0dnRk9vWnQzUlJZZmN6UTM1NEhKRHU2amk0cUk5b2di?= =?utf-8?B?dCtTUnRFL2ZBVGdLRHNBRnpvTFN3Q0dpN0xwL1M4SjUxNExLK0ZkdjE5ZjV1?= =?utf-8?B?K1EzdGtzMDgzMTlvUEdDSGU3SzNKTUVkQzROL1RRLy80N2NGckxjREJqY0pN?= =?utf-8?B?b3c3V3c3K041QWlZRDZwVDlSYnNwOHBnSGlJWFJmckd4ZWlFQWVncFVRPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b4a6b24b-95ae-4f28-1a26-08dc79635959 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 May 2024 06:57:59.0290 (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: DU2P250MB0205 Subject: Re: [FFmpeg-devel] [PATCH 2/2] lavc/qsvenc_av1: accept HDR metadata if have 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: Andreas Rheinhardt: > Andreas Rheinhardt: >> Xiang, Haihao: >>> From: Haihao Xiang >>> >>> The sdk av1 encoder can accept HDR metadata via mfxEncodeCtrl::ExtParam. >>> >>> Signed-off-by: Haihao Xiang >>> --- >>> libavcodec/qsvenc_av1.c | 75 +++++++++++++++++++++++++++++++++++++++++ >>> 1 file changed, 75 insertions(+) >>> >>> diff --git a/libavcodec/qsvenc_av1.c b/libavcodec/qsvenc_av1.c >>> index 33727bb07e..a7d35d7bef 100644 >>> --- a/libavcodec/qsvenc_av1.c >>> +++ b/libavcodec/qsvenc_av1.c >>> @@ -26,6 +26,8 @@ >>> >>> #include "libavutil/common.h" >>> #include "libavutil/opt.h" >>> +#include "libavutil/mem.h" >>> +#include "libavutil/mastering_display_metadata.h" >> >> Breaks alphabetical ordering >> >>> >>> #include "avcodec.h" >>> #include "codec_internal.h" >>> @@ -39,6 +41,77 @@ typedef struct QSVAV1EncContext { >>> QSVEncContext qsv; >>> } QSVAV1EncContext; >>> >>> +static int qsv_av1_set_encode_ctrl(AVCodecContext *avctx, >>> + const AVFrame *frame, mfxEncodeCtrl *enc_ctrl) >>> +{ >>> + QSVAV1EncContext *q = avctx->priv_data; >>> + AVFrameSideData *sd; >>> + >>> + if (!frame || !QSV_RUNTIME_VERSION_ATLEAST(q->qsv.ver, 2, 11)) >>> + return 0; >>> + >>> + sd = av_frame_get_side_data(frame, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA); >>> + if (sd) { >>> + AVMasteringDisplayMetadata *mdm = (AVMasteringDisplayMetadata *)sd->data; >>> + >>> + if (mdm->has_primaries && mdm->has_luminance) { >>> + const int chroma_den = 1 << 16; >>> + const int max_luma_den = 1 << 8; >>> + const int min_luma_den = 1 << 14; >>> + int i; >> >> Should have loop-scope >> >>> + mfxExtMasteringDisplayColourVolume *mdcv = av_mallocz(sizeof(mfxExtMasteringDisplayColourVolume)); >>> + if (!mdcv) >>> + return AVERROR(ENOMEM); >>> + >>> + mdcv->Header.BufferId = MFX_EXTBUFF_MASTERING_DISPLAY_COLOUR_VOLUME; >>> + mdcv->Header.BufferSz = sizeof(*mdcv); >>> + >>> + for (i = 0; i < 3; i++) { >>> + mdcv->DisplayPrimariesX[i] = >>> + av_rescale(mdm->display_primaries[i][0].num, chroma_den, >>> + mdm->display_primaries[i][0].den); >>> + mdcv->DisplayPrimariesY[i] = >>> + av_rescale(mdm->display_primaries[i][1].num, chroma_den, >>> + mdm->display_primaries[i][1].den); >>> + } >>> + >>> + mdcv->WhitePointX = >>> + av_rescale(mdm->white_point[0].num, chroma_den, >>> + mdm->white_point[0].den); >>> + mdcv->WhitePointY = >>> + av_rescale(mdm->white_point[1].num, chroma_den, >>> + mdm->white_point[1].den); >>> + >>> + mdcv->MaxDisplayMasteringLuminance = >>> + av_rescale(mdm->max_luminance.num, max_luma_den, >>> + mdm->max_luminance.den); >>> + mdcv->MinDisplayMasteringLuminance = >>> + av_rescale(mdm->min_luminance.num, min_luma_den, >>> + mdm->min_luminance.den); >>> + >>> + enc_ctrl->ExtParam[enc_ctrl->NumExtParam++] = (mfxExtBuffer *)mdcv; >>> + } >>> + } >>> + >>> + sd = av_frame_get_side_data(frame, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL); >>> + if (sd) { >>> + AVContentLightMetadata *clm = (AVContentLightMetadata *)sd->data; >>> + mfxExtContentLightLevelInfo * clli = av_mallocz(sizeof(mfxExtContentLightLevelInfo)); >> >> sizeof(*clli) >> >> But actually, both allocations seem to be unnecessary: This callback is >> only called when there is a QSVFrame and it already contains a >> mfxExtContentLightLevelInfo and mfxExtMasteringDisplayColourVolume (used >> by the decoder), so why not simply reuse that? The type of >> set_encode_ctrl_cb would need to be changed of course. >> > > I know see that this would necessitate more changes because the ExtParam > pointers are currently ownership pointers. So ignore this suggestion. > s/know/now/ - 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".