«Не удалось загрузить ядро» при запуске сеанса камеры и попытке выполнить фильтрацию в реальном времени

Я пытаюсь выполнить фильтрацию изображения в реальном времени, как то, что делает Instagram и Path. Я в значительной степени реализовал этот метод:

-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { 

Я использовал сеанс камеры и структуру CoreImage (я не использовал OpenGL напрямую). В большинстве случаев мое приложение будет работать довольно успешно без сбоев или икоты.

Однако, когда я пытаюсь запустить сеанс живой фильтрации, когда мое приложение проходит анимацию UIView на экране. Я бы увидел черный экран в области фильтрации в реальном времени. Кроме того, консоль будет печатать несколько раз, как это:

Недопустимая шейдерная программа, возможно, из-за превышения аппаратных ресурсов

А также:

Не удалось загрузить ядро!

Когда такая ошибка возникает, я заметил, что могу исправить ее, просто перезапустив и заново запустив сеанс моей камеры. Поэтому, пока мой код будет уведомлен во время выполнения, я мог бы легко исправить ситуацию, просто позволив коду выполнить проверку во время выполнения, и если такая ситуация произойдет, заново запустите сеанс камеры.

Но есть одна большая проблема, когда такие ошибки возникают, мой код не будет уведомлен. Там нет перезвона, нет никакого сбоя, нет никакого исключения, нет странного указателя nil.

Кто-нибудь может помочь?

«Ядро», о котором идет речь, не ядро ​​iOS, а ядро ​​OpenCL. Он встречается в OpenCL.framework (общедоступный в OS X, но закрытый в iOS, доступный с iOS 5). Поскольку он является частным, вы, скорее всего, застряли здесь. Инициализация OpenCL занимает значительную часть системных ресурсов. Хорошим подходом является взаимное исключение (mutex) доступа к экрану, удерживая его, когда вы находитесь в анимации UIView.

Надеюсь это поможет,

TG

  • Обращение iOS openGL инвертируется
  • Преобразование RGBA в ARGB (glReadPixels -> AVAssetWriter)
  • Определенные размеры фреймбуферов выходят из строя на устройствах iOS (GL_FRAMEBUFFER_UNSUPPORTED)
  • Добавление поддержки отображения сетчатки в OpenGL ES, не рисующем ничего
  • Является ли iOS glGenerateMipmap синхронным или возможно асинхронным?
  • Конфликт на OpenGLES на iOS
  • Игра ios делает эффект слоя маски
  • Каков самый быстрый способ загрузки сжатых изображений в iOS?
  • GLSL ES эквивалентен ключевому слову OpenGL GLSL 'out'?
  • CABasicAnimation не меняет свое свойство позиции после завершения анимации
  • Сцена SCNRender с анимированными объектами
  • Давайте будем гением компьютера.