×
Namespaces

Variants
Actions
Revision as of 14:06, 7 May 2013 by hamishwillee (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Archived:Aplicações multimídia para Maemo - Parte I

From Nokia Developer Wiki
Jump to: navigation, search

Archived.pngAquivado: Este artigo foi arquivado, pois o conteúdo não é mais considerado relevante para se criar soluções comerciais atuais. Se você achar que este artigo ainda é importante, inclua o template {{ForArchiveReview|escreva a sua justificativa}}.

Acredita-se que este artigo ainda seja válido no contexto original (quando ele foi escrito)


Article Metadata

Artigo
Criado por User:Raulherbster em 21 Sep 2008
Última alteração feita por hamishwillee em 07 May 2013

Resumo

Este artigo faz parte de uma série de artigos que explica como criar aplicações multimídia no Maemo.

Introdução

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:

Existência de código duplicado 
A maioria dos reprodutores de arquivos multimídia basicamente reimplementavam o mesmo código várias vezes. Uma determinada funcionalidade - a decodificação de um arquivo OGG, por exemplo - é comumente utilizada e poderia ser implementada como um elemento único e central para vários reprodutores;
Mecanismos não-unificados de plug-ins 
Tipicamente, um reprodutor de multimídia possui um plug-in para diferentes tipos de mídia. Dois reprodutores de mídia distintos certamente vão implementar seus próprios mecanismos de plug-in. Entretanto, esses componentes não poderão ser facilmente compartilhados, pois a arquitetura de um reprodutor de mídia é bastante restrita para compartilhamento com outros reprodutores;
Reprodutores/Bibliotecas para um único propósito 
Um reprodutor é criado para reproduzir um formato específico de aúdio e/ou de vídeo. A maioria dos reprodutores têm implementado uma infra-estrutura completa com o intuito de alcançar o seu único propósito: playback. A arquitetura dificulta a adição de novos filtros ou efeitos especiais para serem aplicados nos arquivos de multimídia.


Arquitetura

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:

  • Null: estado padrão;
  • Ready: buffers estão alocados e os arquivos propriamente abertos, contudo o fluxo ainda está em espera;
  • Paused: o fluxo está aberto, mas seu movimento está congelado;
  • Playing: o mesmo que Paused, mas os dados estão fluindo.


Um fluxo de mídia do source element para sink element

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.

Um pipeline com 3 elementos

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.

Um elemento com 3 pads: sink, audio e video

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.

This page was last modified on 7 May 2013, at 14:06.
237 page views in the last 30 days.