2011-01-14 3 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 * 매개 변수로 널 포인터를 전달하는 것처럼 보입니다. 다음과 같이 샘플을 업데이트하고 메시지 루프 확인을 만드는 것처럼 보입니다.

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

시간 콜백은 여전히 ​​동일합니다.

주제 시작에 도움이되는 것처럼 보이지 않지만 다른 사람에게 도움이되기를 바랍니다.

관련 문제