阅读有关iOS SDK CMBufferQueueCreate
的文档,可以看到说getDuration
和版本是必需的,而其他所有回调函数都可以为NULL。
但是运行以下代码:
CFAllocatorRef allocator;
CMBufferCallbacks *callbacks;
callbacks = malloc(sizeof(CMBufferCallbacks));
callbacks->version = 0;
callbacks->getDuration = timeCallback;
callbacks->refcon = NULL;
callbacks->getDecodeTimeStamp = NULL;
callbacks->getPresentationTimeStamp = NULL;
callbacks->isDataReady = NULL;
callbacks->compare = NULL;
callbacks->dataBecameReadyNotification = NULL;
CMItemCount capacity = 4;
OSStatus s = CMBufferQueueCreate(allocator, capacity, callbacks, queue);
NSLog(@"QUEUE: %x", queue);
NSLog(@"STATUS: %i", s);
使用 timeCallback:
CMTime timeCallback(CMBufferRef buf, void *refcon){
return CMTimeMake(1, 1);
}
队列为:
CMBufferQueueRef* queue;
队列创建失败(queue = 0),并返回以下状态:
kCMBufferQueueError_RequiredParameterMissing = -12761,
callbacks
变量已正确初始化,至少调试器是这么说的。
有人使用过CMBufferQueue
吗?