A maioria das aplicações multimídia da plataforma Maemo são baseadas no GStreamer, uma biblioteca open-source que permite a construção de aplicações para manipulação de streams de mídia: desde simples reprodutores de mp3 até editores de aúdio e vídeo com funcionalidades complexas. Sua arquitetura é baseada em plug-ins, os quais provêem um grande número de codecs e funcionalidades já implementadas. GStreamer foi criado para prover uma solução para falhas no suporte à multimídia na plataforma Linux, por exemplo:
Basicamente, a arquitetura do GStreamer é composta por elementos, bins, pipelines e pads. Na nomenclatura do GStreamer, todo componente, exceto o próprio fluxo, é chamado de elemento: cada um deve ter, pelo menos, um pad de entrada (source), ou um pad de saída (sink), ou os dois ou até mesmo vários deles. Geralmente, uma aplicação GStreamer é composta por uma cadeia de elementos ligados entre si e permite-se que os dados fluam através dessa cadeia de elementos. Um elemento possui uma função bem específica, por exemplo, ler os dados de um arquivo ou decodificar os sinais presentes em um fluxo. Um elemento pode está em quatro estados possíveis:
Um bin é simplesmente um conteiner de elementos que contém vários outros elementos ligados entre si. Lembre-se que um bin também é um elemento. Um pipeline é um tipo especial de bin que permite a execução dos elementos nele presentes.
Pads são como portas pelas quais o fluxo de mídia trafega. Normalmente, eles possuem possuem capacidades de manipulação de dados bem específicas, por exemplo, eles podem restrigir os tipos de dados que trafegam por eles.
Além de aplicações que utilizam plug-ins, também podemos desenvolver plug-ins para o framework GStreamer. Basicamente, um plug-in é um bloco de código facilmente carregável. Um simples plug-in pode conter a implementação de vários elementos, ou apenas de um único. Os plug-ins são classificados em classes (Base, Good, Ugly e Bad) de acordo com a licensa de distribuição e a qualidade.
No related wiki articles found