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 4489B4AD71 for ; Tue, 21 May 2024 06:54:27 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 88E3768D2DC; Tue, 21 May 2024 09:54:25 +0300 (EEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2096.outbound.protection.outlook.com [40.92.91.96]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C94E168CF47 for ; Tue, 21 May 2024 09:54:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L6x5HlyhchHjruBtOCzDkfST4Y0/zY8l+V6ZlZobg21HgGhVLP+hWONJ+geuafDdxRsnx3S7RWybkupcXy3ZV+DK0SmP9k+oA+zcO7VnG8JBc7+51U58Mgfpp7mNEl3cMGlHucLbV7Axu8Wr6fzR0Wda0J0EInKPDfAcqH1SgZbKyzABTuEQHmummzkjTCo7y4rByXMptoQqD/i4R4eiJPubbtiGBMkfnjQ82q9aBrWUGl6a4bt0CVclo8IxuBnRlv3a0b1iDCdWT9sEsDW3t1rwZQJXNoGLdC5jtzj9nu8p7JSFh7qx2/2sg2zYqPwdz0H+fUqtzQsZV/Q1drFdtQ== 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=aMj4EVOc57GKum5G+gryoE/cpzeKr0VbGgafibZUD7Q=; b=iH0Ifzs9LZi04FvzGczbv3jQIiUC2ZvZ5r3BSURB7kbDrVaXawgLerFPJW8wi+4spGGD7T4hGeYjaJSPTXukKdSZ8bDi3FmZCOjQ51goVLkbiRy/V3WNal1ZcXY5mKUEXgqQGxnuNOMONja//Ga4bqTeSzR3pfcbwvDVo1vRpDs96imltoL+NDP9Orf4rp6M3uE0I56PHJKnQI+s0XKMdQFw2TQcCbF4HQYS9VcJRRJTwuEL7KfcfRKy1sJ2XHCwmd7E5zT83hUQLko747UYzCVqLr1MlTvwSViNVi+PQOZJvl8gY4qGbE+X3DCleONegGJlVGyp6W+IaJgXQjYREQ== 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=aMj4EVOc57GKum5G+gryoE/cpzeKr0VbGgafibZUD7Q=; b=adi3VZlhNrsL5O5a73ebhBebAOa1Pq8Plr0/ROW83Q4Q8R3KWXCYLyT7MFs7Lid6Je6hQRMSUP4J8dsnVSHhi2TmZ8mPd7YuABLqEfQKD1cYjW4o8LTKBq8/8kYZN6lrC/cT0iNZ+qwdkusgqqtXqATXP+Uw9l09wfhklU7njdBQ4H8GswpDEmDXHJqy+B8BOWztK2p1KveKrpdGl8nwFrTE3Azd5EP9sq/xlLz79HeuYeFMpC1AJyScYQ3iLpBNrC0xkO2qXU1ZaZWoHm2xfP25Puo/ZXXPSs3DR4y8Q6Ahn8a6+jbBrzkpvlz98EsEKpTW0uI2pZt25Jl7X7NY6Q== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PR3P250MB0322.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17d::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.35; Tue, 21 May 2024 06:39:25 +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:39:25 +0000 Message-ID: Date: Tue, 21 May 2024 08:39:22 +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: [ljc+h++eOSB/5m8CrRpfQFKKcv92Ghlwsd4is1fP100=] X-ClientProxiedBy: ZR0P278CA0213.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:6a::19) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <52cb6b5b-6bcf-4188-a20b-0a10526f93c9@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PR3P250MB0322:EE_ X-MS-Office365-Filtering-Correlation-Id: ad2e9e34-00c9-46a7-2a01-08dc7960c167 X-Microsoft-Antispam: BCL:0;ARA:14566002|461199019|440099019|3412199016; X-Microsoft-Antispam-Message-Info: 6kazCnuBDHDtvb1be4HCqT1j+WSXQ7/ijgGax4g1qmPDySd10EDE9EmDiHWe35amOVs5HQYQmFcMwKRw7KJIFgfaDGFW0HayyKgrxCl58lX2FmXMs9VbdBkXVn4WEKHPkLjddYwms/ux8R+uNz0+zEMubVg2Pzw6T0qReuR8bAPT3/gj0J+JxycPxYsg9WGBx1jtiuF9qa0hCjG4DN6muzsE8ndM8pJUshqyJ8XL3rhkWK8cSz3CMN3pXHbNDa9w+u+ZsMs+0pt8CdtGKOCMlVssd1rlcKzsNxNKrbg6BKbeIuLhzMHXCo1bzrmNjCIZY3825hZ5Gq0W1I4663TuZVkNdOLXeT0cVVzOMVz6To7NEkYXmYeTyUTqEtnA3hAiDDkC3FhbGYDjmwoa34bobzEu834ZgqjuZljuCI9wTIbiztFPAzutshbWZnTXjqn5kYQyWJHy6NRYDcA02WxbAzeIW4ikV6iox5WQbEljhqN3k5VOns3RC3vxom/mx8Wkm3RdoqLhcm4WGmUPlxHfUTRNdCkbR8EBJZvXUOV5QFPZ7bMYDCyuBiuu6zWBe4r7 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YzRRTWJ2WXN1TndaVllJZ2ZsLzBWbWttdE9xb2t2bHR1b3VvS0Jiazl3U3JN?= =?utf-8?B?WkI1L1NIUFkyaXNFcmpqWUpjR2h4QzN0YklUOUJFdUczcEpHUG5FV3BoWm9Z?= =?utf-8?B?YW13TW1XUHkxaXBWelVwM3BpYUZ2MGtSdGJYTUlKOHpGRjlnNzVBMVVmbUxB?= =?utf-8?B?Y3BENEFDRWM1RHl2a0tsN1puUGtsbjRoNmNTdGpGd1FVeThtV0Uvd0dhZ284?= =?utf-8?B?eDNoenl2RDQzV3dMTHVHTWgwWVFUaUZndHNWRm5DTTJXOVNIVlA3ZnZScXN4?= =?utf-8?B?SXNEdFA3SmVMeVkyM0dQMkQ3bUQvMTlvNkpyTVNoSGFiOGJUSlhZeFp2VTR1?= =?utf-8?B?cDVMaWMxTGFpWDRMZFcvZ0lrVHJsVDdKdW5nTzdUOXhDVHdVc2w4L3crTmtz?= =?utf-8?B?amhFd2p1ZDZIVjYxNXF1MjhDODR3NnVHK2lNeEdoTmRCMm1YMlRSZGtSSjRB?= =?utf-8?B?VlZSSHVFMVcwUFJIUmx1aXVyYVFCOXhoNU5rSjNaSlRwMDZBamhSTmlXVkwx?= =?utf-8?B?SVFiZ0pRZWp6RDA5Z0dsNlk4SWg3NDZMOXM2R2ErK0grU1FWLzFmMDRObWds?= =?utf-8?B?TWFjMllJelI4R2NHL0VrSy92OFpDSUlwZmFFcFVqbUhqNnZJdzNpbEhnTWtK?= =?utf-8?B?czRRellGZTVKK0pnTzZLSUFENHdFSnZhMFpxVEh6dVdJeGFZb0xTSm1CdjRW?= =?utf-8?B?eXVOYlhEa1Qra1JySklYQlZtMDk4WWFpaFEvMlcyckdNQlFEWHdsSHRKU0sr?= =?utf-8?B?NXhsOWI3WTlLMWtnR0xqdlhCYVVGeVFhazZaRm1aOEs5V2VMT1dQUEpLYVBK?= =?utf-8?B?YWlXNGoyWUFydVlwR0NLL3N4U29GUGdOOVk4azljRitaNlB3cCtXcnd4Kzhr?= =?utf-8?B?dUdsVUU4eE1WMjZvRXdQeDJrZUw0Z2pDMmdJUitaSGExeVJMZ0J0dm4zK0Zl?= =?utf-8?B?a0NoVHlONUJpcm4xOW1ZSEx3Wmw0UG05cnB3UkVpZkJiRm9hYzlnZmhyQWxj?= =?utf-8?B?NzZzUklvVTEva1ljKzZSYTBlMjg2ZnduTEpnODQ5RU1vT0M2Q3BXaFNsdEJG?= =?utf-8?B?aHNzNXJSQjhhMW9uU0hXNXR3b0E5R3ZpbEJPdVhsS1pOMk5tZlQ4Y2dOZXVH?= =?utf-8?B?KytQZGsvSVNqSE5KMFJaalZLWGIrU3Z0d3FNbFZEUzZuRkZxQXN1ZVNhT3N6?= =?utf-8?B?UVFFMEpPek5YOHZYMjkwV1VFMUhqVGpKK3JtSjEySUdjS0tDa0VmNE1CcFR5?= =?utf-8?B?TUdMUEFIU0JwQWFMd1pQOThETDEzZFJPWWZpV08wNEFkWHFhZGR3akRDNHI3?= =?utf-8?B?cGhsN1FTVWw5Nm5QemZ0WlQwMnJFVTQzU1VXMCtGWUhyU0tCUExnQU9WNHgw?= =?utf-8?B?L2ZYcVFCODkrZ2lLRTIvVTBqVEp4N25hakJGa1pQa3RLQzdFVnZHMVBLRFRG?= =?utf-8?B?ajlwTkIrUmgzZkhCdFpUSlRhK2ZTUHp5OHVlU1dDWlR2YkNWZnVIYXRWOGxX?= =?utf-8?B?ZHNtREJXeFRuSDVycnlTWUhqRFQyU0hZdlNOUjdlWFU3Tk92OHpNcnZBSGwr?= =?utf-8?B?dWJUWGJncFlVamhHNnFDV3dWWExYd3ZlSTVxQ1FhdldiemRYdis4b1NXSFNV?= =?utf-8?B?QTM4TFREanJ0K2RqazJ5MHZUOFo1UmxsbGg0Q2JBaTh1Z1lGNTVCNnVJaFlU?= =?utf-8?B?L0Fsbjc3My9QWmVLNTRrcnIxK3pxU3JldHByeDJJbEw1dk5LSjh3MnBBPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad2e9e34-00c9-46a7-2a01-08dc7960c167 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:39:25.0398 (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: PR3P250MB0322 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: > 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. - 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".