1 (02.01.2012 03:52:46 отредактировано Yana)

Тема: Приложение с использованием плагинов

Я работаю над приложением, превращающим N900 в носимый компьютер - устройство, позволяющее помимо прочего (сорри за неуклюжую фразу) "погрузиться в дополненную реальность". Сейчас написан блок GPS-навигатора, блок работы с внешней камерой, блок работы с внешним пультом управления. Можно было бы начать писать и другие блоки - работу с дополненной реальностью, блок поддержки телефонных функций, реализацию медиаплееера и пр. Но я хочу переписать свое приложение так, чтобы оно было расширяемым - чтобы любой желающий мог дополнить программу нужным функционалом, написав плагин.

Посоветуйте, в каком направлении было бы правильнее "копать" - в направлении QPlugin или стандартного линуксного механизма подгрузки плагинов? С QPlugin я не работала, а Си-шные плагины к собственному линукс-приложению когда-то писать доводилось. А еще мне советовали посмотреть в сторону фреймворка GStreamer.

Поделиться

2 (12.04.2012 15:43:09 отредактировано Long)

Re: Приложение с использованием плагинов

Я бы не стал заморачиваться использованием QPluginLoader, если вы ведете речь о нем. В принципе, это обычный динамический загрузчик, который делает некоторое количество полезных для Qt действий (проверяет совместимость версий Qt, вытаскивает ссылку на root-QObject и т.д.). Скорее всего все это вам не надо, а зависимость от Qt в этом месте вы приобретаете.

Копать в сторону "стандартного линуксового" особо-то и нечего, dlopen()/dlsym()/dlclose()/PIC/extern C, вот и вся нехитрая арифметика. Тут вопрос больше встанет в создании стабильного и расширяемого с обратной совместимостью API к этим плагинам, и задача эта от выбора динамического загрузчика особо не зависит.

А, еще заметил про GStreamer. А его-то вы с какой целью планируете использовать? Это узкоспециализированный фреймворк, по большому счету, инспирированный DirectShow. Представляет собой цепочки из источников, приемников и кодеков и фильтров между ними, используется для воспроизведения аудио и видео. Боюсь, для задачи плагиностроения в общем он совсем не подходит.

Поделиться

3

Re: Приложение с использованием плагинов

Спасибо за развернутый ответ smile Собственно, сейчас мы перешли от плагинного варианта к сообществу отдельных приложений, взаимодействующих между собой через DBus. Что касается GStreamer'а - сначала он казался подходящим вариантом для организации и обработки аудио/видеопотоков, но сейчас мы про него как-то забыли - не пригодился smile

Поделиться

4

Re: Приложение с использованием плагинов

Yana Нет, ну отчего же. DBus - тема классная для обмена данными, нетребовательными к полосе пропускания, но оно не везде подходит. Когда применяют подобный подход к мультимедиа-потокам, получается, простите, Phonon big_smile
Иногда требуется воткнуть модуль в одно адресное пространство с управляющим процессом.

+ открыть спойлер

Я, кстати, обратил внимание, что вы недостаточно внимания уделяете ffmpeg'у, а в некоторых узких областях это весьма перспективная штука, несмотря на убогость архитектуры.

Поделиться

5

Re: Приложение с использованием плагинов

Long пишет:

Yana Нет, ну отчего же. DBus - тема классная для обмена данными, нетребовательными к полосе пропускания, но оно не везде подходит.

Архитектура системы пока в процессе обсуждения - так что было бы весьма интересно услышать Ваши рекомендации smile Параллельно выработке архитектурного решения пишутся прикладные приложения, разрабатываются периферийные железки. В апреле, надеюсь, начнем работу не с прототипом, а с релизным девайсом.

Long пишет:

Я, кстати, обратил внимание, что вы недостаточно внимания уделяете ffmpeg'у, а в некоторых узких областях это весьма перспективная штука, несмотря на убогость архитектуры.

Надо будет к нему присмотреться smile

Сейчас отправлю сообщение личкой.

Поделиться