public void DidCaptureSampleBuffer(CMSampleBuffer sampleBuffer) { if (sampleBuffer.NumSamples != 1 || !sampleBuffer.IsValid || !sampleBuffer.DataIsReady) { return; } var pixelBuffer = sampleBuffer.GetImageBuffer() as CVPixelBuffer; if (pixelBuffer == null) { return; } var rtcPixelBuffer = new RTCCVPixelBuffer(pixelBuffer); var timeSpanNS = (long)(sampleBuffer.PresentationTimeStamp.Seconds * 1000); var videoFrame = new RTCVideoFrame(rtcPixelBuffer, RTCVideoRotation.Rotation0, timeSpanNS); Delegate?.Capturer(this, videoFrame); }