2011-01-14 5 views
3

Reading the documentation iOS SDK CMBufferQueueCreateについては、getDurationとバージョンが必要であり、他のすべてのコールバックはNULLになると言われています。CMBufferQueueCreateに必要なパラメータは何ですか?

しかし、次のコードを実行している:timeCallbackと

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); 

CMBufferQueueRef* queue; 

キューの作品は(キュー= 0)は失敗し、ステータスを返す:

CMTime timeCallback(CMBufferRef buf, void *refcon){ 
    return CMTimeMake(1, 1); 
} 

とキューですof:

kCMBufferQueueError_RequiredParameterMissing = -12761, 

callbacks変数は正しく初期化されています。少なくとも、デバッガはそう言います。

CMBufferQueueは誰でも使用していますか?

答えて

1

おそらくパラメータに問題はありません。あなたが書いたものと少なくとも同じものが、CMBufferQueue.hに必要なパラメータについて記述されています。しかし、CMBufferQueueRef *パラメータとしてnullポインタを渡しているようです。私はあなたのサンプルを次のように更新しました。メッセージループOKを作成するようです。

CMBufferQueueRef queue; 
CFAllocatorRef allocator = kCFAllocatorDefault; 
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); 

タイムコールバックは同じです。

トピックスターターに役立つようには見えませんが、他の人に役立つことを願っています。

関連する問題