• Nenhum resultado encontrado

3.4 Sistema Brasileiro de TV Digital (SBTVD) 68 

3.4.1 Middleware Ginga 69 

A arquitetura do middleware Ginga, ilustrada na Figura 15, pode ser representada basicamente por dois importantes componentes:

ƒ Ginga procedural ou Ginga-J: máquina de execução (execution engine);

ƒ Ginga declarativo ou Ginga-NCL: máquina de apresentação (presentation

engine). Difusão Transmissão Codificação de canal Modulação Multiplexador

Data stream Codificação de sinais de fonte

Aplicativos interativos

Servidor 1 Áudio Vídeo

Recepção Decodificação de canal Demodulação Demultiplexador Middleware Decodificação de sinais de fonte Aplicativos interativos Áudio Vídeo Internet Aplicativos interativos

Servidor A interatividadeCanal de

Aplicativos interativos Servidor B

Recepção

Acesso

Figura 15 - Arquitetura Ginga.

Fonte: extraído e adaptado de ABNT (2007b).

O Ginga-J é um subsistema lógico do sistema Ginga, responsável pelo processamento de conteúdos ativos: programas na linguagem procedural JAVA. Um componente-chave desse ambiente de aplicação procedural é a máquina de execução do conteúdo procedural, composta por uma Java Virtual Machine (JVM).

O Ginga-NCL, por sua vez, é um subsistema lógico responsável pelo processamento de documentos em NCL (Nested Context Language) – uma linguagem declarativa baseada em XML para autoria de documentos hipermídia, com foco no sincronismo das mídias, na adaptabilidade e no suporte a múltiplos dispositivos de exibição (ABNT, 2007b). Em NCL um documento HTML é um tipo de objeto. De forma semelhante, linguagens imperativas podem ser adicionadas e usadas como nós de objetos. Em específico, a Ginga-NCL oferece suporte linguagem procedural Lua22.

A máquina de apresentação Lua, no Ginga-NCL, é responsável pela interpretação dos scripts da linguagem Lua. Também possui um exibidor (user agent) XHTML, que contempla interpretadores CSS e ECMAScript (ABNT, 2007b). Os relacionamentos de referência definidos pelos links XHTML são o foco da linguagem NCL. Outros tipos de relacionamentos, como de sincronização espaço-temporal e relacionamentos alternativos, são usualmente definidos através de uma linguagem imperativa utilizada em conjunto com a XHTML como, por exemplo, a ECMAScript (ABNT, 2007b). Observa-se, então, que a

22 Lua é uma linguagem de programação procedural que oferece suporte para a programação orientada a objetos, programação funcional e programação orientada a dados. Ela foi planejada para ser utilizada por qualquer aplicação que necessite de uma linguagem de script leve e poderosa (IERUSALIMSCHY, 2003).

Ginga – núcleo comum / JVM

Sistema operacional API de exibidores

Ginga – serviços específicos API

XHTML NCLAPI LUA-NCLAPI Máquina de apresentação (Formatador NCL) Máquina de execução (Gerenciador Xlet) Ponte

linguagem declarativa NCL é mais abrangente que XHTML. Na linguagem NCL há sincronização espaço-temporal com o conteúdo transmitido e há também suporte a múltiplos dispositivos de exibição, ou seja, há uma separação bem demarcada entre o conteúdo e a estrutura de um documento ou aplicativo (ABNT, 2007b). A Figura 16 ilustra uma visão temporal da apresentação de um vídeo exemplificando eventos e objetos a serem carregados.

Figura 16 - Visão temporal da apresentação de um vídeo.

Fonte: extraído e adaptado de Neto, Soares e Rodrigues (2007).

Como ilustrado na Figura 15 do Ginga, um componente-chave do Ginga-NCL é a máquina de apresentação do conteúdo declarativo: o formatador NCL. Um formatador pode ser chamado também de renderizador de documentos, agente do usuário ou exibidor. É possível ainda que um formatador ou visualizador seja recebido através da difusão de dados e seja instalado como plu-gin. Assim, é criado um ambiente dinâmico quanto à apresentação dos dados. Além disso, durante a exibição do conteúdo de objetos são gerados vários eventos onde, a partir destes, é possível acessar e realizar ações relacionadas a outro objeto.

Um documento NCL pode fazer referência a diversos objetos como vídeos (MPEG, MOV, etc.), áudio (MP3, WMA, etc.), imagens (GIF, JPEG, etc.), textos (TXT, PDF, etc.) e outros objetos (XHTML, etc.), e até de execução (Xlet, Lua, etc.), entre outros. Assim, um documento NCL define como os objetos são estruturados e relacionados no tempo e espaço.

É importante se observar que os componentes Ginga-J e Ginga-NCL podem se comunicar, pois existem pontes de ligação entre a máquina de execução e a máquina de

Legenda 1 2 3 4 5 6 Menu Imagem onBeginStart onEndStop onBeginStart onEndStop onBeginStart onEndStop Linha de tempo Vídeo e Áudio Eventos Objetos

...

...

...

...

apresentação (ver Figura 15). Além disso, podem existir outros componentes como aplicações nativas e outros softwares.

A ponte faz a ligação bidirecional entre as APIs Java e objetos e métodos do ECMAScript, LUAScript e DOM. Há também um monitoramento do ciclo de vida de aplicação por parte do sistema operacional com função de gerenciar todo o ciclo de vida da aplicação como inicialização, controle e término.

As aplicações podem ser desenvolvidas utilizando recursos oferecidos pelas máquinas de execução, pela máquina de apresentação ou compartilhar recursos de ambas as máquinas. Já o software nativo inclui software legado ou softwares escritos usando API adicionais com funcionalidades. A Figura 17 mostra a estrutura do ambiente de aplicações.

Figura 17 - Estrutura do ambiente de aplicações.

Fonte: extraído e adaptado de ABNT (2007a).

Uma aplicação Ginga pode ser declarativa, procedural e mesmo híbrida – conjunto de entidades que possui tanto conteúdo declarativo quanto procedural. Mas as aplicações declarativas normalmente fazem uso de scripts, cujo conteúdo é de natureza procedural e, além disso, uma aplicação declarativa pode fazer referência a um código Java TV Xlet. Já uma aplicação procedural pode fazer referência a uma aplicação declarativa, contendo, por exemplo, conteúdo gráfico, ou pode construir e iniciar a apresentação de aplicações com

Ponte Máquina de execução (Ginga-J) Hardware Sistema operacional Rede CA Serviço de

informação GUI Dados e eventos Digital vídeo Outrasmídias Interação com o usuário

Software nativ o Máquina de apresentação (Ginga-NCL)

Aplicação Aplicação Aplicação Aplicação Aplicação

Monitor do ciclo de vida de aplicação

conteúdo declarativo. Dessa forma, ambos os tipos de aplicação Ginga podem utilizar as facilidades dos ambientes de aplicação declarativo e procedural.

Os tipos comuns de conteúdo como imagens GIF, JPEG, MPEG, entre outros, possuem decodificadores que são compartilhados tanto para as aplicações procedurais quanto para as declarativas.