私は現在、ビデオを録画するモノタッチで書かれた概念実証アプリに取り組んでいます。CMSampleBuffer の時間を調整する必要があります。それを行うコードを見つけましたが、Objective-C で記述されています。以下のコードを翻訳してみましたが、この関数へのマッピングが見つかりません - CMSampleBufferGetSampleTimingInfoArray、モノタッチでこの関数をどのように呼び出すのでしょうか? 以下は時間を調整するための完全なコードですが、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;
}