Настройте сборку GStreamer, используя только функции, необходимые для вашего приложения


Благодаря партнерству между Collabora и Huawei теперь можно создать Gstreamer только с функциями, необходимыми для конкретного приложения, уменьшая размер двоичного файла для встраиваемых систем с ограниченным пространством.

Gstreamer — очень популярный мультимедийный фреймворк с открытым исходным кодом, используемый в большом количестве проектов и продуктов, с впечатляющим количеством функций, охватывающих более 30 библиотек и более 1600 элементов в 230 плагинах. Это не проблема для настольных ПК и большинства смартфонов, но размер двоичного файла может быть слишком большим для некоторых систем, и до недавнего времени было непросто настроить сборку GStreamer для конкретного приложения. Но Collabora изменила код, чтобы позволить gst-build генерировать минимальную сборку GStreamer.

Компания основывалась на новых свойствах GStreamer 1.18, выпущенной в сентябре 2020 года, которая позволяет собрать всю GStreamer в единую общую библиотеку с именем gstreamer-full со всеми библиотеками, а также с плагинами и другими зависимостями, такими как GLib. Компания объясняет, что gst-build уже предоставляет опции для выбора подключаемых модулей для сборки, но с помощью библиотеки gstreamer-full можно точно выбрать, какие библиотеки будут включены в окончательную библиотеку с расширением -Dgst-full-libraries=. Затем плагины автоматически включаются в соответствии с конфигурацией и доступными зависимостями. Вот пример:

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

Все это уже включено в Gstreamer 1.18. Так что же именно сделала Collabora? Они добавили пять новых опций в меню Gstreamer, чтобы обеспечить лучшую детализацию, а именно:

  • gst-full-plugins — выберите плагин, который хотите включить. По умолчанию все плагины будут включены в процессе сборки, и необходимо пропустить хотя бы один, чтобы избежать сборки всех.
  • gst-full-elements — выберите element, используя plugin1:elt1,elt2;plugin2:elt1
  • gst-full-typefind-functions — выберите typefind, используя plugin1:tf1,tf2;plugin2:tf1
  • gst-full-device-suppliers — выберите decide-provider, используя  plugin1:dp1,;dp2;plugin2:dp1
  • gst-full-dynamic-types — выберите dynamic-type, используя plugin1:dt1,;dt2;plugin2:dt1

Element, typefind, device-provider и dynamic type — все это функции плагина, которые определены в документации Gstreamer.

Чтобы продемонстрировать решение, Collabora сначала построила Gsteamer со всеми параметрами, в результате чего будет получена статическая библиотека с полным gstreamer объемом 49,2 МБ, за которой следует адаптированная сборка всего с тремя элементами, а именно filesrc, fakesink иidentity:

В итоге получился размер всего 3,2 МБ, или на 93,5% меньше. Не плохо!

Более подробную информацию о реализации Collabora вы найдете в объявлении в блоге.

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments