В настоящее время я работаю над проектом, который включает в себя открытие и получение данных с веб-камеры. В OS X мы используем QTKit вместе с QTCaptureSession для доступа к веб-камере. Модуль, который мы разрабатываем, загружается как плагин некоторым потоком основного процесса, что вызывает следующую проблему:
Метод addInput в QTCaptureSession кажется ждать обработки какого-либо события в «главном цикле». Поскольку основной цикл никогда не запускается основным потоком (это не нативное приложение Какао), поток, вызывающий плагин, зависает навсегда.
Аналогичная проблема была описана в этом сообщение. Одним из предлагаемых решений является добавление основного потока с помощью вызовов CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, YES);
Мы проверили это, и это работает, но приводит к добавлению ненужного (и зависимого от плагина) кода в основное приложение.
Мой вопрос: есть ли способ «разместить» цикл основного события, с которым QTCaptureSession общается внутри плагина? Например: создать какой-нибудь искусственный поток, способный запускать основной цикл и т. Д.
Обратите внимание, что нам нужно заставить это работать на OS X 10.6.
Задача ещё не решена.
Других решений пока нет …