Я сделал пример проекта, который использует буфер примеров в этом проекте, все в порядке.но затем я добавил эти файлы в существующий проект.Затем я представляю видеоконтроллер.В начале captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer
вызывается, но после этого не вызывается.Я не знаю, связано ли это с использованием памяти, но это 215 МБ.Я также проверил предупреждение памяти, переопределив метод didReceiveMemoryWarning
, но он не вызывается.
- (void)captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
{
dispatch_async( dispatch_get_main_queue(), ^{
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CGFloat frame_height = CVPixelBufferGetWidth(pixelBuffer);
CGRect vRect = CGRectMake(self.v.frame.origin.y * frame_height,
self.v.frame.origin.x ,
self.v.frame.size.height ,
self.v.frame.size.width);
});
}
Создание vRect в dispatch_async
вызывает это:
Поток 1: EXC_BAD_ACCESS (код = 1, адрес = 0xeba6d0dd0)
И когда я не пишу этот код в dispatch_async
captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer
не вызывается через несколько секунд.