Иногда примерный буферный делегат не вызывается в приложении iOS - PullRequest
0 голосов
/ 27 февраля 2019

Я сделал пример проекта, который использует буфер примеров в этом проекте, все в порядке.но затем я добавил эти файлы в существующий проект.Затем я представляю видеоконтроллер.В начале 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 не вызывается через несколько секунд.

...