From patchwork Wed Jun 26 10:57:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 13707 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 7EECD44995D for ; Wed, 26 Jun 2019 14:25:22 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4E08868AB5B; Wed, 26 Jun 2019 14:25:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f196.google.com (mail-pg1-f196.google.com [209.85.215.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 472B168A922 for ; Wed, 26 Jun 2019 14:25:16 +0300 (EEST) Received: by mail-pg1-f196.google.com with SMTP id z19so1074614pgl.12 for ; Wed, 26 Jun 2019 04:25:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bwtzA281uRVdD0BcuIZf0xyKuaUAe/pCFcrhaQggxYM=; b=c2mdJh+iLWA9PR47rKzvBiPzRkSjnPnpSMlA7HbITiTvhKD50dGJg/07Y4WtWLu9+m Jck38YbuKeBvBzoaBscpF3jECs5M4SjCA7uJcVOwDXAuitbo/vpjp8ZIF2C9NZxN4a0T aRcCMsv0Ew3RS8R3dlwk6ToMWA+/uM2tn9ColG6Vfma+HQX5SEH9Dsw2rRHKAo/BElIL ltgGedoVKwVML10v+r9SA02qtO5w0jPLxClEvN/P3rWATstZmnfKBgiZMUQKXDmZ6Q+e 5mzNkUPHIpBVFkxcpoOL5wIi3vxpiuWqeC2CjRH1eWUjGZ5huJ2/GvXdYwkurRJfhSw9 LunA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bwtzA281uRVdD0BcuIZf0xyKuaUAe/pCFcrhaQggxYM=; b=F37VrthU5OEn8dSU94OU2f9xIGWUpvLGwO+/HXnxcPOqai5iWuv2Ped8ICzOmS7rSm YN40Q6A4zPE/2Sb5LjYCrYpBJCpHt5GwRsjFPF+0466PKSrNDQJTZOA/c3pSENlweS+7 qE33P8ZAnj+bw2GX+rc1IeDtNUAkF2OJ12XVY15B46jWt4LnVrgP4BNyfPCdi3n/bFFq P/vBx3LsiY2Y78zmlL1ZXftHVmP5jlV6ZyWmJe8g1Qxk5rDJcCICo5Ylcn2Z/6hHTDxj /tBPOCGGViT3cz0ng+DSEC1NG7odC7AmQuVaqNMTH5Lwq+MIw+D5Ig9Pl+0eYOZwv3sr Ei3w== X-Gm-Message-State: APjAAAWmVhP1NIDHKoDPNacAtib2Jg0450KSTwaIqDP4seHRPNK2QJgt bUbfJ+4qtZrQh8B2xGQ5p70yv5C1 X-Google-Smtp-Source: APXvYqxs4m8qbHZTAIetgcHjnum8ERY9Y91VCmi3ASA36luLtq5jd1v5cOA9y+nSreNh638RUKw2Iw== X-Received: by 2002:a17:90a:2305:: with SMTP id f5mr4211221pje.128.1561546968412; Wed, 26 Jun 2019 04:02:48 -0700 (PDT) Received: from localhost.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id c26sm18820920pfr.172.2019.06.26.04.02.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 26 Jun 2019 04:02:47 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Wed, 26 Jun 2019 18:57:59 +0800 Message-Id: <20190626105759.97113-1-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavc/videotoolboxenc: add hdr10, linear, hlg color transfer function for videotoolboxenc X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Limin Wang , kernrj@gmail.com Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Below is the testing ffmpeg command for the setting: ./ffmpeg -i input.ts -c:v hevc_videotoolbox -color_primaries bt2020 -colorspace bt2020_ncl -color_trc smpte2084 smpte2048.ts ./ffmpeg -i input.ts -c:v hevc_videotoolbox -color_primaries bt2020 -colorspace bt2020_ncl -color_trc linear linear.ts ./ffmpeg -i input.ts -c:v hevc_videotoolbox -color_primaries bt2020 -colorspace bt2020_ncl -color_trc arib-std-b67 hlg.ts Signed-off-by: Limin Wang --- configure | 6 ++++++ libavcodec/videotoolboxenc.c | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/configure b/configure index 7cea9d4d73..0a5e940c0c 100755 --- a/configure +++ b/configure @@ -2260,6 +2260,9 @@ TOOLCHAIN_FEATURES=" TYPES_LIST=" kCMVideoCodecType_HEVC kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange + kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ + kCVImageBufferTransferFunction_ITU_R_2100_HLG + kCVImageBufferTransferFunction_Linear socklen_t struct_addrinfo struct_group_source_req @@ -6044,6 +6047,9 @@ enabled videotoolbox && { check_lib coreservices CoreServices/CoreServices.h UTGetOSTypeFromString "-framework CoreServices" check_func_headers CoreMedia/CMFormatDescription.h kCMVideoCodecType_HEVC "-framework CoreMedia" check_func_headers CoreVideo/CVPixelBuffer.h kCVPixelFormatType_420YpCbCr10BiPlanarVideoRange "-framework CoreVideo" + check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_SMPTE_ST_2084_PQ "-framework CoreVideo" + check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_ITU_R_2100_HLG "-framework CoreVideo" + check_func_headers CoreVideo/CVImageBuffer.h kCVImageBufferTransferFunction_Linear "-framework CoreVideo" } check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss diff --git a/libavcodec/videotoolboxenc.c b/libavcodec/videotoolboxenc.c index f8ccdea52d..0dc6eb4cf4 100644 --- a/libavcodec/videotoolboxenc.c +++ b/libavcodec/videotoolboxenc.c @@ -915,6 +915,22 @@ static int get_cv_transfer_function(AVCodecContext *avctx, *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;