HDR video metadata

On an iOS 18 phone, I use AVCaptureSession to capture HDR with x420 format. The output CMSampleBuffer is HLG colorspace, the propagated attachments contain kCVImageBufferAmbientViewingEnvironmentKey and kCVImageBufferSceneIlluminationKey. Now I use CAMetalLayer to render the CVPixelBuffer to the screen, but the brightness is brighter than AVSampleBufferDisplayLayer.

Here is my code.

- (void)_updateColorSpaceIfNeed:(CVPixelBufferRef)pixelBuffer {    
    CAMetalLayer *layer = (CAMetalLayer *)_mtkView.layer;
    if (![layer isKindOfClass:CAMetalLayer.class]) return;
    
    layer.wantsExtendedDynamicRangeContent = YES;

    CFDataRef ambientViewingEnvironment = (CFDataRef)CVBufferCopyAttachment(pixelBuffer, kCVImageBufferAmbientViewingEnvironmentKey, NULL);
    NSData *data = (__bridge NSData *)ambientViewingEnvironment;
    if (ambientViewingEnvironment) CFRelease(ambientViewingEnvironment);
    
    CAEDRMetadata *metadata = [CAEDRMetadata HLGMetadataWithAmbientViewingEnvironment:data];
    // CAEDRMetadata *metadata  = [CAEDRMetadata HLGMetadata];
    layer.EDRMetadata = metadata;

    layer.pixelFormat = MTLPixelFormatRGBA16Float;

    CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceITUR_2100_HLG);

    layer.colorspace = colorspace;

    if (colorspace) CGColorSpaceRelease(colorspace);
}

Why does the CAEDRMetadata class have "HLGMetadataWithAmbientViewingEnvironment:" and "HLGMetadata" methods, but does not provide the "HLGMetadataWithAmbientViewingEnvironment:sceneIllumination" method?

I want to know how kCVImageBufferAmbientViewingEnvironmentKey and kCVImageBufferSceneIlluminationKey affect tone mapping. Is there any documentation I can refer to?

HDR video metadata
 
 
Q