GStreamer é uma estrutura de multimídia poderosa com mais de 30 bibliotecas e mais de 1600 elementos em 230 plug-ins fornecendo uma ampla variedade de funcionalidades. Isso torna possível construir uma grande variedade de aplicativos, mas também torna difícil enviar em um dispositivo restrito. Felizmente, a maioria dos aplicativos usa apenas um subconjunto dessa funcionalidade e, até agora, não havia uma maneira fácil de gerar uma compilação com GStreamer apenas o suficiente para um aplicativo específico. Agora, com apoio da Collabora, foram feitas mudanças importantes permitem compilações personalizadas mínimas do GStreamer
Graças a uma parceria com a Huawei, agora você pode usar gst-build para gerar uma compilação GStreamer mínima, adaptada a um aplicativo específico ou conjunto de aplicativos. Uma postagem do blog da Collabora, mostra quais foram as principais mudanças introduzidas no GStreamer para tornar isso possível. Eles também explicam como isso pode ser feito, dando um pequeno exemplo de como tornar isso possível.
Mudanças importantes permitem compilações personalizadas mínimas do GStreamer
Veja a seguir um pouco das instruções e explicações sobre este processo.
gst-build
gst-build é o sistema de compilação que os desenvolvedores do GStreamer usam. Em posts anteriores, descrevemos como começar no Linux ou Windows e como usá-lo como uma ferramenta de desenvolvimento diária.
Desde o GStreamer 1.18, é possível construir todo o GStreamer em uma única biblioteca compartilhada chamada gstreamer-full . Esta biblioteca pode incluir não apenas as numerosas bibliotecas do GStreamer, mas também todos os plug-ins e outras dependências do GStreamer, como o GLib. Os aplicativos podem ser vinculados dinamicamente ou estaticamente ao gstreamer-full.
Criação da biblioteca combinada gstreamer-full
Ao fornecer -Ddefault_library=static -Dintrospection=disabled
a linha de comando de configuração do Meson, ele irá gerar uma compilação estática de todas as bibliotecas do GStreamer que suportam o esquema estático. Isso também produzirá uma biblioteca compartilhada chamada gstreamer-full contendo todo o GStreamer. Por enquanto, a introspecção GObject precisa ser desabilitada, pois a construção estática não está pronta para suportá-la (consulte gst-build-167 ).
Adaptando GStreamer
A geração de uma biblioteca combinada por si só não reduz o tamanho total. Para atingir esse objetivo, precisamos selecionar quais bibliotecas e plug-ins estão incluídos.
gst-build é um sistema de construção altamente configurável que já oferece opções para selecionar quais plug-ins são construídos. Mas usando o mecanismo gstreamer-full, pode-se selecionar exatamente quais bibliotecas estão incluídas na biblioteca gstreamer-full final passando o -Dgst-full-libraries=
argumento para o meson. Os plug-ins são então incluídos automaticamente de acordo com a configuração e as dependências disponíveis.
No link a seguir, você acompanha os detalhes técnicos de todo esse processo.