5
我有一個使用AVSampleBufferDisplayLayer播放H264的視頻解碼器,並且一直運行良好,直到我在相同的視圖控制器上滾動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)");
}
});
有沒有辦法讓這個任務優先於滾動Collection View等用戶界面動作?對於缺乏理解的道歉我對IOS很新。