我目前正在开发一个用 monotouch 编写的可以录制视频的概念验证应用程序。我需要调整 CMSampleBuffer 的时间,我找到了一个可以做到这一点的代码,但是它是用 Objective-C 编写的。我试着翻译下面的代码,但我找不到任何映射到这个函数 - CMSampleBufferGetSampleTimingInfoArray,我们如何在monotouch中调用这个函数?以下是在 Objective-C 中调整时间的完整代码:
- (CMSampleBufferRef) adjustTime:(CMSampleBufferRef) sample by:(CMTime) offset
{
CMItemCount count;
CMSampleBufferGetSampleTimingInfoArray(sample, 0, nil, &count);
CMSampleTimingInfo* pInfo = malloc(sizeof(CMSampleTimingInfo) * count);
CMSampleBufferGetSampleTimingInfoArray(sample, count, pInfo, &count);
for (CMItemCount i = 0; i < count; i++)
{
pInfo[i].decodeTimeStamp = CMTimeSubtract(pInfo[i].decodeTimeStamp, offset);
pInfo[i].presentationTimeStamp = CMTimeSubtract(pInfo[i].presentationTimeStamp, offset);
}
CMSampleBufferRef sout;
CMSampleBufferCreateCopyWithNewTiming(nil, sample, count, pInfo, &sout);
free(pInfo);
return sout;
}