Мой QTKit вылетает при открытии меню.За эту проблему отвечает кодировка JVT - Lib (H.264).Что я могу сделать? - PullRequest
2 голосов
/ 10 февраля 2011

Я использую H.264 кодировку, используя QTKit в моем приложении.

Это приложение всегда вылетает с "segmentation fault" или "EXEC_BAD_ACCESS".

Мой отладчик показывает сбой в этом месте:

0x7fff801fea94:  je     0x7fff801feba6           ; JVTLib_101906(JVTLib_100990*, JVTLib_101383 const*, JVTLib_101895*) + 3886

( ... )

0x7fff801feaba:  movl   $1, 24(%r13)

Последняя строка "movl" вызывает сбой. В комментарии видно, что это модуль JVT от кодера H.264 (я полагаю).

Чего я не понимаю, так это: мой код работал долгое время. Со вчерашнего дня это нестабильно. Если я использую «Инструменты», код работает нормально. Так что должна быть какая-то проблема с появлением меню. Раскомментирование видео работает нормально (это значит, что в меню нет проблем с памятью)

Понимание "магии" за QTKit было бы захватывающим.

Редактировать: теперь я вижу имена объектов: сбой происходит в потоке 'QTBackgroundQueueRun', а объект: 'PBRemoveObjectInternal(FSRefParam*, unsigned char) '

РЕШЕНИЕ: Привет всем. Я наконец нашел проблему! Это был долгий и трудный поиск Гула и Ко.

QTKit не нравится, когда бин прерывается таймерами. Если вы скомпилируете свой проект в режиме «Отладка» с включенными символами отладки и, например, с запуском GDB, приложение будет аварийно завершено!

NSLog работает в режиме «Release». Для большинства проблем отладки это будет работать. Поэтому, если вам нужно «действительно» отладить ваш код, добавьте некоторые определения makro в настройки вашего проекта, где удаляется весь связанный с QTCaptureMovieFileOutput код. И вы сделали. Интересно, почему QTKit так чувствителен к этим вещам. Но, как мы все знаем, Quicktime - очень старый код, и Apple модернизирует Quicktime X. Поэтому мы все можем надеяться на лучшие релизы в следующий раз.

...