5
나는 AVSampleBufferDisplayLayer를 사용하여 H264를 재생하는 비디오 디코더를 가지고 있으며 동일한 View Controller에서 UICollectionViewController를 스크롤 할 때까지 모든 것이 잘 작동합니다. 앱이 다운되는 주요 스레드가 차단 된 것으로 보입니다. dispatch_async를 사용하여 별도의 큐에있는이 코드를 블록에 넣으려고 시도했지만 디코더의 성능 문제와 함께 여전히 동일한 차단 문제가 있습니다.스크롤 UICollectionView 메인 스레드
dispatch_async(sampleQueue, ^{
[sampleBufferQueue addObject:(__bridge id)(sampleBuffer)];
if ([avLayer isReadyForMoreMediaData]) {
CMSampleBufferRef buffer = (__bridge CMSampleBufferRef)([sampleBufferQueue objectAtIndex:0]);
[sampleBufferQueue removeObjectAtIndex:0];
[avLayer enqueueSampleBuffer:buffer];
buffer = NULL;
NSLog(@"I Frame");
[avLayer setNeedsDisplay];
while ([sampleBufferQueue count] > 0 && [avLayer isReadyForMoreMediaData]) {
CMSampleBufferRef buffer = (__bridge CMSampleBufferRef)([sampleBufferQueue objectAtIndex:0]);
[sampleBufferQueue removeObjectAtIndex:0];
[avLayer enqueueSampleBuffer:buffer];
buffer = NULL;
NSLog(@"I Frame from buffer");
[avLayer setNeedsDisplay];
}
}
else {
NSLog(@"AVlayer Not Accepting Data (I)");
}
});
이 작업에 콜렉션 뷰를 스크롤하는 것과 같은 사용자 인터페이스 동작보다 우선 순위를 부여 할 수있는 방법이 있습니까? 이해 부족에 대한 사과 나는 IOS에 합리적으로 새로운입니다.