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 4C0B445AF4 for ; Sun, 16 Jul 2023 09:14:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1A15068C5B8; Sun, 16 Jul 2023 12:13:55 +0300 (EEST) Received: from out203-205-221-233.mail.qq.com (out203-205-221-233.mail.qq.com [203.205.221.233]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7C51C68C501 for ; Sun, 16 Jul 2023 12:13:47 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1689498818; bh=gG7ncJWYajXppMPWjpsqAAG+ISFr54qw5NDcSF1HeSM=; h=From:To:Cc:Subject:Date; b=IsnXUBUuHlHEKIs3haZZpM/R+wrCWAB9G1WrfXehvNCcESIscFkER7Ss7nSLbfuSV iphNxadJrdztilCkIWEc5FmFSAKwRPiPjuxUnpc/b96JGv1yfYOlB5Ffk7PwI7BcEZ faP2Mdpm6b9tIGsAD7Adh0TN2mdnvdY+xzuIuTHI= Received: from ZHILIZHAO-MB2.tencent.com ([113.116.31.61]) by newxmesmtplogicsvrsza7-0.qq.com (NewEsmtp) with SMTP id 35F220E3; Sun, 16 Jul 2023 17:13:31 +0800 X-QQ-mid: xmsmtpt1689498811tvl14aqhc Message-ID: X-QQ-XMAILINFO: NDgMZBR9sMman3RMQQW0YMaVtpYgabbWnun2uZS5zcruumTZxPWFS8KstqWn2S 3OrzKxusfGd8fawakU37gw0S2f3Dcz3LYItF8sW6gmNGQVrdFvYnBFo8gjFjF1pCHgjPfqCHyO8z c+YNisj2sPvBHVpXVJ7LeVlR5rZ0yTdec7LUjPF8PIUp294Oosd4mONR9DZ9hLGR0KJANYlA6Z9n H5rSKCFQK4gtfOJXYI8hjkdlODAD1fxgwxukUT03jP78K/91+p6q8qaX8qVm3NwZeVQ475NP9X25 2qjErJUPLMg0+a7Te0DPEL7FHi6vW1BMrilt2fvyKD88sxAa7i9hmPCI/HDlXeujAgOZ7Qi02Ga7 geOd2RnL1j6eNT6lmfJ0OmFMLVLpTmdRzCdeQjbKPlwh4IF78zVhCsY5T3LD0Vp2xRTuhaC+MOpN qRJf8lAKTApbLedOgfcGjktfLpOJOw+fiQYWhAGxuaP8bOdx8MvD7JfaN/Bbe4mvWZ/yRiRzecwr QXOizcroS0rbLa/b4Fn8WaBm+zq6ko9TvoaKJAYUfz7v5tpYysN0pYGbljaZbYlNHpI0SLc6G20r DDmMMEUAaQNbECVjVaJfI0FRWA1JrgQyR1x6oseadlc3HYwT/oaPGGTwNf35PH4t2XkTFio6KJms p1o8qfksE1m6VMdxVxsDTXwmwrkQcu7VRCJC4swX7+/mY8E0ztGaanRT0j6zpYE6ry1GF/q3tlWh PjvC/0WRI1ewvU1WUWJsAsOsC24QvUKFPrwRVn4bIuqwD8LTSo9WDl93+8vcHkypGcb6la3K7b+q CSmS8m8rPlrK+zceMLXwLcG256DXUoYJ9arwmD4fATs9g3Xp1GPtEmXlhjC4KuF3Dt9jyzPCtHug mJ19M6KSlYwdBPf4aXqRwdRzBY+Q2ym1UIpczRWBqyc6GHYfG6V0ymiVC6Md6RmPr0gGkQ+4izyH On2DasUAAmZGu/91wcL9ulP42vBe1L X-QQ-XMRINFO: NS+P29fieYNw95Bth2bWPxk= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sun, 16 Jul 2023 17:13:27 +0800 X-OQ-MSGID: <20230716091329.28797-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3] avcodec/videotoolboxenc: use color parameters conversion from avutil 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 Cc: Zhao Zhili 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: From: Zhao Zhili --- libavcodec/videotoolboxenc.c | 137 ++++------------------------------- 1 file changed, 13 insertions(+), 124 deletions(-) diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index 6114351392..8e493c4f7a 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -1001,132 +1001,20 @@ pbinfo_nomem: return AVERROR(ENOMEM); } -static int get_cv_color_primaries(AVCodecContext *avctx, - CFStringRef *primaries) -{ - enum AVColorPrimaries pri = avctx->color_primaries; - switch (pri) { - case AVCOL_PRI_UNSPECIFIED: - *primaries = NULL; - break; - - case AVCOL_PRI_BT470BG: - *primaries = kCVImageBufferColorPrimaries_EBU_3213; - break; - - case AVCOL_PRI_SMPTE170M: - *primaries = kCVImageBufferColorPrimaries_SMPTE_C; - break; - - case AVCOL_PRI_BT709: - *primaries = kCVImageBufferColorPrimaries_ITU_R_709_2; - break; - - case AVCOL_PRI_BT2020: - *primaries = compat_keys.kCVImageBufferColorPrimaries_ITU_R_2020; - break; - - default: - av_log(avctx, AV_LOG_ERROR, "Color primaries %s is not supported.\n", av_color_primaries_name(pri)); - *primaries = NULL; - return -1; - } - - return 0; -} - -static int get_cv_transfer_function(AVCodecContext *avctx, - CFStringRef *transfer_fnc, - CFNumberRef *gamma_level) +static int get_cv_gamma(AVCodecContext *avctx, + CFNumberRef *gamma_level) { enum AVColorTransferCharacteristic trc = avctx->color_trc; - Float32 gamma; + Float32 gamma = 0; *gamma_level = NULL; - switch (trc) { - case AVCOL_TRC_UNSPECIFIED: - *transfer_fnc = NULL; - break; - - case AVCOL_TRC_BT709: - *transfer_fnc = kCVImageBufferTransferFunction_ITU_R_709_2; - break; - - case AVCOL_TRC_SMPTE240M: - *transfer_fnc = kCVImageBufferTransferFunction_SMPTE_240M_1995; - break; - -#if HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ - case AVCOL_TRC_SMPTE2084: - *transfer_fnc = kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ; - break; -#endif -#if HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR - case AVCOL_TRC_LINEAR: - *transfer_fnc = kCVImageBufferTransferFunction_Linear; - break; -#endif -#if HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG - case AVCOL_TRC_ARIB_STD_B67: - *transfer_fnc = kCVImageBufferTransferFunction_ITU_R_2100_HLG; - break; -#endif - - case AVCOL_TRC_GAMMA22: - gamma = 2.2; - *transfer_fnc = kCVImageBufferTransferFunction_UseGamma; - *gamma_level = CFNumberCreate(NULL, kCFNumberFloat32Type, &gamma); - break; - - case AVCOL_TRC_GAMMA28: - gamma = 2.8; - *transfer_fnc = kCVImageBufferTransferFunction_UseGamma; - *gamma_level = CFNumberCreate(NULL, kCFNumberFloat32Type, &gamma); - break; - - case AVCOL_TRC_BT2020_10: - case AVCOL_TRC_BT2020_12: - *transfer_fnc = compat_keys.kCVImageBufferTransferFunction_ITU_R_2020; - break; - - default: - *transfer_fnc = NULL; - av_log(avctx, AV_LOG_ERROR, "Transfer function %s is not supported.\n", av_color_transfer_name(trc)); - return -1; - } - - return 0; -} - -static int get_cv_ycbcr_matrix(AVCodecContext *avctx, CFStringRef *matrix) { - switch(avctx->colorspace) { - case AVCOL_SPC_BT709: - *matrix = kCVImageBufferYCbCrMatrix_ITU_R_709_2; - break; - - case AVCOL_SPC_UNSPECIFIED: - case AVCOL_SPC_RGB: - *matrix = NULL; - break; - - case AVCOL_SPC_BT470BG: - case AVCOL_SPC_SMPTE170M: - *matrix = kCVImageBufferYCbCrMatrix_ITU_R_601_4; - break; - - case AVCOL_SPC_SMPTE240M: - *matrix = kCVImageBufferYCbCrMatrix_SMPTE_240M_1995; - break; - - case AVCOL_SPC_BT2020_NCL: - *matrix = compat_keys.kCVImageBufferYCbCrMatrix_ITU_R_2020; - break; - - default: - av_log(avctx, AV_LOG_ERROR, "Color space %s is not supported.\n", av_color_space_name(avctx->colorspace)); - return -1; - } + if (trc == AVCOL_TRC_GAMMA22) + gamma = 2.2; + else if (trc == AVCOL_TRC_GAMMA28) + gamma = 2.8; + if (gamma != 0) + *gamma_level = CFNumberCreate(NULL, kCFNumberFloat32Type, &gamma); return 0; } @@ -1694,9 +1582,10 @@ static int vtenc_configure_encoder(AVCodecContext *avctx) vtctx->dts_delta = vtctx->has_b_frames ? -1 : 0; - get_cv_transfer_function(avctx, &vtctx->transfer_function, &gamma_level); - get_cv_ycbcr_matrix(avctx, &vtctx->ycbcr_matrix); - get_cv_color_primaries(avctx, &vtctx->color_primaries); + get_cv_gamma(avctx, &gamma_level); + vtctx->transfer_function = av_map_videotoolbox_color_trc_from_av(avctx->color_trc); + vtctx->ycbcr_matrix = av_map_videotoolbox_color_matrix_from_av(avctx->colorspace); + vtctx->color_primaries = av_map_videotoolbox_color_primaries_from_av(avctx->color_primaries); if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) { -- 2.40.1 _______________________________________________ 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".