Библиотека сайта rus-linux.net
Фреймворк GStreamer. Руководство разработчика приложений. Вещи, на которые стоит обратить внимание при разработке приложения
Оригинал: GStreamer Application Development ManualАвторы: Wim Taymans, Steve Baker, Andy Wingo, Ronald S. Bultje, Stefan Kost
Дата публикации: 21 мая 2014 г.
Перевод: А.Панин
Дата перевода: 23 июня 2014 г.
Глава 23. Вещи, на которые стоит обратить внимание при разработке приложения
В данной главе содержится разрозненная подборка советов, которые могут оказаться полезными при разработке приложений на основе фреймворка GStreamer. Подход к использованию изложенной в данной главе информации полностью зависит от вас. Мы кратко обсудим методику отладки конвейера для поиска проблем в приложениях на основе фреймворка GStreamer. Кроме того, мы затронем способы получения информации о плагинах и элементах, а также обсудим методику тестирования простых конвейеров перед созданием приложений на их основе.
23.1. Хорошие манеры программирования
- Всегда устанавливайте обработчик сообщений для объекта шины сообщений типа
GstBus
. Также следует всегда сообщать пользователю об ошибках в вашем приложении и пытаться сделать что-либо с предупреждениями и информационными сообщениями. - Всегда проверяйте значения, возвращаемые функциями фреймворка GStreamer. В частности, особенно внимательно следует относиться к проверке значений, возвращаемых функциями
gst_element_link ()
иgst_element_set_state ()
. - Разыменовывайте указатели на все не относящиеся к базовым типам значения, возвращаемые такими функциями, как
gst_element_get_pad ()
. Также всегда освобождайте память, зарезервированную для хранения непостоянных строковых значений, возвращаемых такими функциями, какgst_object_get_name ()
. - Всегда используйте объект вашего конвейера для отслеживания его текущего состояния. Не используйте для этих целей специальные переменные вашего приложения. Также не обновляйте состояние вашего пользовательского интерфейса в тот момент, когда пользователь нажимает кнопку "воспроизведение". Вместо этого следует ожидать доставки сообщения об изменении состояния "state-changed" посредством шины сообщений типа
GstBus
и обновлять состояние пользовательского интерфейса только тогда, когда это сообщение будет принято. - Сообщайте обо всех ошибках, с которыми вы столкнетесь в ходе работы с фреймворком GStreamer, в систему отслеживания ошибок bugzilla, расположенную по адресу http://bugzilla.gnome.org/.
23.2. Отладка
Приложения могут использовать мощную систему отладки фреймворка GStreamer для выявления причин проблем, возникающих при работе конвейера. Элементы будут передавать этой системе данные о своих действиях для занесения их в журнал активности. Описываемая система отладки не предназначена для сбора сообщений об ошибках, но очень полезна для отслеживания того, что именно делает элемент, и, следовательно, может оказаться очень полезной при выявлении причин проблем, возникающих в ходе работы приложений (таких, как неудачные перемещения в потоке, отсутствие синхронизации мультимедийных потоков, и т.д.).
--gst-debug=СПИСОК
с соответствующим набором значений списка. Список состоит из разделенных запятыми пар категория/уровень, с помощью которых может устанавливаться уровень отладки для определенной категории отладки. Например, параметр --gst-debug=oggdemux:5
позволит активировать режим отладки элемента демультиплексирования потока данных формата Ogg. При записи параметров вы также можете использовать шаблоны. Уровень отладки 0 приведет к деактивации режима отладки, а уровень отладки 9 - к активации всех возможностей отладки. Промежуточные значения активируют только некоторые возможности отладки (в качестве критерия используется важность сообщений; уровень 2, к примеру, позволит выводить исключительно сообщения об ошибках и сообщения с предупреждениями). Ниже приведен список всех доступных параметров:
--gst-debug-help
выведет все доступные категории отладки и завершит работу приложения.--gst-debug-level=УРОВЕНЬ
установит стандартный уровень отладки (который может находиться в диапазоне от 0 (без вывода данных) до 9 (вывод всех данных)).--gst-debug=СПИСОК
принимает разделенный запятыми список из пар имя_категории:уровень_отладки, предназначенных для установки определенных уровней отладки для отдельных категорий. Пример:GST_AUTOPLUG:5,avidemux:3
. Альтернативное решение заключается в использовании переменной окруженияGST_DEBUG
, которая позволяет выполнять такую же операцию.--gst-debug-no-color
отключает цвета в выводе данных отладки. Вы также можете установить значение 1 переменной окружения GST_DEBUG_NO_COLOR в том случае, если хотите произвести отключение цветов в выводе данных отладки на постоянной основе. Учтите, что в том случае, если вы отключаете цвета в выводе данных отладки для того, чтобы избежать путаницы при выводе фрагментов потока данных с помощью специальной программы, следует попробовать выводить данные с помощью команды less -R.--gst-debug-color-mode=РЕЖИМ
изменяет режим использования цветов в выводе журнала отладки. Строка"РЕЖИМ"
может быть заменена на один из следующих идентификаторов режима:on
,off
,auto
,disable
,unix
. Вы также можете установить значение переменной окружения GST_DEBUG_COLOR_MODE в том случае, если хотите изменить режим использования цветов при выводе данных отладки на постоянной основе. Учтите, что в том случае, если отключаете цвета в выводе данных отладки для того, чтобы избежать путаницы при выводе фрагментов потока данных с помощью специальной программы, следует попробовать выводить данные с помощью команды less -R.--gst-debug-disable
деактивирует все возможности отладки.--gst-plugin-spew
включает вывод сообщений об ошибках, возникающих в процессе загрузки плагинов фреймворка GStreamer.
23.3. Плагины для преобразования форматов
Фреймворк GStreamer содержит множество плагинов для преобразования форматов, которые могут оказаться полезными для реализации функций большинства приложений. В частности, это плагины для изменения размера изображения (videoscale), преобразования цветового пространства (videoconvert), преобразования аудиоформата и изменения количества каналов (audioconvert), а также изменения скорости потока сэмплов (audioresample). Эти плагины для преобразования форматов не выполняют никаких действий, если от них этого не требуется, а просто работают в режиме передачи потока данных. При этом они активируются в том случае, если аппаратное обеспечение не поддерживает определенный формат данных. Упомянутые элементы рекомендуются к использованию при разработке любых приложений.
23.4. Утилиты, распространяемые вместе с фреймворком GStreamer
Фреймворк GStreamer распространяется вместе со стандартным набором утилит с интерфейсом командной строки, которые могут оказаться полезными в процессе разработки приложения. В данном разделе мы обсудим исключительно утилиты gst-launch и gst-inspect.
23.4.1. Утилита gst-launch
Утилита gst-launch является простым, похожим на сценарий приложением с интерфейсом командной строки, которое может использоваться для тестирования конвейеров. Например, команда gst-launch audiotestsrc ! audioconvert ! audio/x-raw,channels=2 ! alsasink позволит запустить конвейер, с помощью которого будет генерироваться аудиопоток синусоидального вида с последующим проигрыванием посредством звуковой карты, работающей под управлением ALSA. Утилита gst-launch также позволяет использовать программные потоки (они будут использоваться автоматически по мере необходимости или по мере добавления элементов с внутренними очередями в конвейер) и контейнеры (которые обозначаются с помощью круглых скобок, т.е., "(" и ")"). Вы можете использовать точки для указания названий точек соединения элементов или умышленного пропуска названия точки соединения для ее автоматического выбора. Учитывая все эти особенности использования утилиты, с помощью команды gst-launch filesrc location=file.ogg ! oggdemux name=d d. ! queue ! theoradec ! videoconvert ! xvimagesink d. ! queue ! vorbisdec ! audioconvert ! audioresample ! alsasink может быть сформирован конвейер, который будет проигрывать файл формата Ogg, содержащий видеопоток формата Theora и аудиопоток формата Vorbis. Также при формировании команды вы можете использовать элементы для автоматической подгрузки плагинов, такие, как decodebin. Обратитесь к странице руководства утилиты gst-launch для получения дополнительной информации.
23.4.2. Утилита gst-inspect
Утилита gst-inspect может использоваться для исследования всех свойств, сигналов, динамических параметров и иерархии объектов элемента. Она может оказаться очень полезной при поиске информации о том, какие свойства или сигналы (с какими аргументами) объектной модели GObject поддерживает элемент. Выполните команду gst-inspect fakesrc и изучите вывод для того, чтобы иметь представление о функциях утилиты. Обратитесь к странице руководства утилиты gst-inspect для получения дополнительной информации.
Следующий раздел : Портирование приложения на основе GStreamer 0.8 для работы с GStreamer 0.10.