Я пытаюсь сделать некоторую фильтрацию живого изображения, как это делают Instagram и Path.Я активно реализовал этот метод:
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
Я использовал сеанс камеры и инфраструктуру CoreImage (я не использовал OpenGL напрямую).В большинстве случаев мое приложение работало бы довольно счастливо без сбоев или сбоев.
Тем не менее, когда я пытаюсь запустить сеанс фильтрации в режиме реального времени, когда мое приложение испытывает некоторую UIView анимацию наэкран.Я бы увидел черный экран в области фильтрации в реальном времени.Кроме того, консоль будет несколько раз печатать что-то вроде этого:
Недопустимая шейдерная программа, возможно, из-за превышения аппаратных ресурсов
И:
Не удалось загрузить ядро!
При возникновении такой ошибки я заметил, что могу исправить ее, просто повторно запустив и заново запустив сеанс камеры.Поэтому, пока мой код будет уведомляться во время выполнения, я мог бы легко исправить ситуацию, просто позволив коду выполнить проверку во время выполнения и, если такая ситуация произойдет, перезапустить сеанс камеры.
Но есть одна большая проблема, когда такие ошибки происходят, мой код не будет уведомлен.Нет обратного вызова, нет сбоя, нет исключения, нет странного нулевого указателя.
Кто-нибудь может помочь?