I am trying to use the new API CAEDRMetadata.hlg(ambientViewingEnvironment:)
introduced in iOS 17.0. Since ambientViewingEnvironmentData is dynamic, I understand the edrMetaData of CAMetalLayer needs to be set on every draw call. But doing so causes CAMetalLayer to freeze and even crash.
if let pixelBuffer = image.pixelBuffer, let aveData = pixelBuffer.attachments.propagated[kCVImageBufferAmbientViewingEnvironmentKey as String] as? Data {
if #available(iOS 17.0, *) {
metalLayer.edrMetadata = CAEDRMetadata.hlg(ambientViewingEnvironment: aveData)
} else {
// Fallback on earlier versions
}
}