CVBufferSetAttachment 到底做了什么?

问题描述 投票:0回答:0

我理解 CVBufferSetAttachment 只是将元数据附件附加到字典中的样本缓冲区。但是我发现附加本质上矛盾的元数据没有错误。例如,对于在 HDR 模式下从相机接收到的 YUV422 10 位双平面格式的样本缓冲区,以下两项均成功:

 CVBufferSetAttachment(testPixelBuffer!, kCVImageBufferColorPrimariesKey, kCVImageBufferColorPrimaries_ITU_R_2020, .shouldPropagate)
            
 CVBufferSetAttachment(testPixelBuffer!, kCVImageBufferTransferFunctionKey, kCVImageBufferTransferFunction_ITU_R_2100_HLG, .shouldPropagate)
            
 CVBufferSetAttachment(testPixelBuffer!, kCVImageBufferYCbCrMatrixKey, kCVImageBufferYCbCrMatrix_ITU_R_2020, .shouldPropagate)

CVBufferSetAttachment(testPixelBuffer!, kCVImageBufferColorPrimariesKey, kCVImageBufferColorPrimaries_ITU_R_709_2, .shouldPropagate)
             
CVBufferSetAttachment(testPixelBuffer!, kCVImageBufferTransferFunctionKey, kCVImageBufferTransferFunction_ITU_R_709_2, .shouldPropagate)
                
CVBufferSetAttachment(testPixelBuffer!, kCVImageBufferYCbCrMatrixKey, kCVImageBufferYCbCrMatrix_ITU_R_709_2, .shouldPropagate)

因此可以将颜色原色和传递函数设置为 BT.709 格式,用于 10 位 HDR 中的样本缓冲区。当任一示例缓冲区附加到 AVAssetWriter 时,我没有看到任何错误。我想知道附件实际上是如何工作的以及 AVFoundation 如何解决矛盾?

ios avfoundation avassetwriter cvpixelbuffer cmsamplebuffer
© www.soinside.com 2019 - 2024. All rights reserved.