Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite купить дешевый 
компьютер родом из Dhgate.com

Lines Club

Ищем достойных соперников.

Библиотека сайта или "Мой Linux Documentation Project"

Фреймворк GStreamer. Часто задаваемые вопросы. Разработка приложений на основе фреймворка GStreamer

Оригинал: GStreamer FAQ
Авторы: Wim Taymans, Steve Baker, Andy Wingo, Ronald S. Bultje, Stefan Kost
Дата публикации: 27 августа 2014 г.
Перевод: А.Панин
Дата перевода: 5 сентября 2014 г.

7. Разработка приложений на основе фреймворка GStreamer

Вопрос: Как компилировать приложения, которые используют функции фреймворка GStreamer?

Ответ: GStreamer использует утилиту pkg-config для упрощения процесса получения флагов для компиляции и связывания приложений. Утилита pkg-config уже используется такими проектами, как GTK+, GNOME, SDL и другими; поэтому в том случае, если вы знакомы с одним из этих проектов, вы обладаете необходимыми знаниями.

Если же вы не знакомы с методикой использования утилиты pkg-config для компиляции и связывания небольших приложений, код которых размещается в единственном файле, просто передайте аргументы --cflags и --libs утилите pkg-config. Например, это может быть сделано следующим образом:
$ libtool --mode=link gcc `pkg-config --cflags --libs gstreamer-1.0` -o myprog myprog.c
причем этих флагов будет достаточно для приложения, использующего исключительно фреймворк GStreamer. В том же случае, если (к примеру) ваше приложение также использует библиотеки GTK+2.0, вам следует использовать команду компиляции:
$ libtool --mode=link gcc `pkg-config --cflags --libs gstreamer-1.0 gtk+-2.0` -o myprog myprog.c

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

При работе над большими проектами вам придется интегрировать вызовы утилиты pkg-config в ваш файл сборки Makefile или интегрировать инструменты из пакета autoconf с использованием макроса pkg.m4 (задействовав переменную PKG_CONFIG_CHECK).

В: Как вести разработку приложения на основе неустановленной копии компонентов фреймворка GStreamer?

О: Имеется возможность разработки приложений и их компиляции с использованием неустановленной копии ядра фреймворка GStreamer и пакетов его плагинов gst-plugins-* (например, собранной на основе исходного кода, полученного из репозитория git). Это позволит вам разрабатывать приложение и тестировать его на совместимость с новейшей версией фреймворка GStreamer без необходимости ее установки в систему и без конфликтов с установленными в систему компонентами фреймворка GStreamer.

Простейший способ создания такой установки заключается в использовании новейшей версии сценария create-uninstalled-setup.sh.

В случае работы с данным сценарием будет использована новейшая версия исходного кода из ветви gst-uninstalled. После запуска сценария вы переместитесь в окружение, в котором по умолчанию будут использоваться неустановленные инструменты и плагины. Также утилита pkg-config будет определять неустановленные копии программных компонентов перед определением любых установленных копий (и отдавать предпочтение первым).

Несколько неустановленных копий компонентов фреймворка могут использоваться параллельно. Обратитесь к ветви gst-uninstalled для ознакомления с технологией определения используемого окружения.

В: Как следует использовать систему GConf для получения системных настроек?

О: При разработке приложений для окружения рабочего стола GNOME хорошей идеей является использование системы GConf для получения заданных пользователем способов вывода аудио- и видеоданных. Вы можете решить описанную задачу, используя элементы 'gconfaudiosink' и 'gconfvideosink' для вывода аудио- и видеоданных. Они выполнят за вас все операции, связанные с системой GConf и автоматически задействуют элементы для вывода аудио- и видеоданных, установленные пользователем. В том случае, если вы используете элемент gconfaudiosink, ваше приложение должно устанавливать значение свойства 'profile'.

В: Как производить отладку забавных сценариев оболочки, генерируемых утилитой libtool?

О: При связывании приложения с неустановленной копией компонентов фреймворка GStreamer с использованием утилиты libtool происходит генерация забавных сценариев для модификации ваших путей поиска разделяемых библиотек и последующего запуска вашего приложения. К примеру, для отладки приложения gst-launch вы можете попробовать использовать команду:
libtool --mode=execute gdb /путь/к/gst-launch

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

В: Почему интенсивность отправки писем в список рассылки gstreamer-devel настолько мала?

О: Нашей главной ареной для координации действий и организации дискуссий является канал в сети IRC, а не список рассылки. Вы можете найти нас на канале #gstreamer сервера irc.freenode.net. При необходимости обсуждения более масштабных вопросов или ознакомления с мнением большего количества людей отправка электронного письма в список рассылки gstreamer-devel также не является плохой идеей.

