https://developer.apple.com/documentation/coremedia/1489414-cmsamplebuffercreateforimagebuff
Creates a sample buffer with an image buffer and a callback to make the data ready for use.
이미지 버퍼와 사용을 위한 데이터 준비 콜백을 사용해서 샘플 버퍼를 생성합니다.
func CMSampleBufferCreateForImageBuffer(
allocator: CFAllocator?,
imageBuffer: CVImageBuffer,
dataReady: Bool,
makeDataReadyCallback: CMSampleBufferMakeDataReadyCallback?,
refcon makeDataReadyRefcon: UnsafeMutableRawPointer?,
formatDescription: CMVideoFormatDescription,
sampleTiming: UnsafePointer<CMSampleTimingInfo>,
sampleBufferOut: UnsafeMutablePointer<CMSampleBuffer?>
) -> OSStatus
allocator
CMSampleBuffer
객체 할당을 위해 사용하는 할당자입니다. kCFAllocatorDefault
를 전달해 기본값 할당자를 사용합니다.
imageBuffer
미디어 데이터를 위한 CVImageBuffer
입니다. 컨텐트가 렌더되지 않은 것을 갖고 있는 CVImageBuffer
가 될 수 있으며, 미디어 데이터를 이미 포함하고 있는(dataReady
가 true
인 경우여야 함) CVImageBuffer
가 될 수도 있습니다. NULL
은 아닐 것입니다.
dataReady
CVImageBuffer
가 이미 미디어 데이터를 포함하고 있는지 여부를 나타냅니다.
makeDataReadyCallback
데이터가 준비될 수 있도록 CMSampleBufferMakeDataReady(_:)
가 호출해야 하는 콜백입니다.
makeDataReadyRefcon
Refcon CMSampleBufferMakeDataReady(_:)
가 콜백으로 전달해야 합니다.
formatDescription
미디어 데이터 포맷의 설명입니다. 제약에 대한 설명알 참고하시기 바랍니다. NULL
은 아닐 것입니다.
sampleTiming
CVImageBuffer
에 의해 나타나는 미디어에 대한 타이밍 정보를 제공하는 CMSampleTimingInfo
구조체입니다.
sBufOut
아웃풋 시점에 CVImageBuffer
를 포함하는 새롭게 생성된 CMSampleBuffer
를 가리킵니다.
결과 코드입니다. Sample Buffer Error Codes를 보시기 바랍니다.
Sample Buffer Error Codes
https://developer.apple.com/documentation/coremedia/cmsamplebuffer/1495039-sample_buffer_error_codes
여러 샘플을 참조할 수 있는 CMBlockBuffer
와 달리 CVImageBuffer
는 오직 하나의 샘플만을 참조할 수 있도록 정의됩니다. 그렇기 때문에 이 루틴은 CMSampleBufferCreate
보다 더 적은 파라미터를 갖습니다. CMSampleBufferCreate
에 대한 벡터인 샘플 타이밍 정보는 이 루틴에서 오직 하나의 값만을 구성합니다. 샘플 크기의 컨셉여느 CVImageBuffers
에 적용하지 않습니다. CMSampleBufferGetSampleSizeArray(_:entryCount:arrayToFill:entriesNeededOut:)
가 kCMSampleBufferError_BufferHasNoSampleSizes
를 반환하는 것과 유사하며, CMSampleBufferGetSampleSize(_:at:)
이 0을 반환하는 것과 유사합니다.
CVImageBuffer
가 시각적 데이터를 가지고 있기 때문에 제공된 포맷 설명은 CMVideoFormatDescription
입니다. 포맷 설명은 특성과 일치해야 하며, CVImageBuffer
에 붙은 형식 정보와 일치해야 합니다. 넓이, 높이, codecType
은 일치해야 합니다(CVPixelBuffer
에 대해서 코닥 타입은 CVPixelBufferGetPixelFormatType(pixelBuffer)
에 의해 주어지며, 다른 CVImageBuffer
의 경우 codecType
은 0이 되어야 함). 포맷 설명 확장은 CMVideoFormatDescriptionGetExtensionKeysCommonWithImageBuffers
에 의해 반환되는 리스트에 있는 모든 키에 대한 이미지 버퍼 첨부와 일치해야 합니다. 둘 중 한 가지에 없는 경우 둘 모두에 있어야 합니다.