Contents

CMSampleBufferGetOutputSampleTimingInfoArray(_:entryCount:arrayToFill:entriesNeededOut:)

Retrieves an array of output timing information structures that represents each sample in a sample buffer.

Declaration

func CMSampleBufferGetOutputSampleTimingInfoArray(_ sbuf: CMSampleBuffer, entryCount timingArrayEntries: CMItemCount, arrayToFill timingArrayOut: UnsafeMutablePointer<CMSampleTimingInfo>?, entriesNeededOut timingArrayEntriesNeededOut: UnsafeMutablePointer<CMItemCount>?) -> OSStatus

Parameters

  • sbuf:

    The CMSampleBuffer being interrogated.

  • timingArrayEntries:

    Number of entries in timing array.

  • timingArrayOut:

    On output, points to an array of CMSampleTimingInfo structs to receive the timing info.

  • timingArrayEntriesNeededOut:

    Number of entries needed for the result.

Return Value

A result code. See Sample Buffer Error Codes.

Discussion

If only one CMSampleTimingInfo struct is returned, it applies to all samples in the buffer.See documentation of CMSampleTimingInfo for details of how a single CMSampleTimingInfo struct can apply to multiple samples. The timingArrayOut must be allocated by the caller, and the number of entries allocated must be passed in timingArrayEntries. If timingArrayOut is NULL, timingArrayEntriesNeededOut will return the required number of entries. Similarly, if *timingArrayEntriesNeededOut is too small, CMSampleBuffer will be returned, and timingArrayEntriesNeededOut will return the required number of entries. In either case, the caller can then make an appropriately-sized timingArrayOut and call again. For example, the caller might pass the address of a CMSampleTimingInfo struct on the stack (as timingArrayOut), and 1 as timingArrayEntries. If all samples are describable with a single CMSampleTimingInfo struct (or there’s only one sample in the CMSampleBuffer), this call will succeed. If not, it will fail, and will return the number of entries required in timingArrayEntriesNeededOut. Only in this case will the caller actually need to allocate an array. If there’s no timingInfo in this CMSampleBuffer, CMSampleBuffer will be returned, and *timingArrayEntriesNeededOut will be set to 0.

See Also

Inspecting Duration and Timing