В: Какую схему версий использует фреймворк GStreamer?

О: Для публичных выпусков фреймворка GStreamer используется стандартная схема версий: ВЕРСИЯ.ПОДВЕРСИЯ.МИКРОВЕРСИЯ. В том случае, если выпуск состоит по большей части из исправлений ошибок или последовательных изменений, увеличивается номер МИКРОВЕРСИИ. В том случае, если выпуск содержит значительные изменения, увеличивается номер ПОДВЕРСИИ. В том же случае, если внесенные изменения удивляют нас самих, мы можем увеличить даже номер ВЕРСИИ. Хотя вам и не следует ожидать этого.

В течение цикла разработки фреймворк GStreamer также использует четвертую или НАНОВЕРСИЮ. В том случае, если номер этой версии равен 1, данная версия исходного кода является разрабатываемой версией из репозитория git. Любой архив или пакет с номером НАНОВЕРСИИ, равным 1, создается на основе кода из репозитория git и, следовательно, его поддержка не осуществляется. К тому же, в том случае, если вы получили этот архив или пакет не от участников команды разработчиков проекта GStreamer, не питайте иллюзий о том, что он будет выполнять все необходимые задачи.

В том случае, если номер НАНОВЕРСИИ равен или больше 2, данная версия исходного кода является официальной версией исходного кода для предварительного выпуска, созданной в процессе подготовки полноценного выпуска. Ваша помощь, заключающаяся в тестировании компонентов фреймворка, созданных на основе исходного кода из этих архивов и пакетов, очень ценна.

В: Какой стиль оформления кода используется в рамках проекта GStreamer?

О: Код ядра фреймворка и практических всех плагинов оформлен в соответствии с рекомендациями, изложенными в книге K&R с отступами длиной в два знака. Просто оформляйте свой код по аналогии с существующим и все будет в порядке.

Код отдельных плагинов из пакета gst-plugins-* или код плагинов, которые вы планируете предоставить для проверки и последующего включения в состав одного из модулей gst-plugins-*, должен быть оформлен в одном стиле. С кодом проще работать тогда, когда он последователен. Последовательность, разумеется, является нашей целью.

Вам следует просто обрабатывать ваш код (исключительно файлы с расширением *.c, а не все файлы, включая заголовочные) с помощью утилиты indent
indent \
  --braces-on-if-line \
  --case-brace-indentation0 \
  --case-indentation2 \
  --braces-after-struct-decl-line \
  --line-length80 \
  --no-tabs \
  --cuddle-else \
  --dont-line-up-parentheses \
  --continuation-indentation4 \
  --honour-newlines \
  --tab-size8 \
  --indent-level2

перед отправкой патча. (В данном случае используется утилита indent от проекта GNU). Также в дереве исходного кода ядра фреймворка GStreamer в директории tools присутствует сценарий gst-indent, который является оберткой для упомянутой утилиты и использует новейшую комбинацию аргументов. Простейшим способом корректной расстановки отступов, вероятно, является разработка исходного кода с использованием копии существующего исходного кода из репозитория git. Локальная функция, вызываемая перед добавлением изменений в локальный репозиторий, будет заботиться о корректном использовании отступов. Мы требуем использования отступов исключительно в файлах кода, при этом в заголовочных файлах отступы могут добавляться вручную для лучшей читаемости (при этом для создания отступов используйте, пожалуйста, пробелы, а не символы табуляции, даже при разработке заголовочных файлов).

При наличии возможностей мы пытаемся придерживаться духа объектной модели GObject и использовать аналогичные идиомы форматирования кода.

Патчи должны создаваться на основе кода из ветви master репозитория исходного кода git или новейшего выпуска исходного кода и должны использовать формат 'унифицированного контекста' (для их создания используйте команду diff -u -p). Они должны прикрепляться к сообщению об ошибке (или предложению о реализации возможности) в рамках системы отслеживания ошибок bugzilla, а не отправляться в список рассылки. Также следует обратиться к странице 'SubmittingPatches' wiki проекта GStreamer.

В: Я перевел один из файлов .po модуля на новый язык. Что мне сделать для того, чтобы его включили в комплект поставки фреймворка GStreamer?

О: Управление всеми переводами, использующимися в рамках проекта GStreamer, осуществляется в рамках проекта Translation Project (http://translationproject.org). На странице http://translationproject.org/html/translators.html приведены инструкции, описывающие процедуру вхождения в команду переводчиков проекта Translation Project и отправки новых переводов.

Новые переводы, предоставляемые переводчиками проекта Translation Project, периодически добавляются разработчиками в репозиторий git путем выполнения команды 'make download-po' для различных модулей.


Следующий раздел : Правовые аспекты использования фреймворка GStreamer.


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют