Rafael Ferreira Rodrigues Ambiente Declarativo para Sistemas que

Transcrição

Rafael Ferreira Rodrigues Ambiente Declarativo para Sistemas que
Rafael Ferreira Rodrigues
Ambiente Declarativo para Sistemas que
PUC-Rio - Certificação Digital Nº 0511038/CA
Implementem o GEM
Dissertação de Mestrado
Dissertação apresentada como requisito parcial para
obtenção do título de Mestre pelo Programa de PósGraduação em Informática da PUC-Rio.
Orientador: Luiz Fernando Gomes Soares
Rio de Janeiro, agosto de 2007
Rafael Ferreira Rodrigues
Ambiente Declarativo para Sistemas que
PUC-Rio - Certificação Digital Nº 0511038/CA
Implementem o GEM
Dissertação apresentada como requisito parcial para
obtenção do título de Mestre pelo Programa de PósGraduação em Informática do Departamento de
Informática do Centro Técnico e Científico da PUC-Rio.
Aprovada pela Comissão Examinadora abaixo assinada.
Prof. Luiz Fernando Gomes Soares
Orientador
Departamento de Informática - PUC-Rio
Prof. Renato Cerqueira
Departamento de Informática - PUC-Rio
Prof. Rogério Ferreira Rodrigues
Departamento de Informática - PUC-Rio
Prof. José Eugenio Leal
Coordenador Setorial do Centro
Técnico Científico – PUC-Rio
Rio de Janeiro, 20 de agosto de 2007
Todos os direitos reservados. É proibida a reprodução total
ou parcial do trabalho sem autorização da universidade, do
autor e do orientador.
Rafael Ferreira Rodrigues
Graduado em Engenharia de Computação pelo Instituto
Militar de Engenharia (IME) em 2004. Atualmente, integra
o grupo de pesquisadores do Laboratório TeleMídia da
PUC-Rio, desenvolvendo pesquisas do GINGA-NCL.
Ficha Catalográfica
Rodrigues, Rafael Ferreira
PUC-Rio - Certificação Digital Nº 0511038/CA
Ambiente
Declarativo
Implementem o GEM /
Rafael
para
Ferreira
Sistemas
que
Rodrigues
;
orientador: Luiz Fernando Gomes Soares. – Rio de
Janeiro : PUC-Rio, Departamento de Informática, 2008.
101 f. : il. ; 30 cm
Dissertação (mestrado) – Pontifícia Universidade
Católica do Rio de Janeiro, Departamento de Informática.
Inclui referências bibliográficas
1. Informática – Teses. 2. Gem. 3. NCL. 4. Java
5. Ginga 6. TV Interativa. I. Soares, Luiz Fernando
Gomes. II. Pontifícia Universidade Católica do Rio de
Janeiro. Departamento de Informática. III. Título.
CDD: 004
PUC-Rio - Certificação Digital Nº 0511038/CA
Este trabalho é dedicado: a toda minha família
e amigos, em especial meus pais, Jorge
e Denize, minha irmã Roberta
e minha namorada Juliana.
Agradecimentos
PUC-Rio - Certificação Digital Nº 0511038/CA
Gostaria de agradecer primeiramente ao meu orientador Prof. Luiz Fernando
pela confiança e pela forma de trabalhar tão inspiradora.
A todos os integrantes do Laboratório TeleMídia que contribuíram direta ou
indiretamente para a realização deste trabalho. Em especial agradeço ao Márcio,
ao Carlão pela ajuda com as revisões. Preciso também agradecer ao Rogério cuja
pesquisa contribuiu diretamente para a elaboração desta dissertação.
Aos meus amigos, e irmãos, Eduardo, Thiaguinho, Simão, Vinicius.
Agradeço a toda a minha família pelo carinho e apoio incondicional. Em
especial a minha mãe Denize, minha irmã Roberta e a meu pai Jorge.
Agradeço à minha namorada Jujuba por ter sempre sido compreensiva.
Aos membros da banca pelos preciosos comentários e revisões.
Agradeço a todos os professores e funcionários do Departamento de
Informativa da PUC-Rio.
Por fim, gostaria de agradecer ao CNPq, à CAPES, à FINEP e à PUC-Rio
pelo apoio financeiro fornecido ao longo deste mestrado.
Resumo
Rodrigues, Rafael Ferreira. Ambiente Declarativo para sistemas que
implementem o GEM. Rio de Janeiro, 2004. 101p. Dissertação de
Mestrado - Departamento de Informática, Pontifícia Universidade Católica
do Rio de Janeiro.
A existência de vários ambientes procedurais definidos para middlewares de
Sistemas de TV Digital terrestre levou à criação de um framework conhecido
PUC-Rio - Certificação Digital Nº 0511038/CA
como Globally Executable MHP (GEM). Esse padrão visa a harmonização de tais
ambientes permitindo a execução global das aplicações. Nesse contexto, este
trabalho descreve a construção de um ambiente de apresentação declarativo
utilizando a API fornecida pelo GEM de forma a permitir a execução global do
conteúdo declarativo produzido para o Sistema Brasileiro de TV Digital
Palavras-chave
GEM, NCL, JAVA, Ginga, TV Digital Interativa
Abstract
Rodrigues, Rafael Ferreira. Declarative Environment for Systems
Implementing GEM Rio de Janeiro, 2004. 101p. Master Thesis Departamento de Informática, Pontifícia Universidade Católica do Rio de
Janeiro.
The several procedural environment proposals for terrestrial Digital TV
Systems led to the middleware framework recommendation known as Globally
PUC-Rio - Certificação Digital Nº 0511038/CA
Executable MHP (GEM). This standard aims at the harmonization of such
environments allowing the global execution of procedural applications but
neglecting the declarative ones. In this context, this work describes the integration
of the Ginga declarative environment using the API supplied by GEM and
allowing the global execution of declarative contents produced for the Brazilian
System of Digital TV (Sistema Brasileiro de TV Digital).
Key words
GEM, NCL, JAVA, Ginga, Interactive TV, Digital TV
Sumário
1 Introdução .............................................................................................. 13
1.1. Motivação........................................................................................... 14
1.1.1. Ambiente Declarativo x Ambiente Procedural ................................ 17
1.2. Objetivos ........................................................................................... 18
1.3. Organização da Dissertação.............................................................. 19
2 Conceitos Preliminares .......................................................................... 21
2.1. Middlewares de TV Digital ................................................................. 21
2.1.1. O Middleware Europeu ................................................................... 23
PUC-Rio - Certificação Digital Nº 0511038/CA
2.1.1.1. Tipos de aplicações MHP ............................................................ 24
2.1.1.2. O uso de Plug-ins ........................................................................ 26
2.1.1.3. O uso do armazenamento de aplicações .................................... 28
2.1.2. O Middleware Americano................................................................ 29
2.1.3. O Middleware Japonês ................................................................... 31
2.1.4. O Middleware Brasileiro.................................................................. 32
2.2. Definição do padrão GEM.................................................................. 35
2.2.1. Políticas de segurança para execução de aplicativos no GEM .......36
2.2.2. Sinalização de Aplicações no GEM ................................................ 37
2.3. O Blue-Ray Disc ................................................................................ 39
2.4. Ambientes de Execução JAVA para TV ............................................ 40
2.4.1. O Modelo de programação XLET ................................................... 43
3 Trabalhos Relacionados ........................................................................ 47
3.1. O MHP Processando Documentos XHTML....................................... 48
3.2. Ambiente declarativo para TV Digital – UTH ..................................... 49
3.3. Ambiente declarativo para TV Digital – ICECREAM.......................... 50
4 O Fomatador NCL.................................................................................. 52
4.1. O Formatador NCL Java.................................................................... 52
4.2. O GEM processando um documento NCL ........................................ 55
4.3. A Arquitetura de Implantação ............................................................ 57
4.3.1. Estrutura do Sistema Baseada em Componentes.......................... 57
4.4. Adaptações e Otimizações no Formatador NCL ............................... 58
4.4.1. A Pré-conversão de Documentos NCL e o Módulo Gerenciador
de Documentos .................................................................................. 58
4.4.2. Adaptações do Módulo do Núcleo do Formatador ......................... 60
4.4.3. Adaptações do Módulo Gerenciador de Adaptadores para
Exibidores e os Adaptadores Criados....................................................... 63
4.4.4. Adaptações do Módulo Gerenciador de Leiaute............................. 64
5 O Fomatador NCL Xlet ......................................................................... 66
5.1. Os Componentes do Formatador NCL Xlet ....................................... 66
5.1.1. Gerenciador de Leiaute .................................................................. 67
5.1.2. Gerenciador de Documentos .......................................................... 68
PUC-Rio - Certificação Digital Nº 0511038/CA
5.1.3. Núcleo do Formatador .................................................................... 69
5.1.4. Gerenciador de Adaptador para Exibidores.................................... 70
5.1.5. Adaptadores para Exibidores.......................................................... 70
5.2. Implementação dos Componentes para Sistemas GEM ................... 71
5.2.1. O Carregamento Dinâmico ............................................................. 72
5.2.2. O Módulo de Implantação............................................................... 73
5.2.3. O Processo de Implantação do Formatador ................................... 76
5.2.4. Persistência do Formatador NCL Xlet em Receptores MHP .......... 78
5.3. Testes......... ....................................................................................... 79
6 Conclusões ........................................................................................... 83
6.1.Trabalhos Futuros............................................................................... 84
7 Referências Bibliográficas ..................................................................... 86
Apêndice A Assinatura Digital de um Xlet ................................................ 91
Apêndice B Sinalização de Aplicações..................................................... 94
Apêndice C A Linguagem NCL ................................................................. 98
Lista de Figuras
Figura 1 – O GEM e os demais padrões. ................................................. 16
Figura 2 – Arquitetura de um sistema de TV Digital. ................................ 22
Figura 3 - Perfis MHP. .............................................................................. 24
Figura 4 - Arquitetura básica do MHP....................................................... 25
Figura 5 – Opções de implementação de plug-ins. .................................. 27
Figura 6 – A interface Plugin..................................................................... 28
Figura 7 – Arquitetura do middleware Ginga. ........................................... 34
Figura 8 – O processo de identificação da AIT......................................... 38
Figura 9 – Arquiteturas de plataformas JAVA........................................... 41
PUC-Rio - Certificação Digital Nº 0511038/CA
Figura 10 – Exemplo de ambiente de execução Java. ............................. 42
Figura 11 – Protocolo entre as entidades presentes no modelo e
programação Xlet...................................................................................... 44
Figura 12 - Interface do Xlet. .................................................................... 44
Figura 13 - Máquina de estados do ciclo de vida de um Xlet. .................. 45
Figura 14 – Interface do XletContext. ....................................................... 45
Figura 15 – Arquitetura da proposta do transcodificador.......................... 48
Figura 16 – Arquitetura do Formatador NCL. ........................................... 53
Figura 17 – Pré-processamento do documento NCL. .............................. 56
Figura 18 – Processamento do documento NCL no receptor................... 56
Figura 19 – Modelo de uma apresentação NCL orientada a sincronização
por contexto. ............................................................................................. 60
Figura 20 – Digrama de classe da interface IFormatter............................ 62
Figura 21 – Diagrama da interface NCLEditingCommandListener........... 63
Figura 22 – Diagrama de classes do modelo de leiaute do Formatador
NCL........................................................................................................... 65
Figura 23 – Duas implementações do componente Gerenciador de
Leiaute ...................................................................................................... 67
Figura 24 – Componente Gerenciador de Documentos. .......................... 68
Figura 25 – Duas implementações do componente do núcleo do
formatador................................................................................................. 69
Figura 26 – Duas implementações do componente do núcleo do
Formatador ............................................................................................... 69
Figura 27 – Duas implementações do componente Gerenciador de
Exibidores ................................................................................................. 70
Figura 28 – Duas implementações de adaptadores para exibidores........ 70
Figura 29 – Classe GingaXlet. .................................................................. 73
Figura 30 – Classe IGingaXletConfiguration............................................. 74
Figura 31 – Interface IGingaXletDeployer................................................. 74
Figura 32 – A classe StreamEventHandler e suas associações. ............. 75
Figura 33 – Diagrama de seqüência do processo de preparação do
Formatador Xlet. ....................................................................................... 77
Figura 34 – Diagrama de seqüência do processo de inicialização do
Formatador Xlet. ....................................................................................... 78
PUC-Rio - Certificação Digital Nº 0511038/CA
Figura 35 – Digrama de componentes do Sistema testado...................... 80
Figura 36 – Arquitetura de execução distribuída do Formatador NCL. .... 85
Figura 37 – Exemplo de arquivo PRF....................................................... 92
Figura 38 – Estrutura de diretórios de um Xlet. ........................................ 93
Figura 39 – Exemplo de documento NCL 2.0......................................... 101
Lista de Tabelas
Tabela 1 – Componentes do formatador GingaXlet ................................. 80
Tabela 2 – Resultados dos testes de Serialização versus conversão...... 81
Tabela 3 – Plataformas que implementam o CDC. .................................. 84
Tabela 4 – Exemplo resumido de uma tabela AIT.................................... 95
Tabela 5 – Parâmetros adicionais da AIT para sinalização do Formatador
PUC-Rio - Certificação Digital Nº 0511038/CA
Xlet............................................................................................................ 96
1
Introdução
A possibilidade de se encapsular dados, juntamente com o áudio e vídeo,
em sistemas de TV Digital, abre espaço para uma vasta gama de oportunidades
capaz de proporcionar uma maior interatividade para o telespectador. Essa
integração
permite
que
a
programação
seja
enriquecida
através
da
disponibilização de diversos serviços, como: guias eletrônicos de programação,
votações, jogos, acesso a outras redes de comunicação, entre outros serviços. Essa
possibilidade, contudo, exige um maior poder computacional da parte dos
PUC-Rio - Certificação Digital Nº 0511038/CA
receptores do sinal de TV digital para que, desta forma, tenham a capacidade de
executar as aplicações para eles desenvolvidas.
Devido à enorme diversidade de fornecedores de terminais de acesso, tornase necessária, a fim de promover uma execução global das aplicações
desenvolvidas pelos produtores de conteúdo, a criação de uma abstração
denominada middleware. O middleware fornece um conjunto comum de
Interfaces de Programação de Aplicativos (Application Programming Interfaces –
APIs) a serem oferecidas por todos os receptores que, entre outras facilidades,
permitem o uso dos diversos recursos disponíveis nesses dispositivos.
Dentre os sistemas de TV Digital terrestre em operação, os seguintes
padrões de middleware figuram como principais:
1. O europeu, denominado Multimedia Home Platform (MHP) (ETSI,
2005b), definido pelo grupo do DVB (Digital Video Broadcasting
Project);
2. O
americano,
conhecido
como
DTV
Application
Software
Environment (DASE) (ATSC, 2003a), definido pelo grupo ATSC
(Advanced Television Systems Committee); e
3. O japonês, Integrated Services Digital Broadcasting (ISDB) (ARIB,
2004), definido pelo grupo ARIB (Association of Radio Industries
and Businesses).
Introdução
14
No âmbito brasileiro, encontra-se em desenvolvimento o middleware a ser
utilizado pelo sistema de TV digital deste país, batizado como Ginga, e parte do
Sistema Internacional para Difusão Digital Terrestre (Terrestrial International
System for Digital Broadcasting – ISDB-T), também conhecido como SBTVD.
1.1.
Motivação
O middleware europeu MHP, que contou com uma rápida popularização,
adotou em seu ambiente procedural a linguagem JAVA (Gosling, 1996). Com
isso, foi criado um nível maior de portabilidade para suas aplicações, permitindo o
reuso de componentes de software provenientes de outras plataformas. Surgiram,
então, algumas iniciativas para sua implementação sobre outras plataformas
PUC-Rio - Certificação Digital Nº 0511038/CA
internacionais. Entidades responsáveis pela padronização de sistemas de TV
Digital, fora da Europa, manifestaram o interesse em ter parte do middleware
MHP implementado em suas especificações. Dessa forma, seria aproveitado todo
seu desenvolvimento tecnológico e mantida uma compatibilidade que permitisse
que as novas aplicações, como aquelas já desenvolvidas, pudessem ser
executadas/apresentadas em terminais de acesso desses outros padrões.
Diante do interesse em se fazer uma integração entre os middlewares
procedurais já existentes surgiu, então, o Globally Executable MHP (GEM)
(ETSI, 2005a). O GEM, que pode ser considerado como um acordo de
harmonização entre os principais padrões existentes, tem como base o MHP. Isso
porque, além de capturar um subconjunto das interfaces, e toda a semântica
definida por este padrão de middleware, o GEM também inclui as necessidades
impostas por outros padrões internacionais.
Com o GEM despontando como ambiente de execução procedural mínimo
para os principais padrões de TV Digital (MHP, DASE e ARIB) e de mídia
empacotada (como o Blue-Ray Disc), tem-se aí uma base para a criação de
aplicações e programas interativos portáveis para diversas plataformas.
Middlewares procedurais compatíveis com a especificação do GEM vêm sendo
adotados por vários países no mundo todo (MHP, 2006), inclusive pelo Brasil.
Contudo, no GEM, como mencionado, é definido apenas um ambiente de
execução procedural, deixando livre para a implementação a definição de um
15
Introdução
possível ambiente declarativo. Na Figura 1 são mostradas as especificações de
ambientes declarativos adotados pelos principais padrões que implementam o
GEM. Nessa figura percebe-se, ainda, uma série de recomendações propostas pelo
órgão ITU (International Telecommunication Union).
O ITU-T e ITU-R, em conjunto com outras organizações, como DVB,
ARIB, ATSC, OpenCable e SMPTE, se organizaram para consolidar uma
tendência de harmonização que já vinha sendo demonstrada desde o
estabelecimento do GEM. A recomendação ITU-T J.200 (ITU-T, 2001) foi criada
visando promover uma arquitetura de alto nível para um conjunto de formatos e
APIs mais harmônicos, capazes de prover várias funcionalidades necessárias para
aplicações interativas mais avançadas a serem oferecidas pelas redes de televisão
para os usuários domésticos. É o núcleo comum dos ambientes de aplicação para
serviços de TV Digital interativa. A recomendação estabelece tanto um ambiente
PUC-Rio - Certificação Digital Nº 0511038/CA
de execução declarativo (detalhado em ITU J.201) (ITU-T, 2004) quanto
procedural (detalhado em ITU-T J.202) (ITU-T, 2003). Contudo, esses ambientes
não precisam ser necessariamente independentes; podendo ser definidas pontes
entre eles.
A Figura 1 mostra a especificação ITU-T J.201 como compreendendo todo
o ambiente declarativo das três principais implementações de middleware. Apesar
da especificação prever um núcleo comum, mostrado no centro da área
pontilhada, é prevista sua extensão para certos requisitos específicos da
implementação.
O núcleo é formado por:
•
Módulos
definidos
pelo
padrão
XHTML
Modularization,
especificado pelo W3C (World Wide Web Consortium) (W3C,
2002);
•
O padrão CSS para descrever o estilo da apresentação, definido pelo
W3C (W3C, 1998);
•
A API DOM para alterar dinamicamente o conteúdo dos
documentos XHTML, definida pelo W3C (W3C, 2004a); e
•
ECMAScript definido pela ECMA International (ECMA, 1999).
Ainda na Figura 1, assim como no ambiente declarativo, a especificação do
ambiente procedural prevê um núcleo comum que é justamente o framework
proposto pelo GEM. A especificação também permite a extensão desse núcleo
Introdução
16
comum apresentando, em caráter informativo, os três padrões anteriormente
PUC-Rio - Certificação Digital Nº 0511038/CA
mencionados.
Figura 1 – O GEM e os demais padrões.
Embora exista uma tendência clara à harmonização do middleware
procedural, realizada pelo GEM, o mesmo não se pode dizer, de fato, com relação
ao middleware declarativo. Apesar dos três padrões da Figura 1 adotarem um
ambiente baseado no padrão XHTML, com exceção do sistema japonês, esses
ambientes ainda não foram comercialmente implementados a contento.
As limitações do modelo XHTML, a serem discutidas a seguir, e a falta da
implementação de um ambiente declarativo encorajam a criação de novos
mecanismos que possibilitem a execução de aplicações/programas dessa natureza,
através da criação de máquinas de apresentação (declarativas) baseadas na API
procedural comum estabelecida pelo GEM.
Na definição do subsistema declarativo do middleware brasileiro foi
padronizada a utilização da linguagem NCL (Nested Context Language –
Linguagem de Contextos Aninhados) (Soares & Rodrigues, 2006). Ao contrário
dos padrões citados anteriormente, a NCL possui o foco no sincronismo de mídias
e não é baseada no padrão XHTML. No entanto, essa linguagem mantém a
compatibilidade com os demais padrões por permitir a definição de um exibidor
Introdução
17
XHTML que viabiliza a utilização de conteúdo desta natureza como mídia a ser
sincronizada pelo documento NCL.
Apesar de ser possível a reprodução do conteúdo declarativo dos demais
padrões pelo middleware brasileiro, o contrário não é possível. De forma a
viabilizar tal compatibilidade, uma das alternativas é utilizar a API procedural
fornecida pelos padrões internacionais para a criação de um ambiente de
apresentação declarativo para documentos NCL, que é o foco principal desta
dissertação.
1.1.1.
Ambiente Declarativo x Ambiente Procedural
Em um sistema de TV digital, um ambiente de execução procedural é
PUC-Rio - Certificação Digital Nº 0511038/CA
aquele capaz de executar programas criados seguindo o paradigma de
programação imperativo. Esses códigos apóiam-se, basicamente, na execução
algorítmica de instruções fornecidas pelo programador. Dessa forma, o
programador possui um maior controle da execução, sendo capaz de estabelecer
todo o fluxo de controle e execução de seu programa. Contudo, é necessário que o
programador seja mais qualificado e conheça bem os recursos da linguagem.
Ambientes de apresentação declarativos, por sua vez, executam códigos
criados seguindo o paradigma de programação declarativo. No âmbito dos quatro
padrões anteriormente mencionados, incluindo o brasileiro, suas linguagens
declarativas são todas baseadas em XML (eXtensible Markup Language). Entre
os exemplos de linguagens declarativas baseadas em XML (chamadas de
aplicações XML) encontram-se a linguagem NCL (Nested Context Language –
utilizada pelo SBTVD-T), a linguagem SMIL (Synchronized Multimedia
Integration Language – padrão W3C para sincronismo temporal de mídias)
(W3C, 2005) e o XHTML, sendo esta a mais difundida atualmente.
Ao contrário da linguagem procedural, que realiza a decomposição do
problema em implementações algorítmicas, a linguagem declarativa enfatiza a
declaração descritiva da solução do problema. A linguagem declarativa é mais
indicada para aplicações cujo foco casa com o objetivo específico para o qual a
linguagem foi desenvolvida. Na maioria dos casos, para TV Digital, as aplicações
(não apenas aquelas carregadas pelo canal de difusão, mas também aquelas
Introdução
18
carregadas pelo canal de retorno) lidam com a sincronização de objetos de mídia.
A interação do usuário e a sincronização temporal com o áudio e vídeo principal
são exemplos de relacionamentos comuns entre objetos presentes nessas
aplicações.
1.2.
Objetivos
Este trabalho tem como objetivo propor um ambiente de apresentação de
programas declarativos desenvolvidos na linguagem NCL para sistemas que
implementem o GEM.
No ambiente “virtual” implementado são utilizadas apenas as APIs JAVA
fornecidas pelo framework GEM. Seu desenho foi concebido de forma a ser capaz
PUC-Rio - Certificação Digital Nº 0511038/CA
de operar sobre plataformas de recursos limitados.
A solução proposta tem como base o Formatador NCL da implementação de
referência do middleware Ginga realizada pelo Laboratório TeleMídia da PUCRio. Contudo, foi necessária uma adaptação da implementação existente para
desktops, no intuito de permitir a compatibilidade com o GEM, sem perder
contudo a conformidade com o ambiente declarativo do Ginga.
Além do formatador, alguns de seus exibidores de mídia também foram
adaptados.
Como uma das grandes dificuldades encontradas ao se executar aplicações
em ambientes de TV Digital é o seu tempo de iniciação, foram pesquisados
mecanismos para otimização do tempo de iniciação da execução do documento.
Um destes mecanismos é o carregamento modular do formatador. No
desenvolvimento realizado, apenas os módulos do formatador necessários para a
apresentação em questão são obtidos do fluxo MPEG-2 Sistema. Além disso,
quando o receptor permitir o armazenamento de aplicações ou plugins, é
priorizado o carregamento do módulo pré-existente no receptor em detrimento
daquele transportado no fluxo MPEG-2 Sistema. Para realizar o processo de
implantação de tais módulos, foi criada uma estrutura independente. Essa
estrutura possui a capacidade de abstrair dos demais módulos o acesso ao fluxo
Introdução
19
MPEG-2 para o carregamento de bibliotecas e outros recursos necessários para a
apresentação de um documento hipermídia.
Outro mecanismo de otimização utilizado é a pré-conversão do documento
NCL. Esse mecanismo visa diminuir o número de etapas necessárias pelo receptor
para iniciar a execução de um documento, além de eliminar a necessidade de uma
biblioteca para o processamento de documentos XML.
1.3.
Organização da Dissertação
O restante desta dissertação encontra-se organizada como a seguir. No
Capítulo 2 são expostos conceitos acerca dos principais middlewares procedurais
existentes sendo, a seguir, apresentado o GEM como harmonização de tais
PUC-Rio - Certificação Digital Nº 0511038/CA
middlewares. Após a apresentação do GEM é mostrado o primeiro padrão de
mídia empacotada a implementá-lo: o Blue-Ray Disc. É trazida, então, ao
conhecimento do leitor a recomendação da máquina virtual Java mínima para
ambientes procedurais de sistemas de TV Digital. A seguir, são apresentadas as
tecnologias envolvidas na construção de um ambiente declarativo para sistemas
que implementem o GEM.
O Capítulo 3 apresenta os trabalhos relacionados com o sistema proposto.
Inicialmente são discutidas as alternativas para a implementação dos middlewares
declarativos baseados no XHTML como aplicações dos middlewares procedurais
correspondentes. A seguir, são discutidas duas aplicações para TV Interativa que
fazem uso de uma máquina de apresentação de documentos SMIL no ambiente de
execução do middleware MHP. Ao final do capítulo, são apresentados os
resultados de testes realizados por uma implementação SMIL em um sistema de
broadcast de TV Digital.
O Capítulo 4 apresenta a implementação Java do Formatador NCL
desenvolvida pelo laboratório de Telemídia da PUC-Rio e que serviu como base
para a elaboração deste trabalho, uma vez que o foco desta dissertação está na
especialização do Formatador NCL como uma aplicação GEM. A seguir, são
mostradas todas as adaptações necessárias à implementação Java do Formatador
NCL para a execução em um ambiente compatível com o GEM.
Introdução
20
O Capítulo 5 apresenta uma proposta de um ambiente declarativo baseado
na linguagem NCL para sistemas que implementem o GEM. Nesse capítulo é
descrita a arquitetura e a implementação do sistema proposto. É mostrado como
integrar tal implementação a sistemas MHP utilizando as facilidades introduzidas
por sua interface de plug-ins e armazenamento de aplicações. Ao final do
capítulo, são apresentados os resultados de alguns testes realizados.
O Capítulo 6 apresenta uma análise dos resultados obtidos e sugestões para
PUC-Rio - Certificação Digital Nº 0511038/CA
suscitar trabalhos futuros.
2
Conceitos Preliminares
No capítulo anterior foram citados os três middleware para TV Digital
terrestre mais populares: o europeu (MHP), o americano (ATSC) e o japonês
(ISDB). Além desses, foi citado um ambiente para a execução de aplicações
procedurais em sistemas de mídia empacotada: o Blue-Ray Disc. Tais padrões
estabelecem uma série de requisitos mínimos a serem implementados por seus
terminais. Neste capítulo são mostrados alguns desses requisitos relevantes para a
construção de um ambiente de apresentação declarativo como uma aplicação
PUC-Rio - Certificação Digital Nº 0511038/CA
procedural. É também feita uma breve descrição dos padrões mencionados, que
constituem as plataformas para as quais o sistema proposto é destinado.
No intuito de descrever melhor as tecnologias envolvidas na construção do
sistema proposto, este capítulo mostra, também, a configuração mínima de uma
máquina virtual Java para uma plataforma de TV Digital.
Para cumprir seus propósitos, este capítulo está organizado da forma a
seguir. Na Seção 2.1, e em suas subseções, são apresentados os principais
middleware procedurais para TV Digital aberta. A Seção 2.2 descreve o GEM
como tentativa de harmonização desses padrões de middleware. A Seção 2.3
mostra o padrão Blue-Ray: o primeiro padrão de mídia empacotada a implementar
o GEM. E, por fim, na Seção 2.4 é apresentada a especificação mínima do
ambiente Java para sistemas de TV digital, inclusive o GEM.
2.1.
Middlewares de TV Digital
Numa arquitetura de serviços para TV Digital, o middleware consiste em
uma abstração que atua entre duas camadas bem definidas. A razão de sua
existência está intimamente ligada à forma como ele interage com tais camadas.
A camada inferior provê o serviço de transporte dos dados e o acesso à
utilização dos recursos do terminal. Essa camada não é alvo de uma padronização
formal, podendo ser especificada de acordo com os critérios do fabricante do
Conceitos Preliminares
22
receptor. Ela engloba todo hardware e softwares nativos (drivers de dispositivos,
sistema operacional, aplicações nativas).
A camada superior é composta pelos aplicativos e serviços comuns aos
usuários do sistema de TV Digital: guias eletrônicos de programação, jogos,
cotação do mercado de ações, dentre outros serviços produzidos pelos provedores
de conteúdo/infra-estrutura.
De forma a permitir que os aplicativos e serviços do sistema de TV Digital
sejam desenvolvidos independente da camada inferior, ou seja, do fabricante, foi
criada uma camada intermediária: o middleware.
Os middlewares são padrões que especificam requisitos mínimos a serem
implementados pelos fabricantes de forma a permitir uma execução global de
aplicações e serviços para TV Digital. Tal padronização abrange, principalmente,
APIs para acesso aos recursos da camada inferior, protocolos e formatos de
PUC-Rio - Certificação Digital Nº 0511038/CA
conteúdo a serem suportados.
Figura 2 – Arquitetura de um sistema de TV Digital.
A Figura 2 ilustra o middleware exercendo seu papel de camada
intermediária entre o sistema operacional e os aplicativos e serviços comuns aos
usuários do sistema de TV Digital.
Os principais padrões de middleware para sistemas de TV Digital terrestre
serão descritos nas seções a seguir.
Conceitos Preliminares
23
2.1.1.
O Middleware Europeu
O middleware europeu MHP (Multimedia Home Platform) foi desenvolvido
por um consórcio de empresas denominado DVB (Digital Video Broadcast).
Essas empresas são de áreas que incluem desde fornecedores de equipamentos até
as emissoras de TV. Ao elaborar novas resoluções, tal consórcio as encaminha ao
ETSI (European Telecommunications Standards Institute – um órgão responsável
por padronizações na área de telecomunicações e ligado à União Européia) que,
por fim, o estabelece como padrão. Seguindo esse processo, foram desenvolvidas,
até então, duas versões do padrão MHP: o MHP 1.0 e o MHP 1.1.
No MHP são estabelecidos dois níveis de categorização de suas aplicações:
o primeiro enquadra a aplicação de acordo com os perfis dos usuários para os
PUC-Rio - Certificação Digital Nº 0511038/CA
quais elas são dirigidas, definindo sua área de abrangência e, como conseqüência
requisitos de processamento e comunicação dos terminais; e o segundo enquadra
as aplicações de acordo com seu tipo (procedurais, declarativas ou híbridas).
Os seguintes perfis de usuário/aplicação são definidos no padrão MHP 1.1
na ordem do mais básico ao mais avançado, sendo que cada perfil é uma extensão
do perfil imediatamente mais básico:
• Enhanced Broadcast Profile: É o perfil básico, projetado para
espelhar as funcionalidades fundamentais existentes em um sistema
de middleware. Nesse perfil não existe interatividade direta com os
provedores de conteúdo, pois não há canal de retorno;
• Interactive Broadcast Profile: A principal característica desse perfil
é permitir que aplicações possam se comunicar por meio de um
canal de retorno. Esse perfil apresenta suporte para comunicação IP
sobre o canal de retorno. Além disso, existe também grande suporte
para interatividade com as APIs definidas;
• Internet Access Profile: Esse perfil fornece grande poder de
processamento e armazenamento, permitindo acesso a conteúdo da
Internet no terminal de acesso. É previsto, obrigatoriamente, a
existência de um cliente de e-mail e um browser HTML sem, no
entanto, tornar obrigatória a extensão promovida pela linguagem
DVB-HTML (apresentada na próxima seção).
Conceitos Preliminares
24
A Figura 3 apresenta os perfis citados ilustrando algumas das APIs e
PUC-Rio - Certificação Digital Nº 0511038/CA
tecnologias suportadas por cada versão do MHP.
Figura 3 - Perfis MHP.
2.1.1.1.
Tipos de aplicações MHP
As aplicações MHP declarativas e procedurais são, respectivamente, o
DVB-HTML e DVB-J (ou DVB JAVA). As aplicações DVB-HTML não são
muito difundidas pelo fato de terem sido especificadas apenas na última versão do
padrão. Já as aplicações DVB-J possuem grande aceitação no mercado, pois as
APIs de suporte são obrigatórias em todos os perfis.
Uma aplicação MHP, no entanto, não necessariamente precisa ser
exclusivamente procedural ou declarativa. Existem ainda, como mostrado na
Figura 4, as aplicações híbridas. Nessas aplicações é prevista a existência de
elementos em ambas as linguagens, denso prevista uma ponte que permite a
Conceitos Preliminares
25
comunicação entre as aplicações que pertençam a esses dois paradigmas
diferentes.
PUC-Rio - Certificação Digital Nº 0511038/CA
Figura 4 - Arquitetura básica do MHP
Aplicações DVB-HTML são baseadas em alguns padrões estabelecidos pelo
W3C. Essas aplicações são descritas em uma linguagem que estabelece uma
extensão ao XHTML adotando, em conjunto com este, os padrões, Cascade Style
Sheets (CSS - responsável pela formatação e layout de páginas HTML),
ECMAScripts (responsável por habilitar interatividade em documentos XHTML)
e Document Object Model (fornece abstração que permite, através do
ECMAScript, manipular estruturas e conteúdos de documentos XHTML).
Já as aplicações DVB-J constituem programas em código binário JAVA.
Esses programas, no entanto, diferente das versões de aplicação JAVA destinada
a desktops, devendo obedecer a uma série de APIs mais restritivas definidas pelo
MHP (ETSI, 2005). São elas:
•
JavaTV: Introduz uma série de funcionalidades específicas para o
ambiente de TV interativa, como localização de conteúdo, controle do
ciclo de vida da aplicação, controle de acesso, sintonização e
informação sobre serviços. Os programas que utilizam essa API são
também denominados Xlets.
•
JMF: O Java Media Framework é uma API que gerencia o
comportamento e a interação de objetos de mídia contínua. JMF é
Conceitos Preliminares
26
utilizado para capturar, processar e apresentar alguns tipos de mídias
contínuas.
•
HAVi User-Interface: é uma API que permite ao programador criar
elementos para a interface com o usuário. Provê uma extensão ao pacote
“java.awt”, permitindo, assim, suporte a controle remoto, transparência,
entre outros;
•
DAVIC: Apresenta alguns requisitos de sistemas audiovisuais para
prover interoperabilidade fim-a-fim;
•
DVB-MHP: Essa API utiliza os serviços providos pelas classes das
APIs já mencionadas (ou seja, na prática provendo a mesma
funcionalidade) e adiciona serviços novos, como gerenciamento da
conexão do canal de retorno, armazenamento de informações,
PUC-Rio - Certificação Digital Nº 0511038/CA
manipulação de eventos, segurança, gerenciamento de aplicações e
carregamento de plug-ins.
O MHP fornece dois mecanismos auxiliares que permitem a instalação de
aplicações de forma persistente nos receptores dos usuários. São eles: o uso dos
plug-ins e o Application Storage (armazenamento de aplicações). Nas subseções
seguintes serão apresentados esses dois mecanismos.
2.1.1.2.
O uso de Plug-ins
Plug-ins são conjuntos de funcionalidades que podem ser adicionadas a uma
plataforma genérica de forma a prover a interpretação de formatos de aplicação
registrados junto ao DVB. Atualmente, encontram-se registrados dois formatos de
aplicações: o HTML 3.2, que também indica aplicações no formato XHTML e
suas derivadas como o DVB-HTML, e o MHEG-5 (ISO, 1997). A Figura 5
mostra os dois tipos possíveis de plug-ins: nativos (na figura como plug-in B) e
interoperáveis (na figura como plug-in A).
Os plug-ins nativos usam código específico da implementação do receptor,
ou seja, código nativo. Esse tipo de código pode, inclusive, ser especificado na
linguagem Java, desde que não sejam utilizadas as APIs do MHP, caso contrario,
Conceitos Preliminares
27
deixam de ser considerados nativos. O processo de sinalização das aplicações1,
tanto do plug-in como das aplicações por ele processadas, também deverá ser
PUC-Rio - Certificação Digital Nº 0511038/CA
nativo.
Figura 5 – Opções de implementação de plug-ins.
Já um plug-in interoperável é aquele que necessita apenas das APIs
especificadas pelo padrão MHP, permitindo dois tipos de sinalização: uma
fornecida pelo padrão e outra específica da implementação.
A sinalização padrão do MHP para plug-ins, prevê a existência de dois
tipos de descritores a serem utilizados pela tabela AIT: um descritor de aplicação
para o plug-in e outro para a aplicação por ele processada. Esses descritores são
mostrados em mais detalhes no Apêndice B. A sinalização prevê, ainda, que o
ponto de entrada do plug-in seja uma classe que implemente a interface
org.dvb.application.plugins.Plugin
mostrada na Figura 6. Com isso, as
aplicações processadas por ele serão reconhecidas como Xlets e controladas pelo
Gerenciador de Aplicações.
Na sinalização específica da implementação, a aplicação processada pelo
plug-in não será reconhecida como uma aplicação MHP (Xlet). Com isso todo seu
controle (ciclo de vida, etc.) deverá ser realizado pelo próprio plug-in.
1
A sinalização de aplicações define formas de se identificar e iniciar aplicações associadas
a um serviço. Ela deve também oferecer mecanismos pelos quais as difusoras possam gerenciar o
ciclo de vida de suas aplicações.
Conceitos Preliminares
28
public interface Plugin{
plubic Xlet initApplication(AppAttributes app)
throws InvalidApplicationException;
public Xlet initApplication(InnerApplication app)
throws InvalidApplicationException;
public boolean initPlugin();
public isSupported(AppAttributes app);
plubic void terminatePlugin();
}
Figura 6 – A interface Plugin.
A interface org.dvb.application.plugins.Plugin, mostrada na Figura
6, visa, como mencionado, permitir ao Gerenciador de Aplicações manter o
controle do ciclo de vida das aplicações sendo executadas pelo plug-in
interoperável. Para isso, essa interface reusa o modelo de programação Xlet de
forma a representar aplicações em formatos diferentes do DVB-J.
A classe que implementar essa interface não poderá realizar nenhuma
operação que consuma muito processamento em seu construtor. Todas as rotinas
PUC-Rio - Certificação Digital Nº 0511038/CA
de iniciação serão realizadas em seu método initPlugin. Esse método será
chamado sempre antes do método utilizado pelo Gerenciador de Aplicações para
iniciar a aplicação (initApplication). No método initApplication serão passados,
ainda, os parâmetros do descritor da aplicação, presente na tabela AIT, para que a
aplicação possa ser tratada pelo plug-in. O método terminatePlugin será chamado
ao término da execução da aplicação.
A grande vantagem introduzida por essa facilidade é o fato de uma
aplicação de conteúdo genérico ser sinalizada para os receptores e interpretada
por eles como uma aplicação MHP (Xlet). Isso contribui para a adoção do padrão
DVB-HTML para aplicações declarativas, permitindo sua introdução como plugin MHP nos perfis Enhanced Broadcast e Interactive Broadcast (Perrot, 2001).
2.1.1.3.
O uso do armazenamento de aplicações
A especificação do MHP prevê uma API opcional denominada
Application Storage. Os receptores que implementam tal API são capazes de
interpretar um tipo de sinalização de aplicação que permite o armazenamento de
programas. Esse mecanismo provê uma série de vantagens:
•
Permite a aplicação armazenada seja iniciada a qualquer momento
pelo usuário ou pela difusora;
•
Permite o controle de versão da aplicação;
Conceitos Preliminares
•
29
Permite a instalação automática de aplicações sem a necessidade
de elaborar outras aplicações com tal finalidade (ou seja,
aplicações que armazenam aplicações);
•
Permite a desinstalação de aplicações.
Utilizando a API padrão de persistência da especificação MHP seria
possível, também, armazenar aplicações. Contudo, tornaria necessário o envio
prévio de outra aplicação para executar o carregamento das aplicações originais
do disco.
Mais informações sobre o mecanismo de sinalização do MHP podem ser
encontradas no Apêndice B.
PUC-Rio - Certificação Digital Nº 0511038/CA
2.1.2.
O Middleware Americano
O Advanced Television Systems Committee (ATSC) é uma organização
americana responsável por estabelecer padrões para TV. Esse comitê foi formado
inicialmente pela Electronic Industries Association (EIA), Institute of Electrical
and Electronic Engeneers (IEEE), National Association of Broadcasters (NAB),
National Cable Television Association (NCTA) e Society of Montion Picture and
Television Engineers (SMPTE).
Inicialmente, foi desenvolvido pelo ATSC um padrão denominado DTV
Application Software Environment Level 1 (DASE-1). O DASE adota modelos de
aplicações baseados em linguagem procedural e declarativa. No ambiente
declarativo é adotado o XHTML e no procedural a linguagem JAVA.
Em sua primeira versão o DASE era restrito apenas à interatividade local,
pois o sistema não previa um canal de retorno. Contudo, surgiram ainda o DASE
nível 2 e o DASE nível 3. No primeiro foram resolvidas questões relativas à
segurança, como a criptografia dos dados; e, no segundo, já prevendo o canal de
retorno, foi estabelecida uma integração da TV com a internet, dando acesso a
programas de correio eletrônico, navegadores web entre outros, no terminal de
acesso.
Paralelamente a essa iniciativa, desenvolveu-se o OpenCable Applications
Plataform (OCAP) (OCAP, 2005). Esse padrão foi estabelecido pela CableLabs:
um consórcio formado por membros da indústria de TV a cabo. Ele conta apenas
Conceitos Preliminares
30
com o ambiente procedural para execução de aplicações denominadas OCAP-J e
desenvolvidas para plataforma JAVA.
Dado o cenário mencionado, com dois tipos de middleware despontando no
território americano e a clara tendência à harmonização proposta pelo GEM, o
ATSC introduziu a especificação do Advanced Common Application Plataform
(ACAP).
Middleware Americano ATSC/ACAP
O padrão ACAP surgiu a partir de um trabalho em conjunto com
participantes do DVB em setembro de 2004. Sua especificação é primariamente
baseada no GEM e no DASE e inclui funcionalidades adicionais do OCAP. Ela
foi criada com o intuito de substituir o DASE e permitir uma compatibilidade com
PUC-Rio - Certificação Digital Nº 0511038/CA
o GEM e com o OCAP. Dessa forma, além de permitir a criação de aplicações
portáveis dentre os middlewares americanos e os compatíveis com o GEM, o
padrão permite uma compatibilidade com as aplicações já existentes em território
americano.
As aplicações ACAP são classificadas em duas categorias: conteúdos
procedurais ou conteúdos declarativos. As aplicações contendo apenas conteúdo
procedural são denominadas ACAP-J e as contendo conteúdo declarativo ACAPX. Similar ao MHP, o ACAP classifica as plataformas que o implementam em
dois perfis: o perfil ACAP-J, no qual a plataforma é obrigada a implementar
apenas o suporte às aplicações procedurais; e o perfil ACAP-J e ACAP-X, que
obriga a plataforma a dar suporte a programas procedurais, declarativos e
híbridos. Esse enquadramento torna a existência de um ambiente declarativo
facultativo e reforça a idéia de compatibilidade com o GEM.
No ambiente ACAP-X, as aplicações são representadas por documentos
hipermídia compostos por meio de uma linguagem de marcação (e.g. XHTML),
regras de estilo (CSS), scripts (ECMAScritpt), Xlets embutidos (aplicações
ACAP-J), e elementos audiovisuais. Toda a definição desse ambiente é baseada
em extensões/restrições da definição do DVB-HTML.
O ambiente ACAP-J é uma combinação do GEM, OCAP e DASE. Por isso,
todo conteúdo obrigatório estabelecido no ambiente procedural desses padrões
Conceitos Preliminares
31
são incluídos no ambiente ACAP-J. São previstas ainda, as seguintes extensões à
API JAVA:
•
API para Closed Captioning;
•
API para localizadores de conteúdo específicos para o ACAP;
•
API para o tratamento de eventos na interface com usuário;
•
API para identificação do conteúdo;
•
API estendendo a SI (Service Information)
•
Integração DOM entre ambientes, que visa realizar a ponte do
ambiente procedural com o declarativo quando este existir;
Contudo, apesar da interoperabilidade provida pelo padrão soar promissora,
a especificação do padrão é relativamente recente. Isso contribui para haver ainda
PUC-Rio - Certificação Digital Nº 0511038/CA
quase nenhuma penetração sua dentre os consumidores americanos.
Middleware Americano CableLabs/OCAP
A especificação OCAP 1.0 foi estabelecida em 2001. No entanto, apesar do
estabelecimento da proposta de middleware ACAP pelo ATSC, a evolução do
OCAP continuou a ocorrer paralelamente. Depois de algumas revisões, o padrão
passou a implementar diretamente a API do GEM: o OCAP 1.0 I-16 (revisão 16),
estabelecido em 2005, baseia-se no DVB-GEM 1.0.2 e DVB-MHP 1.0.3. Depois
disso, acompanhando a evolução do GEM, em 2006 foi lançado o OCAP 1.1
correspondendo ao DVB-GEM 1.1 e DVB-MHP 1.1.2.
2.1.3.
O Middleware Japonês
A especificação do sistema para transmissão digital terrestre japonês foi
produzida em 1997 pela associação de indústrias e negócios de rádio japonesa
(ARIB – Association of Radio Industries and Business), tendo contado com uma
aprovação final pelo governo Japonês. Tal especificação estabeleceu o padrão
conhecido como Terrestrial Integrated Services Digital Broadcasting (ISDB-T).
Conceitos Preliminares
32
Assim como na maioria dos demais sistemas, a arquitetura ARIB é
composta por dois subsistemas: um para a execução de programas procedurais; e
outro para a apresentação de programas declarativos. Entretanto, no padrão
japonês não foram definidos elementos capazes de estabelecer uma ponte entre
esses dois subsistemas.
A linguagem utilizada no ambiente declarativo é denominada BML
(Broadcast Markup Language). Essa linguagem encontra-se definida na
especificação ARIB STD-B24 Volume 2 (Data Coding and Transmission
Specification for Digital Broadcasting Vol. II). Ela baseia-se no XHTML e
fornece suporte a CSS e ECMAScript.
No BML, o ECMAScript foi estendido de forma a fornecer uma API capaz
PUC-Rio - Certificação Digital Nº 0511038/CA
de oferecer, principalmente, as seguintes funcionalidades:
•
Controle do canal de retorno;
•
Controle da apresentação;
•
Alteração do conteúdo da página em tempo real;
•
Processamento de eventos gerados pela emissora; e
•
Processamento de eventos oriundos da interação com o usuário.
O ambiente de execução procedural foi definido na especificação ARIB
STD-B23 (Application Execution Engine Platform for Digital Broadcasting) em
2003. Atualmente o padrão se encontra em sua revisão 1.1 estabelecida em 2004.
O ambiente consiste de um sistema capaz de executar programas em bytecode
JAVA e foi criado a partir de uma extensão do GEM 1.0 e do DVB MHP 1.0.
Entretanto, ao contrário dos outros padrões, existe no mercado japonês uma maior
penetração de aplicações declarativas e receptores que implementem suporte a tal
paradigma. Isso se deve, possivelmente, ao fato da padronização tardia do
ambiente procedural.
2.1.4.
O Middleware Brasileiro
A proposta para o middleware utilizado pelo ISDTV-T, cuja arquitetura é
mostrada na Figura 7, compreende a implementação de dois subsistemas:
Conceitos Preliminares
•
33
Um provê uma infra-estrutura para a execução de aplicações
baseadas na linguagem procedural Java, sendo denominado Ginga-J
(ilustrado na figura à direita da ponte); e
•
O outro provê uma infra-estrutura para a apresentação de aplicações
baseadas em documentos hipermídia escritos na linguagem
declarativa NCL, sendo denominado Ginga-NCL (ilustrado na
figura à esquerda da ponte).
No entanto, as aplicações não necessitam ser exclusivamente procedurais ou
declarativas. Existem elementos em ambos os subsistemas que permitem a
construção de aplicações híbridas: uma aplicação declarativa (NCL) pode possuir
outra aplicação procedural embutida; ou, por outro lado, uma aplicação
procedural pode referenciar o conteúdo declarativo, como, por exemplo, criando e
iniciando apresentações.
PUC-Rio - Certificação Digital Nº 0511038/CA
O uso da linguagem NCL em ambientes de TV Digital interativa visa
garantir o sincronismo quando da reprodução de programas interativos
multimídia, hipermídia e não-lineares. A entidade responsável pela apresentação
de documentos NCL é denominada Formatador NCL.
A partir da especificação do documento NCL recebida, o Formatador
constrói um plano de apresentação que contém as características de apresentação
de cada objeto de mídia, a programação das tarefas a serem escalonadas e as
informações dos relacionamentos de sincronização entre os objetos de mídia.
Baseado nos eventos gerados pelos exibidores de mídia e nos eventos gerados
pelo usuário, o escalonador de apresentação controla a execução sincronizada de
todo o documento, realizando ajustes quando esses se fazem necessários
(Rodrigues, 2003).
Na Figura 7 são mostrados, ainda, dois exibidores que devem ser
implementados pelo middleware: o exibidor XHTML, que deve possuir um
interpretador ECMAScript e suporte a CSS; e o exibidor Lua (Ierusalimschy,
2003), que representa uma máquina virtual dessa linguagem.
Dependendo da implementação fornecida pelo módulo XHTML o
middleware pode se tornar compatível com outros padrões declarativos (BML,
ACAP-X, DVB-HTML). Mais ainda, ao padronizar a existência de tal módulo,
torna-se o middleware compatível com o padrão ITU-T J.201.
Conceitos Preliminares
34
Para que outros tipos de conteúdo, além dos citados anteriormente, possam
ser apresentados no ambiente declarativo, é necessária a criação de adaptadores
que respeitem a API de Adaptadores do Formatador. Essa API permite que os
exibidores desses outros tipos de conteúdo sejam controlados de acordo com o
modelo de apresentação do Formatador NCL.
Outra estrutura importante na arquitetura é o Gerenciador de Bases Privadas.
Esse gerenciador é responsável por lidar com um conjunto de bases responsáveis
por armazenar documentos NCL. Tais estruturas são denominadas privadas
devido ao fato de cada base ser de uso exclusivo de um canal de TV específico.
As atividades do Gerenciador de Bases Privadas incluem, além de assegurar
o acesso exclusivo a essas bases, o processamento de Comandos de Edição NCL
(Soares et al, 2006). Esses comandos permitem, por exemplo, a alteração de um
PUC-Rio - Certificação Digital Nº 0511038/CA
documento NCL durante sua apresentação.
Figura 7 – Arquitetura do middleware Ginga.
O subsistema procedural (Ginga-J) constitui uma extensão à especificação
do GEM, mantendo, dessa forma, a compatibilidade com todos os demais padrões
que implementam tal especificação (DVB MHP, ATSC ACAP e OCAP, ISDB
ARIB). A API proposta pelo Ginga-J pode ser dividida em três porções: a porção
definida pelo GEM; a porção definida pelo Ginga-J mas adaptável ao GEM; e a
porção definida apenas pelo Ginga-J.
Conceitos Preliminares
35
Dentre as inovações introduzidas pelo subsistema procedural do middleware
brasileiro, pode-se destacar o suporte a interações multiusuário, multidispositivo e
multi-rede de comunicação, com o receptor (Filho et al., 2007).
Abaixo desses dois subsistemas lógicos (Ginga-NCL e Ginga-J) existe uma
camada, que lhes oferece suporte, denominada Núcleo Comum. Essa camada é
composta por decodificadores comuns de conteúdo (como PNG, JPG, GIF ou
MPEG) e rotinas para obter conteúdos transportados no Fluxo de Transporte
MPEG-2 (ISO, 1993) e via canal de retorno. Possui ainda uma Máquina Virtual
Java (JVM – Java Virtual Machine) para a execução de códigos binários dessa
linguagem.
PUC-Rio - Certificação Digital Nº 0511038/CA
2.2.
Definição do padrão GEM
O GEM (Globally Executable MHP) foi proposto, inicialmente, para que as
aplicações MHP pudessem ser utilizadas sobre as plataformas do middleware dos
EUA (CableLabs) e do Japão (ARIB). O GEM é considerado um acordo de
harmonização. Isso porque, além de capturar as interfaces e toda a semântica
definidas pelo MHP (independentes da plataforma DVB), o GEM inclui as
necessidades impostas por outros padrões internacionais. A CableLabs participou
da composição da primeira versão do GEM, para tornar compatível seu
middleware para a TV a cabo americana, o OCAP. E, mais recentemente, o
middleware japonês ARIB e o candidato a padrão americano ACAP também
tiveram suas necessidades de harmonização com o GEM concluídas e podem,
dessa forma, ser classificados como padrões compatíveis com o GEM.
Formalmente, o GEM por si só não pode ser considerado uma especificação
completa para terminais de acesso. O correto é dizer que GEM é um framework a
partir do qual um terminal de acesso pode ser implementado, ou ainda, que GEM
é um padrão ao qual implementações existentes devem se adaptar para obter uma
conformidade que garante a execução global de aplicações. O padrão define,
portanto, um conjunto de APIs, garantias semânticas, protocolos e formatos de
conteúdo com os quais as aplicações (agora globalmente interoperáveis) podem
contar para a constituição de serviços interativos, executáveis em qualquer
plataforma definida pelos padrões internacionais compatíveis.
Conceitos Preliminares
36
Por definir um framework baseado no padrão MHP, o documento de
especificação do GEM é na realidade uma listagem de referências a outros
documentos do consórcio DVB. Ele descreve as diversas partes do MHP que são
independentes do padrão DVB e salienta aquelas que devem ser substituídas de
acordo com a infra-estrutura de implementação das novas especificações
compatíveis. Esses pontos de flexibilização do GEM devem ser, então,
preenchidos por “equivalentes funcionais” – mecanismos que lançam mão de
outras tecnologias (definidas pelas respectivas organizações de TV digital) para
implementar uma funcionalidade análoga àquela proposta pelo DVB. Tais
tecnologias passam a ser qualificadas como equivalentes funcionais somente após
negociações entre o consórcio DVB e cada uma das organizações que requisitam
a conformidade com o GEM.
No GEM, diferente do DVB, são definidos apenas os dois primeiros perfis:
PUC-Rio - Certificação Digital Nº 0511038/CA
o Enhanced Broadcast e o Interactive Broadcast.
2.2.1.
Políticas de segurança para execução de aplicativos no GEM
Todo Xlet a ser executado em ambientes que implementem o GEM está
sujeito a uma série de restrições de segurança. Nem todos os recursos do receptor,
disponíveis no ambiente Java, têm seu uso diretamente permitido a uma
aplicação. De acordo com o padrão, as aplicações que são enviadas para um
receptor serão classificadas como não confiáveis e não possuirão acesso a toda a
API Java.
Para garantir um nível maior de confiabilidade à aplicação, é necessária sua
assinatura digital. Uma aplicação assinada pode ter suas permissões de acesso
alteradas através de um Arquivo de Requisição de Permissão (Permission Request
File – PRF).
Os PRFs são arquivos XML que devem estar presentes no mesmo diretório
do arquivo inicial de uma aplicação que necessite de alterações em seu nível de
acesso padrão. Nesses arquivos, o identificador formal da DTD deve corresponder
à organização que especificou o documento. Além disso, o prefixo do PRF deve
identificar
a
especificação
de
terminal
GEM
(Ex.:
Conceitos Preliminares
37
ocap.<nome_do_aplicativo>.perm). Um exemplo de tal arquivo pode ser
encontrado no Apêndice A.
Os objetivos das alterações realizadas pelos PRFs são as permissões JAVA.
As permissões Java representam o acesso a um recurso do sistema (SUN, 2002).
A permissão tem um nome (normalmente o nome do alvo) e, comumente, uma
lista de um ou mais parâmetros (ex.: java.io.FilePermission “/tmp/abc/”, “read” –
permite a leitura dos arquivos no diretório “/tmp/abc/”). As permissões mais
relevantes disponíveis para utilização em um PRF e necessárias para a
implementação de um ambiente declarativo virtual são:
org.dvb.net.tuning.TunerPermission: permissão para realizar a
•
troca entre os fluxos;
org.dvb.user.UserPreferencePermission:
•
permissão
para
PUC-Rio - Certificação Digital Nº 0511038/CA
leitura/escrita das preferências do usuário. Sendo a leitura permitida
também para aplicativos não-assinados;
java.net.SocketPermission: permissão para se comunicar com hosts
•
remotos (como por exemplo abrir uma página HTML externa); e
java.io.FilePermission: permissão de leitura/escrita dos arquivos.
•
Sendo a leitura permitida também para aplicativos não-assinados;
org.dvb.application.AppsControlPermission:
•
permissão
para
controlar o ciclo de vida da aplicação;
org.dvb.net.rc.RCPermission:
•
permissão
para
comunicação
utilizando o canal de retorno (connect, listen, resolve).
2.2.2.
Sinalização de Aplicações no GEM
Na especificação do GEM são fornecidos requisitos mínimos de
sinalização que devem ser implementados pelos padrões baseados nessa
especificação:
•
para qualquer aplicação: seu descritor deve possibilitar a
identificação do nome da aplicação; o identificador único da
Conceitos Preliminares
38
aplicação e da organização que a produziu; e a localização da
aplicação e demais arquivos por ela utilizados; e
•
para aplicações procedurais (e.g. Java): deve ser fornecida
informação suficiente para sinalizar os parâmetros da aplicação e
indicar sua classe inicial.
Uma forma de implementar tais mecanismos é utilizando a Tabela de
Informação de Aplicações (Application Information Table – AIT). Toda a
informação sobre as aplicações que podem ser obtidas via carrossel de objetos ou
via canal de retorno são armazenadas nessa tabela. Ela é enviada em conjunto
com outros fluxos elementares em um fluxo de transporte MPEG-2.
Na Figura 8 é mostrado o processo de identificação da AIT em um fluxo
de transporte MPEG-2. A Tabela de Associação de Programas (Program
PUC-Rio - Certificação Digital Nº 0511038/CA
Association Table – PAT) pode ser encontrada nos pacotes de fluxo de transporte
identificados pelo PID 0. Supondo que a AIT da aplicação está associada com o
programa 2, a Tabela de Mapeamento de Programa (Program Map Table – PMT)
pode ser identificada nos pacotes com o PID 23. Na PMT, se o tipo de fluxo
possuir o valor 0x05, que representa o fluxo do tipo AIT, então os pacotes com o
PID 0x200 estarão carregando a AIT correspondente a esse programa.
Figura 8 – O processo de identificação da AIT.
Conceitos Preliminares
39
No Apêndice B é ilustrada como é formada a AIT em um sistema de TV
Digital que utilize o DVB-MHP.
2.3.
O Blue-Ray Disc
O disco Blue-Ray (BD – Blue-Ray Disc) é uma revolução em termos de
armazenamento em mídia ótica para consumidores de produtos eletrônicos, PCs e
consoles de vídeo game (Playstation 3). Ele proporciona: uma resolução de alta
definição de 1920 x1080, comparada aos 720x480 proporcionados pelo DVD e os
352x240 pela TV analógica; e uma capacidade de armazenamento de 25GB e 50
GB, atualmente, e até 200GB, com o lançamento futuro de discos multicamadas.
Com relação à interatividade, para uma plataforma BD encontram-se
PUC-Rio - Certificação Digital Nº 0511038/CA
definidos dois modos de operação que podem, inclusive, coexistir:
•
High Definition Movie (HDMV) – esse modo enfatiza uma
compatibilidade com os processos de produção dos DVDs atuais. O
modo HDMV suporta todas as funcionalidades proporcionadas pelos
DVDs atuais e seus formatos. Contudo, proporciona melhoras na
qualidade do vídeo, áudio, definição, experiência do usuário, entre
outros; e
•
BD-J – um ambiente de aplicações programáveis com possibilidades
de canal de retorno, possibilitando aos produtores de conteúdo uma
alta interatividade e títulos BD-ROM atualizáveis.
Foi estabelecida pela BDA (Blue-ray Disc Association) a linguagem JAVA
como tecnologia a ser adotada em aplicações BD-J. Isto possibilita a criação de
aplicações com interatividade avançada proporcionando-se as seguintes vantagens
ao BD em relação ao DVD: liberdade para o desenho da interface com o usuário;
controle da execução do áudio e vídeo; atualização dinâmica do conteúdo
(trailers, legendas, materiais de bônus) via um canal de retorno; outras formas de
conteúdo (jogos interativos no disco e online, eventos ao vivo, compras online).
Ao adotar como linguagem o JAVA, a BDA, buscando seguir a tendência
global de harmonização dos ambientes de execução procedural para sistemas de
TV digital, estabeleceu que as plataformas BD deveriam implementar o
framework GEM.
Conceitos Preliminares
40
Seguindo a especificação do GEM, o padrão BD-J também define dois
perfis para suas aplicações:
•
BD-VIDEO – esse perfil não requer canal de retorno; e
•
BD-LIVE – esse perfil requer canal de retorno proporcionando o
download de conteúdos e aplicações novas.
2.4.
Ambientes de Execução JAVA para TV
Um ambiente de execução Java (Java Runtime Environment – JRE) é uma
implementação da tecnologia Java para uma plataforma específica. Ele é instalado
e executado como uma aplicação nativa com o propósito de executar e gerenciar
aplicativos JAVA. O JRE fornece, portanto, uma abstração comum para as
PUC-Rio - Certificação Digital Nº 0511038/CA
aplicações JAVA e é implementado em código nativo.
A tecnologia Java pode ser subdividida como mostra a Figura 9. Esta
divisão procura enquadrar essa tecnologia em algumas plataformas-alvo:
•
A edição Java EE (antiga J2EE) é voltada para o segmento dos
servidores, é uma edição que possui recursos avançados para
aplicações empresariais;
•
A edição Java SE (antiga J2SE) é a edição padrão recomendada para
a maioria das plataformas, incluindo, principalmente, desktops; e
•
A edição Java ME (antiga J2ME) é a edição para plataformas com
recursos limitados como PDAs, celulares, set-top boxes, quiosques,
terminais de impressão, entre outros.
A Java ME é, dentre todas as edições citadas, a que precisa se adequar à
maior variedade de dispositivos. Além disso, para ganhar relevância ela deve ser
amplamente adaptável, pois a categoria de produtos por ela compreendida está em
constante evolução: os fornecedores estão constantemente adicionando novas
funcionalidades e identificando novos nichos de produtos (SUN, 2005a). Para
isso, a edição Java ME prevê algumas alternativas de configurações, perfis e
pacotes opcionais para um ambiente de execução Java específico para um
produto.
PUC-Rio - Certificação Digital Nº 0511038/CA
Conceitos Preliminares
41
Figura 9 – Arquiteturas de plataformas JAVA.
O CLDC (Connected Limited Device Configuration) é uma configuração
voltada para telefones celulares e PDAs de pequeno porte. Essa configuração
define um pequeno subconjunto da API fornecida pelo Java SE e compartilhada
com o CDC. O objetivo principal do CLDC é a economia da memória. Para isso o
ambiente de execução não oferece funcionalidades como API de reflexão e o
carregamento de classes pela aplicação. Com essa economia os dispositivos que
implementam tal configuração possuem uma necessidade de memória de apenas
128 KB a 256 KB.
O CDC (Connected Device Configuration) tem como objetivo principal a
compatibilidade com o Java SE e suportar dispositivos com recursos limitados.
Ele suporta a implementação completa da máquina virtual Java incluindo
carregamento de classes e suas classes essenciais. Contudo, para atender ao
requisito de operar sobre plataforma de recursos limitados, o CDC realiza
modificações no Java SE: algumas de suas classes tiveram suas interfaces
modificadas e outras retiradas inteiramente. Dessa forma, o requisito dessa
configuração fica na casa dos 2 MB de RAM e 2MB de ROM.
Existem definidos para o CDC três perfis. A definição desses perfis
proporciona aos fabricantes uma maior flexibilidade, trazendo diferentes níveis de
Conceitos Preliminares
42
sofisticação à implementação e possibilitando o suporte a diferentes tipos de
dispositivos com um ambiente de execução Java compatível. São eles:
•
Foundation Profile (FP) – é o perfil mais básico. Possui apenas
bibliotecas básicas como rede e Entrada/Saída (I/O). Esse perfil não
suporta a criação de gráficos nem interfaces gráficas com o usuário
(GUIs);
•
Personal Basis Profile (PBP) – É o perfil intermediário e incorpora o
FP. Permite a construção de GUIs através de um subconjunto
limitado do AWT (Geary & McClellan, 1997) e também implementa
o modelo de programação Xlet que será visto a seguir; e
•
Personal Profile (PP) – É o perfil CDC mais avançado e engloba o
PBP além de suportar integralmente o AWT e applets (SUN, 1994).
Para o desenvolvimento de um ambiente de execução Java em uma edição
PUC-Rio - Certificação Digital Nº 0511038/CA
Java ME, é obrigatória a escolha de uma configuração e um perfil. No entanto,
podem ser adicionados pacotes extras de acordo com o critério do fabricante,
como mostrado na Figura 10. A figura mostra a criação de um ambiente onde foi
escolhida a configuração CDC, o perfil PBP, mais o pacote opcional JSSE (Java
Secure Sockets Extension), para realizar conexões de rede seguras.
Figura 10 – Exemplo de ambiente de execução Java.
A construção do ambiente de execução Java mínimo para TV digital é
muito semelhante ao exemplo citado anteriormente. Apresenta a configuração
CDC, o perfil PBP (sendo que o PP é permitido) e algumas bibliotecas opcionais.
A soma do PBP com o CDC mantém, ainda, a compatibilidade com o
PersonalJava (uma configuração de máquina virtual Java prevista no GEM/MHP
e cuja normalização foi descontinuada sendo substituída pelo CDC/CLDC).
Conceitos Preliminares
43
No GEM, por se tratar de um ambiente de TV e por ser um acordo de
harmonização, algumas bibliotecas tornaram-se obrigatórias. Dentre elas, a
biblioteca Java TV introduz o modelo de programação Xlet.
•
download de conteúdos e aplicações novas.
2.4.1.
O Modelo de programação XLET
O modelo de programação Xlet é voltado para aplicações desenvolvidas
para sistemas de TV Digital. Nesse modelo é possível realizar um controle do
ciclo de vida dessas aplicações através de uma interface Java, mostrada na Figura
12, por elas implementada. As diversas entidades envolvidas nesse modelo, e o
protocolo de comunicação entre elas, são mostrados na Figura 11.
PUC-Rio - Certificação Digital Nº 0511038/CA
Os Xlets, como são conhecidas as aplicações, podem ser lançados
automaticamente, via sinalização, ou iniciados através da navegação pelo controle
remoto dos telespectadores. Eles podem encontrar-se residentes no receptor, ser
extraídos do carrossel de objetos e dados de um fluxo DSM-CC (ISO, 1998), ou
ser obtidos pelo canal de retorno.
Conceitos Preliminares
44
Figura 11 – Protocolo entre as entidades presentes no modelo e programação Xlet.
O Gerenciador de Aplicações (Application Manager) é a entidade
responsável pelo carregamento e o controle direto do ciclo de vida dos Xlets. Ele
dever ser capaz de interpretar os dados provenientes da AIT (ou seja, localização
da aplicação, classe inicial etc.) para, de acordo com aqueles recebidos, gerenciar
a execução das aplicações. Através de um mecanismo conhecido como caching, o
Gerenciador de Aplicações mantém uma tabela onde monitora as mudanças de
estado e recomeça a execução de Xlets presentes no receptor. O Gerenciador de
Aplicações é parte do sistema e reside no receptor.
No modelo de programação Xlet, as aplicações devem implementar a
interface mostrada na Figura 12. A classe Java que implementar essa interface é a
porta de entrada no aplicativo. Ela possuirá métodos que refletem diretamente os
PUC-Rio - Certificação Digital Nº 0511038/CA
estados do ciclo de vida de um Xlet.
public interface Xlet {
public void initXlet(XletContext xtx)
throws XletStateChangeException;
public void startXlet()
throws XletStateChangeException;
public void pauseXlet();
public void destroyXlet(boolean unconditional)
throws XletStateChangeException;
}
Figura 12 - Interface do Xlet.
Uma aplicação Xlet poderá encontrar-se nos estados ilustrados pela máquina
de estados da Figura 13. Quando a classe Java inicial de uma aplicação é
carregada, do carrossel de objetos ou do receptor, e instanciada, ela entra no
estado Loaded (carregada). O estado Loaded significa que a aplicação já foi
carregada, mas ainda não foi iniciada. No momento seguinte o Gerenciador de
Aplicações sinaliza o Xlet para que ele seja iniciado (chamando seu método
“initXlet”). Após iniciado ele entra no estado Paused (pausado). Uma aplicação
no estado Paused está minimizando o uso de recursos para maximizar sua
sobrevivência, e está pronta para executar. No estado Active, a aplicação está
funcionando plenamente, e no estado Destroyed já liberou todos os recursos e
terminou sua execução.
Conceitos Preliminares
45
Figura 13 - Máquina de estados do ciclo de vida de um Xlet.
Além dos Xlets e do Gerenciador de Aplicações, existe o Contexto ou
PUC-Rio - Certificação Digital Nº 0511038/CA
XletContext. Todo Xlet possui um contexto associado, ou seja, uma instância da
classe javax.tv.xlet.XletContext. Isso é similar à classe AppletContext que é
associada a um applet.
O XletContext é uma interface Java (mostrada na Figura 14) cuja
implementação é fornecida pelo Gerenciador de Aplicações. Através dessa
interface, o Gerenciador de Aplicações pode controlar o estado de um Xlet, tendo
a capacidade de encerrar sua execução a qualquer momento. O Xlet pode, ainda,
utilizar o XletContext para acessar propriedades do receptor ou realizar uma
mudança em seu estado.
public interface XletContext {
public static final String ARGS = javax.tv.xlet.args”;
public void notifyPaused();
public void notifyDestroyed();
public resumeRequest();
}
Figura 14 – Interface do XletContext.
Na requisição de mudança de estado iniciada pelo Xlet, ele notifica seu novo
estado desejado ao Contexto. A partir daí, o Gerenciador de Aplicações é
notificado e, em seguida, realiza a mudança do estado do Xlet. Utilizando esse
mecanismo de callback, o Gerenciador de Aplicações pode manter atualizado o
status dos Xlets por ele controlados. Portanto, o Contexto é uma ponte de
comunicação entre o Xlet e o Gerenciador de Aplicações.
Conceitos Preliminares
46
Os métodos “notifyDestroyed” e “notifyPaused” permitem ao Xlet notificar
o terminal sobre a possibilidade de terminá-lo ou pausá-lo. O Xlet pode usar esses
métodos para ter certeza que o terminal sabe o estado de toda aplicação e pode
tomar a ação apropriada. Esses métodos devem ser chamados imediatamente
antes do Xlet entrar nos estados de Paused ou Destroyed, isto porque o terminal
pode tomar uma ação que a aplicação não esteja preparada.
Uma aplicação pode requisitar a mudança do estado Paused para o Started
usando o método “resumeRequest”. Isso acontece quando um determinado evento
occorreu, como, por exemplo, um tempo certo foi atingido, um evento certo foi
detectado num fluxo MPEG, etc. Com esse método, é possível reiniciar uma
PUC-Rio - Certificação Digital Nº 0511038/CA
aplicação após esta ter sido suspensa.
3
Trabalhos Relacionados
As propostas para ambientes de apresentação declarativos compatíveis com
sistemas que implementem o GEM são relativamente recentes. A própria
especificação MHP, como já mencionado, em sua primeira versão não previa um
ambiente dessa natureza, assim como o padrão OCAP que até hoje não o prevê.
As linguagens declarativas adotadas pela maioria dos padrões internacionais
são baseadas no XHTML. Neste capítulo será mostrada uma proposta de um
sistema escrito na linguagem procedural DVB-J e que permite a apresentação de
PUC-Rio - Certificação Digital Nº 0511038/CA
documentos XHTML.
Dadas as limitações impostas pela linguagem XHTML, discutidas no
Apêndice C, surgiram na Europa duas propostas para a implementação de um
ambiente declarativo, para sistemas que implementam o GEM, utilizando a
linguagem SMIL (W3C, 2005). Uma delas trata de uma implementação realizada
pelo Laboratório de Multimídia e Software para Telecomunicações da
Universidade de Tecnologia de Helsinki (Lamandon et al, 2003); e a segunda faz
parte de um projeto da Information Society Technologies (IST) buscando
investigar formas de melhorar a interatividade com o usuário por meio do avanço
tecnológico provocado pelo DVB-MHP, internet e MPEG4 (Fuhrhop et al, 2003).
Neste capítulo é apresentado, ainda, o Formatador NCL, isto é, a máquina
de apresentação de documentos especificados na linguagem NCL, que é utilizada
como base para o desenvolvimento desta dissertação.
Para cumprir seus propósitos o capítulo está organizado da forma a seguir.
A Seção 3.1 apresenta um sistema que permite o processamento de documentos
XHTML por receptores MHP. A Seção 3.2 apresenta o ambiente declarativo
desenvolvido pela UTH. E, por fim, a Seção 3.3 apresenta o ambiente declarativo
para TV Digital desenvolvido pelo projeto da IST.
Trabalhos Relacionados
48
3.1.
O MHP Processando Documentos XHTML
Dado que o DVB-HTML não se encontra implementado a contento e de
forma a permitir o reaproveitamento do conteúdo presente na Web para
apresentação em sistemas de TV Digital, pesquisadores do Departamento de
Ciência da Computação da Universidade de Bologna propuseram um sistema
capaz de processar conteúdos dessa natureza em receptores MHP (Ferretti et al,
2006).
A proposta consiste em uma arquitetura compreendendo dois componentes
diferentes:
•
um serviço automático de transcodificação, mostrado na Figura 15,
capaz de converter o conteúdo da Web (no formato HTML) para
PUC-Rio - Certificação Digital Nº 0511038/CA
XHTML e repassá-lo para a difusora (para a inserção no carrossel
DSM-CC); e
•
uma aplicação DVB-J capaz de extrair o conteúdo do carrossel e
exibí-lo.
Figura 15 – Arquitetura da proposta do transcodificador.
A estratégia de transcodificação utilizada consiste em, num primeiro
momento, converter o documento de HTML para XHTML Básico que é mais
facilmente processado por clientes de baixo desempenho. O segundo estágio
consiste em remover do documento XHTML elementos que não podem ser
visualizados na TV, reduzindo o tamanho do documento. E, finalmente, é feito
um processamento dos objetos referenciados (inclusive por elos) por esse
documento de forma a torná-los disponíveis no ambiente do cliente.
Trabalhos Relacionados
49
A proposta realiza ainda algumas adaptações para uma melhor navegação
pelo documento:
•
são eliminadas as barras de rolagem. Assim, caso o documento
utilize uma área maior que a tela do usuário para sua exibição, a
aplicação DVB-J divide o documento em páginas; e
•
é criado um novo frame no topo a direita onde são organizados os
elos presentes no documento.
Dessa forma, quando o usuário utiliza as teclas direcionais para esquerda e
direita navega pelas páginas, e quando utiliza as teclas para cima e para baixo
navega pelos elos.
O sistema foi testado em dois ambientes de simulação (o XletView e o
OpenMHP) e em um ambiente DVB-T real. No entanto, o trabalho não menciona
dados importantes como o tamanho da aplicação DVB-J criada, ou o retardo para
PUC-Rio - Certificação Digital Nº 0511038/CA
a iniciação da apresentação do documento. É mencionado apenas que o protótipo
reduz efetivamente o tamanho dos documentos HTML convertidos.
3.2.
Ambiente declarativo para TV Digital – UTH
A solução consiste no uso de uma máquina de apresentação de documentos
SMIL sobre uma implementação de um sistema de TV Digital denominado
Otadigi. Esse sistema é baseado no padrão europeu DVB, utilizando para
transmissão o DVB-T e como middleware o MHP. Dada sua configuração de
parâmetros de telecomunicações, como modulação, canal, taxa de codificação e
guard-interval, permite transferências a uma taxa de bits de cerca de 13,27 Mbps.
Devido às características do middleware, a máquina de apresentação foi
desenvolvida na linguagem JAVA, sendo utilizada a biblioteca gráfica FTV, que é
baseada no HAVI, para construir os elementos de interação com o usuário.
Para a implementação do sistema foi necessário levar em consideração
restrições impostas pelos requisitos de um sistema de TV digital. Originalmente, a
linguagem SMIL não oferece suporte a eventos de interação por controle remoto,
apenas via mouse. Para resolver esse problema, os links são mapeados em botões
FTV. Quanto à questão da navegação, foi incluído ainda um novo atributo nos
links para identificar suas características: actionable para links acionados por
Trabalhos Relacionados
50
botões coloridos; e focusable para links que serão acessados pelas teclas de
navegação.
Para o cenário de testes foram criados dois programas diferentes: um
teletexto digital e um programa de futebol. O conteúdo das apresentações foi
acessado por 3 meios diferentes: pelo canal de broadcast, utilizando uma banda de
3Mb/s do sistema Otadigi; por um modem analógico de 56Kb/s; e por uma
combinação dos dois (canal de broadcast para o conteúdo genérico e o modem
para o específico/personalizado).
O tamanho da máquina de apresentação totalizou cerca de 1,4 MB. No
ambiente de testes utilizado isso acarretou um tempo de carregamento (download
para memória local) de 19 segundos e um tempo de iniciação de 7 segundos. Parte
desse atraso se deve à utilização de uma biblioteca XML que ocupa cerca de 66%
do espaço da máquina de apresentação.
PUC-Rio - Certificação Digital Nº 0511038/CA
O estudo apontou ainda o uso do modem analógico como um ponto fraco do
sistema. O modem foi testado como forma de avaliar a viabilidade de
disponibilizar parte dos recursos necessários à apresentação via um canal de
retorno. No entanto, o uso de tal recurso chegou a gerar um atraso de 100
segundos em relação ao uso apenas do canal de broadcast.
O uso dessa solução mostrou ser necessário:
•
uma otimização da biblioteca XML, salvo no caso da utilização em
um sistema MHP 1.1 que já prevê tal biblioteca nativamente;
•
se possível, a integração da máquina de apresentação SMIL ao
receptor, para diminuir o tempo de carregamento do player;
•
a criação de métodos para utilização de stream events para
sincronizar a máquina de apresentação SMIL com o fluxo
transmitido.
3.3.
Ambiente declarativo para TV Digital – ICECREAM
ICECREAM visa levar a interatividade com o usuário a um nível mais
avançado. Para isso, foi proposto o uso das tecnologias oferecidas pelo
middleware DVB-MHP, a Internet e o padrão MPEG-4.
Trabalhos Relacionados
51
A solução desenvolvida pelo projeto, que faz uso do SMIL, prevê o acesso à
Internet pelo canal de retorno do receptor. Nessa solução, a interpretação do
documento SMIL é feita por um Xlet interpretador que cuida de todo controle de
temporização e leiaute informado no documento. O uso do SMIL se dá de forma a
integrar o vídeo principal com recursos interativos adicionais e personalizados via
um provedor de serviço na Internet.
Para prover um nível maior de interatividade, o documento SMIL é
moldado de acordo com o perfil de preferência do usuário que está requisitando o
serviço em tempo de apresentação. Essa customização do documento ocorre
através da interpretação dos parâmetros presentes na query HTTP da requisição
feita pelo receptor ao provedor de conteúdo. O processo ocorre, basicamente, da
mesma forma como é feito para documentos HTML dinâmicos.
Como referência, é apresentada no projeto a implementação de um
PUC-Rio - Certificação Digital Nº 0511038/CA
programa que mostra uma orquestra em um concerto de música clássica. A
interatividade ocorre através da criação de um documento SMIL que possibilita o
fornecimento de informações sobre o compositor da obra, o condutor da orquestra
e a sala do concerto (programação, compra de ingresso). A personalização neste
caso é feita, por exemplo, através do oferecimento de informações de
programação de casas de concerto na região geográfica específica do
telespectador.
No projeto não são apresentados dados referentes ao desempenho do
sistema proposto.
4
O Fomatador NCL
O Formatador NCL compõe a máquina de apresentação de documentos
NCL. Ele é o elemento responsável por receber a especificação de um
hiperdocumento (sua estrutura, seus relacionamentos e a descrição da forma de
exibição desejada) e concretizá-la na apresentação propriamente dita (Rodrigues,
2003).
No entanto, a implementação Java do Formatador NCL é voltada para a
plataforma Java SE. Para que essa implementação possa executar com o
PUC-Rio - Certificação Digital Nº 0511038/CA
comportamento esperado em sistemas de TV digital, são necessárias algumas
adaptações e otimizações a serem discutidas neste capítulo.
Para cumprir seus propósitos o capítulo está organizado da forma a seguir.
A Seção 4.1 faz uma breve descrição da versão Java do Formatador NCL. A
Seção 4.2 sugere uma otimização no método utilizado pelo Formatador para
leitura e conversão do documento NCL. A Seção 4.3 sugere o desmembramento
do Formatador em componentes de software. E, por fim, a Seção 4.4 sugere
algumas mudanças nos em cada módulo do formatador.
4.1.
O Formatador NCL Java
A implementação Java atual do Formatador pode ser estruturada em
módulos como mostrado na Figura 16. Para realizar suas tarefas, tal
implementação conta com o auxílio do conversor, do escalonador e informações
sobre o contexto de execução. Além dessas entidades, o Formatador faz uso dos
serviços oferecidos por mais três elementos: o Gerenciador de Leiaute, o
Gerenciador de Documentos e o Gerenciador de Adaptadores para Exibidores.
PUC-Rio - Certificação Digital Nº 0511038/CA
O Fomatador NCL
53
Figura 16 – Arquitetura do Formatador NCL.
O processo de apresentação se inicia quando o Formatador recebe um
comando de edição específico para iniciar a apresentação de um documento. A
partir desse comando, o Formatador requisita os serviços do Gerenciador de
Documentos.
O Gerenciador de Documentos tem a responsabilidade de processar os
comandos de edição delegados pelo Formatador e realizar a manutenção dos
documentos NCL ativos em uma base de documentos. Ao receber um comando
de edição, o gerenciador poderá: realizar operações sobre a base de documentos
(ex.: exclusão de documento, exclusão de um elo em um documento, entre
outras); ou, caso o comando de edição contenha especificações XML (por
exemplo, para adição de documentos, elos, conectores, entre outros) (Soares et al.,
2006), o Conversor NCL é acionado.
O Conversor NCL é a entidade responsável por transformar especificações
XML em entidades do modelo conceitual NCM. São essas entidades que poderão
ser, efetivamente, armazenadas na base de documentos pelo Gerenciador de
Documentos.
As entidades inseridas na base de documentos estão aptas a serem
apresentadas. Para iniciar esse processo, no entanto, é preciso convertê-las para o
O Fomatador NCL
54
modelo de execução interno do Formatador. Isso é feito através do Conversor do
Modelo de Execução.
Essa segunda conversão é realizada sob demanda. O critério utilizado é a
distância, contada em elos, a partir do objeto de mídia em execução, ou seja, à
medida que novos objetos de mídia são executados, aqueles a uma certa distância
serão compilados. Cabe ressaltar que essa distância é um dos parâmetros de
configuração do Formatador.
Outra entidade envolvida no processo de apresentação é o Escalonador. À
medida que novos elos causais são adicionados ao modelo, o Formatador notifica
tal entidade. A partir daí, o Escalonador se cadastra como observador de tais elos
para receber uma notificação quando a condição prevista nestes for satisfeita.
Quando, enfim, o Escalonador receber a notificação do elo, este executará a ação
por ele representada.
PUC-Rio - Certificação Digital Nº 0511038/CA
O Formatador tem, ainda, a responsabilidade de emitir notificações quando
novos objetos de execução são adicionados ao seu modelo de execução. Cada
objeto de execução representa a instância de um nó a ser exibido, especificado no
documento NCL, contendo todas as suas informações, inclusive as suas
características de apresentação provenientes do descritor de apresentação
associado. Quando esse descritor existir, o Gerenciador de Leiaute, se necessário,
cria a superfície para a exibição do conteúdo do nó.
Ainda no momento em que novos objetos de execução são adicionados, é
feita uma avaliação das alternativas de objetos que podem ser resolvidas
estaticamente. São avaliadas as informações do contexto de execução
(preferências do usuário, poder de processamento, recursos disponíveis) para que,
a partir das regras definidas no documento, seja feita a escolha do objeto de
execução adequado.
Mais adiante, no momento em que o Escalonador requisita a execução de
um objeto de mídia, ocorre a interação de mais um módulo do Formatador: o
Gerenciador de Adaptadores para Exibidores. Esse gerenciador tem à sua
disposição um conjunto de adaptadores para os exibidores que tratam
determinados tipos de conteúdo suportados pelo ambiente do Formatador NCL. A
partir do objeto de execução, o gerenciador seleciona o adaptador de um exibidor
capaz de reproduzir o conteúdo de tal objeto.
O Fomatador NCL
55
Como exemplo de exibidores pode-se citar: XHTML, LUA, imagens
estáticas (JPEG, PNG, GIF), áudio (WAVE, MPEG-1, MPEG-2) e vídeo (MPEG1, MPEG-2).
4.2.
O GEM processando um documento NCL
Como visto na Seção 4.1, o primeiro passo para a execução de um
documento NCL é a sua conversão de uma especificação XML para objetos Java
NCL. Essa operação consome tempo, processamento e espaço no receptor para
armazenar uma biblioteca que realize a tradução do documento XML. Esses
requisitos levam à elaboração de dois cenários diferentes para tratar o processo de
conversão: a pré-conversão do documento e a conversão no receptor.
PUC-Rio - Certificação Digital Nº 0511038/CA
No primeiro cenário, a conversão ocorre no provedor de conteúdo. Nesse
caso, ao invés de receber documentos NCL, os receptores processariam
diretamente objetos Java serializados2, tornando opcional a presença de uma
biblioteca capaz de processar documentos XML. Esse cenário é mais indicado na
presença de um receptor com recursos de processamento/memória bastante
escassos. Contudo, os receptores que se basearem nesse modelo perderão a
capacidade de processar diretamente documentos NCL. Eles não seriam capazes
de atuar em cenários onde lhes fosse exigido, por exemplo, processar documentos
NCL dinâmicos presentes na WEB via canal de retorno. Sua capacidade de
processamento restringir-se-ia apenas a objetos serializados.
Na Figura 17 é ilustrado esse processo de pré-conversão do documento NCL.
Nele o documento é convertido pelo provedor de conteúdo, depois é serializado e
enviado para o carrossel de objetos para, em seguida, ser desserializado e
processado pelos receptores.
2
A serialização de objetos JAVA permite a codificação de um objeto e de todos os objetos
por ele referenciados direta ou indiretamente em um fluxo de bytes. Permite ainda a reconstrução
do “grafo” de objetos a partir de um fluxo. Este fluxo possibilita o envio por rede e o
armazenamento em arquivos, por exemplo.
O Fomatador NCL
56
Figura 17 – Pré-processamento do documento NCL.
PUC-Rio - Certificação Digital Nº 0511038/CA
No segundo cenário, a conversão ocorre no receptor. Esse cenário é
antagônico ao primeiro: requer um receptor com um maior poder de
processamento/armazenamento e permite o processamento de documentos NCL
em seu estado bruto. A Figura 18 ilustra esse processo em que o documento é
enviado para o carrossel de objetos sendo convertido apenas no ambiente dos
receptores.
Figura 18 – Processamento do documento NCL no receptor
Essa é a forma convencional de operação do Formatador NCL. Ela requer,
da parte do receptor, a presença de uma biblioteca para o processamento de
arquivos XML.
O Fomatador NCL
57
4.3.
A Arquitetura de Implantação
Na Seção 4.1 foi mostrado o caráter modular da arquitetura do Formatador
NCL. Essa característica possibilita a realização de otimizações em seu processo
de implantação. Os seguintes módulos podem ser identificados:
•
Núcleo do Formatador, formado pelo Formatador e compreendendo
o Escalonador, o Conversor e as Informações do Contexto;
•
Gerenciador de Leiaute;
•
Gerenciador de Documentos; e
•
Gerenciador de Adaptadores para Exibidores. Sendo que cada
exibidor por ele gerenciado constitui um módulo específico.
Cada módulo abrange um componente de software diferente. Esses
PUC-Rio - Certificação Digital Nº 0511038/CA
componentes serão enviados para os receptores para a reprodução do documento
NCL. Contudo, apenas os módulos necessários em um dado cenário deverão ser
carregados.
Caso o receptor forneça a capacidade de armazenamento de aplicações, é
possível otimizar-se o tempo de iniciação do Formatador ao armazenar localmente
os módulos comumente utilizados. No entanto, algum mecanismo de controle de
versão torna-se necessário, afim de evitar problemas de compatibilidade e suporte
a atualizações dos módulos.
4.3.1.
Estrutura do Sistema Baseada em Componentes
Ao modelar o Formatador NCL de forma a baseá-lo em componentes de
software, estes devem compor unidades binárias desenvolvidas de forma
independente que cooperem através de interfaces bem definidas (Szyperski,
2002). Têm-se, assim, as seguintes vantagens:
•
Capacidade de reutilizar esses componentes em outras aplicações.
Ou seja, um mesmo componente ser utilizado para TV, desktop,
ferramentas de autoria ou até outro tipo de aplicação de forma
independente;
•
Fácil manutenção e customização desses componentes para oferecer
novas funcionalidades e recursos. Ou seja, alguns componentes
O Fomatador NCL
58
podem sofrer customizações individualmente, como, por exemplo,
para IPTV (Weber & Newberry, 2006);
•
Possibilidade de fornecer unidades de implantação (deployment)
independentes; e
•
A linguagem de programação de cada componente não precisa ser
necessariamente a mesma.
No entanto, em sistemas GEM não se pode tirar proveito de todas as
vantagens citadas. Seu ambiente, por exemplo, permite apenas uma linguagem de
programação. Além disso, devido ao fato do programa ter como requisito a
necessidade de operar em uma plataforma com recursos limitados, nenhum
framework/infra-estrutura de componentes (como, por exemplo, CORBA CCM)
deve ser utilizado para a implementação dos mesmos. Porém, é válido para a
elaboração do sistema o uso dos conceitos de componentes independentes de
PUC-Rio - Certificação Digital Nº 0511038/CA
infra-estruturas comerciais adotadas (Brown & Wallnau, 1999), tornando possível
uma futura adoção de tais infra-estruturas, como sugerido na Seção 6.1.
4.4.
Adaptações e Otimizações no Formatador NCL
O primeiro aspecto a levar em consideração na implementação do
Formatador NCL Xlet é que este deve utilizar apenas as bibliotecas fornecidas
pelo JVM mínimo necessário para o GEM, ou seja, portar o código escrito para
uma configuração de máquina virtual Java SE para uma configuração Java ME
(CDC com PBP). A seguir são abordados aspectos particulares de cada
componente.
4.4.1.
A Pré-conversão de Documentos NCL e o Módulo Gerenciador de
Documentos
O conversor de documentos NCL está contido dentro do módulo
Gerenciador de Documentos. Ele é responsável por converter os documentos
NCL (descritos no formato XML) em objetos Java. Esse processo, no entanto,
requer a presença de uma biblioteca XML capaz de traduzir tais documentos.
Num ambiente de TV Digital, a adição de tal biblioteca ocupa tempo de
O Fomatador NCL
59
transmissão e, conseqüentemente, ocasiona um maior retardo na iniciação da
apresentação.
A solução proposta na Seção 4.2 prevê a criação de um ambiente de préconversão de documentos NCL. No entanto, de forma a não alterar a interface
fornecida pelo Componente Gerenciador de Documentos e, ainda assim, permitir
a pré-conversão, optou-se por adotar o seguinte processo. No ambiente de préconversão (no produtor de conteúdo, por exemplo), o Gerenciador de Documentos
é instanciado. Em seguida, todos os documentos necessários para a apresentação
são convertidos e adicionados à sua base de documentos. Ao final do processo, o
componente é serializado e enviado aos receptores. Dessa forma, elimina-se a
necessidade do envio da biblioteca XML para o receptor tornando, porém, o
Gerenciador de Documentos incapaz de processar comandos de edição NCL que
necessitem da conversão de especificações XML.
PUC-Rio - Certificação Digital Nº 0511038/CA
Esse cenário leva à criação de um padrão de apresentação de Documentos
NCL Orientados a Sincronização por Contexto. Nesse padrão, o produtor de
conteúdo criará vários contextos (composições ou documentos) que serão préconvertidos e enviados para os receptores no componente Gerenciador de
Documentos serializado antes do início da apresentação. No momento desejado, a
emissora enviará um comando de edição para a iniciação do contexto. É
importante notar que os documentos desse padrão caracterizam-se por possuir
vários contextos sem elos definidos entre eles.
O exemplo mostrado na Figura 19 ilustra a transmissão de uma partida de
futebol seguindo o padrão de apresentação de Documentos NCL Orientados a
Sincronização por Contexto. Primeiramente, é enviado o Gerenciador de
Documentos juntamente com todos os contextos envolvidos na apresentação da
partida de futebol (no caso, os dois documentos com os identificadores “Futebol”
e “intervalo”). A seguir, é enviado um comando de edição NCL do tipo
startDocument para iniciar a exibição do documento “Futebol”. Durante o jogo é
enviado o mesmo comando no momento em que ocorre o gol de alguma das
equipes, iniciando a exibição de um contexto responsável por mostrar uma
animação comemorativa. Ao longo do jogo, podem ser enviados outros comandos
e pode ser acionado o início da exibição de um outro documento pré-convertido,
representado na Figura 19 pelo identificador (“id”) “intervalo” e que representa a
apresentação do intervalo de jogo.
PUC-Rio - Certificação Digital Nº 0511038/CA
O Fomatador NCL
60
Figura 19 – Modelo de uma apresentação NCL orientada a sincronização por contexto.
Quando não houver a necessidade de pré-conversão, o componente
Gerenciador de Documentos poderá ser instanciado no receptor. Este é o caso, por
exemplo, de receptores que já possuam nativamente uma biblioteca para a
tradução de documentos XML, ou, ainda, sistemas que possibilitem a persistência
de dados.
4.4.2.
Adaptações do Módulo do Núcleo do Formatador
A porta de entrada para este componente é a entidade que implementa a
interface IFormatter. Atualmente, essa interface encontra-se especificada de
acordo com o diagrama da Figura 20. A figura mostra que essa interface é
responsável por:
•
Processar comandos para o controle da apresentação, como reset
(reiniciar), close (fechar), startDocument (iniciar a apresentação de
um documento a partir de uma âncora), stopDocument (finalizar a
apresentação de um documento), pauseDocument (pausar a
apresentação de um documento) resumeDocument (continuar a
apresentação de um documento);
O Fomatador NCL
61
Realizar a conversão de um documento (através do método
•
compileDocument) para a estrutura de execução interna do
Formatador. Como já mencionado na Seção 4.1, essa conversão é
feita de acordo com uma profundidade definida pelo método
setDepth; e
Processar os comandos de edição (que são tratados pelos métodos
•
abaixo do método resumeDocument na Figura 20 e, em seguida,
enviados para o Gerenciador de documentos).
Essa interface, no entanto, apresenta-se fortemente acoplada ao
componente Gerenciador de Documentos. De forma a diminuir o acoplamento
mencionado, foram realizadas as seguintes adaptações:
•
Os eventos de edição passaram a ser enviados diretamente para o
componente Gerenciador de Documentos;
PUC-Rio - Certificação Digital Nº 0511038/CA
•
Foi criada uma interface do tipo Listener (de acordo com o padrão
de desenho “Observador”) (Gamma, 2002), permitindo ao
Gerenciador de Documentos a emissão de notificações na
ocorrência de um evento de edição bem sucedido;
•
Foram retirados os métodos que representam os comandos de
edição da interface IFormatter.
62
PUC-Rio - Certificação Digital Nº 0511038/CA
O Fomatador NCL
Figura 20 – Digrama de classe da interface IFormatter.
Assim, caso o Núcleo do Formatador ofereça suporte a eventos de edição
basta que, internamente, alguma entidade implemente a interface representada no
digrama da Figura 21 e se cadastre como Listener do Gerenciador de
Documentos. No momento que um documento for alterado por um comando de
edição todos os Listeners serão notificados.
PUC-Rio - Certificação Digital Nº 0511038/CA
O Fomatador NCL
63
Figura 21 – Diagrama da interface NCLEditingCommandListener.
4.4.3.
Adaptações do Módulo Gerenciador de Adaptadores para Exibidores
e os Adaptadores Criados
A adaptação necessária a este componente se dá ao definir a forma como a
classe que implementa a interface IFormatterPlayerAdapter obtém a instância do
adaptador do exibidor. Sempre que for requisitado um adaptador ao gerenciador,
este verifica sua existência no receptor. Caso não logre sucesso, o gerenciador
tentará realizar o carregamento do exibidor necessário para a apresentação através
do IGingaXletDeployer que é detalhado na Seção 5.2.2. Essa interface abstrai do
O Fomatador NCL
64
Gerenciador de Adaptadores a localização e o protocolo para a obtenção do
adaptador.
Os adaptadores criados para a validação da implementação foram o de
texto, o de imagens estáticas e o NCLet. Esse último, em especial, é responsável
por realizar a ponte com o ambiente procedural. O conteúdo de sua exibição são
programas descritos em código binário Java.
4.4.4.
Adaptações do Módulo Gerenciador de Leiaute
No modelo utilizado pelo Formatador NCL, a construção da interface
gráfica, ou seja, os componentes gráficos onde os objetos de mídia serão exibidos,
é feita pelo Gerenciador de Leiaute.
PUC-Rio - Certificação Digital Nº 0511038/CA
Este componente fornece a implementação para duas entidades: o
IFormatterLayout que, de fato, gerencia o leiaute; e o IFormatterRegion que
contém a informação do elemento da interface gráfica em si.
A Figura 22 mostra o diagrama de classes do módulo de leiaute, introduzido
pelo Formatador, apresentando uma modificação: a adição do método
createRegion na interface IFormatterLayout. Dessa forma, as regiões serão
criadas apenas a partir de seu gerenciador, permitindo que este mantenha uma
referência para todas aquelas criadas.
Diferente do ambiente do desktop, o perfil PBP da configuração CDC não
oferece suporte à biblioteca gráfica SWING (Robinson & Vorobiev, 2003),
apenas AWT (Geary & McClellan, 1997). Nesse perfil, é permitida apenas a
criação de uma única janela (Frame). Com isso, a implementação da classe
IFormatterRegion, responsável por criar os elementos de interface gráfica, foi
alterada para atender tais requisitos.
PUC-Rio - Certificação Digital Nº 0511038/CA
O Fomatador NCL
Figura 22 – Diagrama de classes do modelo de leiaute do Formatador NCL.
65
5
O Fomatador NCL Xlet
Atualmente, o Formatador NCL encontra-se implementado em duas
linguagens: JAVA e C++. Com o GEM oferecendo um ambiente JAVA para a
execução global de aplicações interativas, tem-se a possibilidade de portar a
implementação do Formatador para sistemas que implementem tal framework.
No entanto, a implementação Java do Formatador NCL é voltada para a
plataforma Java SE. Para que ela possa executar com o comportamento esperado
em sistemas de TV digital, são necessárias algumas adaptações e otimizações a
PUC-Rio - Certificação Digital Nº 0511038/CA
serem discutidas neste capítulo.
Para cumprir seus propósitos este capítulo está organizado da forma a
seguir. A Seção 5.1 detalha como desmembrar a arquitetura do Formatador em
componentes independentes e as possíveis otimizações que podem ser realizadas
nessa arquitetura. A Seção 5.2 trata da implementação do ambiente a partir das
propostas das seções anteriores e descreve o processo de implantação
(deployment) do sistema proposto nesta dissertação. Ao final da seção, são
apresentados mecanismos para a integração desse mesmo sistema com o padrão
MHP. E, por fim, a Seção 5.3 apresenta o ambiente onde foram realizados os
testes da implementação.
5.1.
Os Componentes do Formatador NCL Xlet
Nas seções a seguir serão descritos os componentes que compõem o
Formatador NCL.
O Fomatador NCL Xlet
67
5.1.1.
Gerenciador de Leiaute
Figura 23 – Duas implementações do componente Gerenciador de Leiaute
Esse componente é responsável por controlar a interface gráfica do
Formatador. Ele possui a capacidade de criar as regiões onde serão exibidos os
objetos de mídia. Por esse motivo ele deve sofrer uma customização para cada
PUC-Rio - Certificação Digital Nº 0511038/CA
ambiente gráfico (como X Window System) (Scheifler & Gettys, 1996) no qual
tais objetos serão exibidos.
A interface fornecida por esse componente é a IFormatterLayout, descrita
na Seção 4.4.4, e as interfaces necessárias para sua execução irão depender da
implementação. A Figura 23 ilustra duas implementações diferentes desse
componente: uma para desktops e outra customizada para TV. Na implementação
para TV percebe-se a necessidade da interface IGingaXletConfiguration. Maiores
detalhes sobre essa interface e essa implementação são encontrados na Seção
4.4.4.
Esse componente não é obrigatório. Apesar de na maioria das vezes haver a
necessidade de seu uso, em apresentações onde for necessário apenas o
sincronismo entre objetos de mídia do tipo áudio, não há a necessidade do
carregamento desse componente.
O Fomatador NCL Xlet
68
5.1.2.
Gerenciador de Documentos
Figura 24 – Componente Gerenciador de Documentos.
Esse componente é responsável por gerenciar uma base de documentos.
Nesse processo o componente irá adicionar, remover e alterar os documentos da
base. Dentre outras coisas, o componente Gerenciador de Documentos é capaz de
receber a especificação de documentos XML, verificar se estes possuem uma
PUC-Rio - Certificação Digital Nº 0511038/CA
sintaxe/semântica NCL válida e convertê-los para objetos Java. Para realizar esse
processo, o componente necessita da presença de uma biblioteca capaz de
processar documentos XML. Basicamente, o componente é formado pelas
seguintes entidades, mostradas na Figura 16: Gerenciador de Documentos,
Conversor NCL e a Base de Documentos.
O recebimento de documentos XML é feito através da interface
INCLDocumentManager, mostrada na Figura 24. O conjunto de métodos
providos por essa interface permitem ao componente processar os Comandos de
Edição NCL.
A necessidade desse componente vai depender da implementação do
componente do Núcleo do Formatador. Uma implementação mais simples de
núcleo que, por exemplo, processe apenas um documento (incluindo os
documentos por ele referenciados) por vez e não dê suporte a eventos de edição
NCL não necessitaria desse componente.
O Fomatador NCL Xlet
69
5.1.3.
Núcleo do Formatador
Figura 25 – Duas implementações do componente do núcleo do formatador.
Dos componentes apresentados esse é o mais importante e obrigatório. Ele
PUC-Rio - Certificação Digital Nº 0511038/CA
será o responsável por controlar a apresentação e corresponde diretamente ao
núcleo do Formatador mostrado na Seção 3.4.
Esse componente pode ter sua implementação customizada de forma a
simplificar o seu funcionamento. Como mostrado na Figura 25, pode-se criar uma
implementação simples de Núcleo independente do Gerenciador de Documentos.
Esse componente depende ainda das interfaces IFormatterLayout (oferecida pelo
Gerenciador de Leiaute) e IPlayerAdapterManager (oferecida pelo Gerenciador
de Adaptadores para Exibidores, que será visto na seção a seguir).
De acordo com as otimizações propostas na Seção 4.4.2, a interface
IFormatter possui a assinatura mostrada na Figura 26.
Figura 26 – Duas implementações do componente do núcleo do formatador
O Fomatador NCL Xlet
70
5.1.4.
Gerenciador de Adaptador para Exibidores
Figura 27 – Duas implementações do componente Gerenciador de Exibidores
Esse componente é obrigatório para a execução do Formatador NCL. A
gestão realizada por ele compreende a identificação e instanciação do adaptador
PUC-Rio - Certificação Digital Nº 0511038/CA
para o exibidor necessário para a apresentação de um determinado tipo de
conteúdo.
Assim como o Gerenciador de Leiaute, esse componente apresenta uma
forte dependência com o ambiente no qual será executado (TV, Desktop). Isso
porque, além de, no caso de exibidores de vídeo ou imagens, haver uma
dependência quanto à interface gráfica do ambiente, a forma como são obtidos os
recursos (no caso, os exibidores) depende do ambiente de execução. Num sistema
de TV Digital, por exemplo, os recursos podem estar presentes no carrossel de
objetos DSM-CC, sistema de arquivos local ou canal de retorno. O mecanismo
utilizado para identificação de recursos num sistema GEM é tratado na Seção 4.3.
5.1.5.
Adaptadores para Exibidores
Figura 28 – Duas implementações de adaptadores para exibidores.
O Fomatador NCL Xlet
71
Esse componente constitui uma camada de adaptação para exibidores de um
determinado tipo de conteúdo de forma a torná-los compatíveis com o modelo de
execução do Formatador NCL. Existe uma implementação diferente desse
componente para cada exibidor suportado pelo formatador.
Na apresentação de um dado documento NCL nem todos os exibidores
disponíveis para o Formatador NCL são necessariamente utilizados. Existem, por
exemplo, apresentações que envolvem apenas imagens estáticas, outras apenas
textos. Dessa forma, a obrigatoriedade desse componente depende do tipo de
conteúdo por ele processado e a presença desse conteúdo na apresentação.
Para tornar esse componente independente do protocolo utilizado para a
obtenção do conteúdo a ser exibido, utiliza-se as facilidades oferecidas pela
interface IGingaXletDeployer para o carregamento de arquivos. Isso porque, por
exemplo, antes de obter um arquivo de um carrossel DSM-CC, é necessário
PUC-Rio - Certificação Digital Nº 0511038/CA
estabelecer uma conexão. A interface IGingaXletDeployer abstrai todas essas
peculiaridades. Mais informações sobre o funcionamento dessa classe podem ser
encontradas na Seção 5.2.2 e 5.2.3.
5.2.
Implementação dos Componentes para Sistemas GEM
Esta seção e suas subseções descrevem a implementação do ambiente de
execução declarativo, baseado na linguagem NCL. Esta implementação é baseada
na implementação Java do Formatador NCL. A partir dela são feitas adaptações
para adequá-la às propostas das Seções 4.1, 4.2 e 4.3.
O primeiro aspecto a levar em consideração na implementação do
Formatador NCL Xlet é que este deve utilizar apenas as bibliotecas fornecidas
pelo JVM mínimo necessário para o GEM, ou seja, portar o código escrito para
uma configuração de máquina virtual Java SE para uma configuração Java ME
(CDC com PBP). A seguir são abordados aspectos particulares de cada
componente.
O Fomatador NCL Xlet
72
5.2.1.
O Carregamento Dinâmico
A chave para a criação de uma arquitetura modular, onde os módulos
podem ser carregados dinamicamente no decorrer da execução da aplicação, é o
uso
das
tecnologias
oferecidas
pelas
classes
java.lang.Class
e
java.lang.ClassLoader.
Cada classe Java disponível para uso por uma aplicação é carregada por um
objeto ClassLoader a ela associado. Ou seja, quando o Gerenciador de
Aplicações, abordado na Seção 2.4, inicia a execução do Xlet, todas as classes
disponíveis para uso por este Xlet estão associadas a um ClassLoader uilizado
para carregá-las inicialmente em memória. Ao longo da execução da aplicação,
esta instância de ClassLoader pode ser usada para o carregamento de novas
PUC-Rio - Certificação Digital Nº 0511038/CA
classes que antes não se encontravam disponíveis para o uso pela aplicação. A
este processo dá-se o nome de Dynamic Class Loading (Liang & Bracha, 1998),
ou Carregamento Dinâmico de Classes.
O carregamento dinâmico de classes não se restringe apenas às classes
presentes no ambiente de execução da aplicação. É possível carregar classes
disponíveis em ambientes remotos através da transferência do código binário
destas classes via protocolos de rede. A classe java.net.URLClassLoader
utiliza, por exemplo, uma conexão baseada no protocolo especificado via URL
(desde que implementado pelo ambiente de execução Java local) para transferir e
carregar o código binário das classes. O carregamento dinâmico ainda traz um
benefício denominado lazy loading: ao atrasar o carregamento o máximo possível,
ocorre uma economia de memória e uma melhora no tempo de resposta do
sistema. Isso porque a classe só é carregada quando requisitado e não na
inicialização do sistema.
A partir do momento em que a classe encontra-se disponível para uso, por
não possuir uma referência estática, seu referenciamento e instanciação deverão
ocorrer de forma dinâmica, ou seja, para obter uma referência para a nova classe
utiliza-se o método estático “forName” da classe java.lang.Class passando
como parâmetro o nome da classe a ser instanciada. Este método retornará uma
instância da classe java.lang.Class. Com esse objeto pode-se, finalmente,
O Fomatador NCL Xlet
73
criar uma instância da classe (dinamicamente carregada) através do método
“newInstance”.
No sistema proposto foi criada uma entidade que se responsabiliza pelo
carregamento dinâmico dos módulos do formatador e a extração de tais módulos
do fluxo MPEG-2: o GingaXletDeployer.
5.2.2.
O Módulo de Implantação
Esse módulo é responsável por realizar a implantação do ambiente
declarativo. A implementação desse módulo vai depender da plataforma para a
qual o ambiente declarativo se destina. Pode oferecer, inclusive, mecanismos
sofisticados de implantação/monitoramento dos componentes. No entanto, no
PUC-Rio - Certificação Digital Nº 0511038/CA
caso de sistemas GEM sua implementação deve ser simplificada.
Para a implementação desse componente foram criadas quatro classes:
GingaXlet,
IGingaXletConfiguration,
IGingaXletDeployer
e
StreamEventHandler.
Figura 29 – Classe GingaXlet.
A classe GingaXlet, mostrada na Figura 29, é a implementação da interface
Xlet necessária para o modelo de programação do Java TV. Essa classe é o ponto
de entrada da aplicação e, através dela, o Gerenciador de Aplicações do receptor
controlará o ciclo de vida da aplicação. A assinatura dessa classe é idêntica a de
um Xlet mostrada na Figura 9 na Seção 2.4. A classe GingaXlet possui referência
para todos os componentes instanciados no sistema e para a entidade
StreamEventHandler, que será apresentada a seguir. A utilidade desses atributos
será apresentada na Seção 5.2.3.
O Fomatador NCL Xlet
74
Figura 30 – Classe IGingaXletConfiguration.
A classe que implementa a interface IGingaXletConfiguration, mostrada na
Figura 30, guarda parâmetros de configuração para a execução da aplicação.
Através dela a aplicação pode acessar parâmetros provenientes do Gerenciador de
Aplicações, fornecidos na inicialização da aplicação via sinalização ou presentes
em arquivos de configuração. Existem dois parâmetros importantes fixados pela
IGingaXletConfiguration, são eles: a localização das bibliotecas disponíveis, ou
PUC-Rio - Certificação Digital Nº 0511038/CA
seja, o diretório no qual os componentes e demais bibliotecas estarão disponíveis;
e a localização do objeto de eventos a partir do qual serão enviados os comando
de edição NCL.
A instanciação dessa classe ocorre no momento de iniciação (chamada ao
método “initXlet”) do Xlet. Isso porque essa classe deve acessar o contexto do
Xlet para ter acesso às suas propriedades.
Figura 31 – Interface IGingaXletDeployer.
A classe que implementa a interface IGingaXletDeployer, mostrada na
Figura 31, é responsável pela implantação do Formatador. O processo todo é
realizado quando chamado o método deployFormatter. Esse método esconde toda
a lógica de localização dos componentes (que podem apresentar-se no fluxo
MPEG-2, no sistema de arquivos local ou serem obtidos via canal de retorno),
quais componentes serão carregados e a conexão entre tais componentes. Mais
detalhes sobre o funcionamento desse método são fornecidos na Seção 5.3. Em
contrapartida, seu método undeployFormatter é responsável por realizar a
O Fomatador NCL Xlet
75
finalização dos componentes permitindo, caso o ambiente permita, o
armazenamento destes para futuro reuso.
A classe possibilita, ainda:
•
O carregamento de classes a partir da URL de uma biblioteca Java;
•
A pré-busca (prefetch) de classes a partir da URL de uma biblioteca
JAVA;
•
O carregamento de arquivos a partir de uma URL de localização do
arquivo;
•
E o pré-carregamento de arquivos a partir de uma URL de
localização do arquivo.
A classe StreamEventHandler é responsável por tratar os eventos DSM-CC
enviados no fluxo MPEG-2. Sua assinatura, mostrada na Figura 32, é herdada da
interface
org.dvb.dsmcc.StreamEventListener
descrita
na
PUC-Rio - Certificação Digital Nº 0511038/CA
especificação do MHP.
Figura 32 – A classe StreamEventHandler e suas associações.
A implementação do método receiveStreamEvent dessa classe determinará,
por exemplo, o tratamento apropriado para os comandos de edição. Esse
tratamento envolve o envio dos Comandos de Edição NCL para o componente
Gerenciador de Documentos ou a alteração do estado da apresentação do
Formatador. Dessa forma, essa classe possuirá uma referência para o Componente
Gerenciador de Documentos e o Componente do Núcleo do Formatador.
Para exercer suas funções, essa classe deverá se cadastrar, para notificação,
em um objeto de eventos (Stream Event Object) específico do Carrossel de
Objetos.
Esse
objeto
de
eventos
é
obtido
através
da
interface
IGingaXletConfiguration. Ao se cadastrar nesse objeto, a classe será notificada à
medida que os eventos DSM-CC aparecerem no fluxo MPEG-2.
O Fomatador NCL Xlet
76
5.2.3.
O Processo de Implantação do Formatador
A seguir será descrito o processo de implantação do formatador partindo do produtor
de conteúdo.
5.2.3.1.
O Produtor
O produtor de conteúdo será responsável por enviar os componentes e os
documentos para a apresentação. Para isso, o produtor deverá sinalizar, via AIT, a
localização no Carrossel DSM-CC
dos componentes de software e dos
documentos e mídias envolvidas na apresentação.
PUC-Rio - Certificação Digital Nº 0511038/CA
Caso seja adotada a estratégia de pré-conversão do documento NCL
produtor deverá instanciar o Componente Gerenciador de Documentos, adicionar
os documentos necessários para a apresentação e adicionar este novo objeto Java
serializado no mesmo diretório onde se localizarão os componentes.
5.2.3.2.
O Receptor
O processo de implantação do Formatador Xlet inicia-se quando sua
presença é sinalizada para o receptor (por exemplo, através da AIT). Nessa fase é
passada como parâmetro para a aplicação, obrigatoriamente, a localização dos
exibidores e do Stream Event Object através do qual serão recebidos os eventos
de edição.
Depois de recebida a sinalização, o Gerenciador de Aplicações assume o
controle do Formatador com a instanciação da classe GingaXlet. O gerenciador,
então, inicia o ciclo de vida do GingaXlet com a chamada ao seu método initXlet,
herdado da interface Xlet do Java TV.
No processo de preparação da classe GingaXlet, ilustrado na Figura 33, será
realizada a configuração do ambiente através da classe GingaXletConfiguration
(classe que implementa a interface IGingaXletXonfiguration). A essa classe é
passado o Contexto de execução do Xlet de onde é obtida parte dos parâmetros de
configuração utilizados pela aplicação, dentre eles os argumentos passados para a
O Fomatador NCL Xlet
77
aplicação (como o Localizador das bibliotecas e o Localizador do objeto de
eventos que conterá os eventos para a identificação de recursos exposta na Seção
4.3 e demais eventos de edição NCL).
Após a criação da entidade de configuração, é instanciada a entidade de
implantação do Formatador denominada GingaDeployer (classe que implementa a
interface IGingaXletDeployer). Essa entidade, como já mencionado, está
diretamente ligada à versão do Formatador a ser implantada. Ela fará o
carregamento de cada componente realizando sua instanciação e resolvendo suas
dependências.
Feita a implantação do Formatador, o GingaDeployer passará o controle
desta entidade ao GingaXlet. Assim, qualquer alteração no estado da aplicação
(Xlet) poderá ser refletido no estado da apresentação do Formatador via
GingaXlet, ou seja, no momento em que os métodos pauseXlet ou destroyXlet
PUC-Rio - Certificação Digital Nº 0511038/CA
dessa classe forem chamados, a execução do Formatador será interrompida.
Figura 33 – Diagrama de seqüência do processo de preparação do Formatador Xlet.
Ainda no método de iniciação do Xlet será criado o StreamEventHandler. A
essa classe serão passadas as referências para o Componente Gerenciador de
Documentos e o Componente do Núcleo do Formatador.
No método startXlet
da classe GingaXlet, seu atributo que contém a
referência para o StreamEventHandler se cadastrará em um objeto de eventos
DSM-CC (fornecido pelo IGingaXletConfiguration). Esse objeto é representado
pela
classe
DSMCCStreamEvent
do
MHP.
Após
o
cadastro,
o
O Fomatador NCL Xlet
78
StreamEventhandler receberá os comandos de edição e repassará para os
Componentes do Núcleo do Formatador e Gerenciador de Documentos,
permitindo o início da apresentação. Esse processo é mostrado na Figura 34.
Figura 34 – Diagrama de seqüência do processo de inicialização do Formatador Xlet.
No método pauseXlet a apresentação do Formatador é parada (e não apenas
PUC-Rio - Certificação Digital Nº 0511038/CA
pausada) e o StreamEventHandler é descadastrado do objeto de Eventos DSM-CC
deixando de receber os comandos de edição.
No método destroyXlet ocorre o mesmo procedimento do método pauseXlet, no
entanto, é o método undeployFormatter da classe GingaXletDeployer é chamado para
finalizar os componentes.
5.2.4.
Persistência do Formatador NCL Xlet em Receptores MHP
A implementação do Formatador NCL para sistemas GEM proposta nesse
trabalho se adapta facilmente tanto ao mecanismo de plug-ins como ao
armazenamento de aplicações, mostrados no Capítulo 3, sem grandes
modificações.
No caso do mecanismo de plug-ins, a implementação da interface
org.dvb.application.plugins.Plugin
torna-se trivial, sendo necessário
apenas instanciar a implementação da classe GingaXlet e retorná-la no método
initApplication. Dessa forma, o sistema agirá, na presença de um documento
NCL, como se possuísse nativamente a capacidade de interpretá-lo.
No caso da utilização do mecanismo de Application Storage, são grandes as
vantagens apresentadas. Nenhum esforço precisa ser feito em termos de
implementação. A diferença das aplicações que utilizam esse mecanismo está
apenas no processo de sinalização.
O Fomatador NCL Xlet
79
Um fator restritivo na utilização desses dois mecanismos é que eles devem
ser utilizados isoladamente em uma rede de comunicação, ou seja, na
apresentação de um programa deverá ser utilizado apenas um dos tipos de
sinalização possíveis para a execução do Formatador NCL: o convencional que
trata o Formatador como um aplicação Java; a sinalização de um documento
NCL como uma aplicação a ser executada pelo plug-in; ou a sinalização para
execução de uma aplicação armazenada.
5.3.
Testes
Para a validação do sistema criado nesta dissertação foi criado um ambiente
de testes utilizando a configuração de máquina virtual CDC (SUN, 2005b)
PUC-Rio - Certificação Digital Nº 0511038/CA
oferecida pela SUN juntamente com o perfil PBP. Foi utilizada, ainda, uma
implementação do middleware MHP aberta conhecida como OpenMHP (Tucs &
Axel, 2005). Nesse middleware foram realizadas adaptações de forma a melhor
refletir um ambiente de TV Digital. A plataforma escolhida foi um sistema Linux
instalado sobre uma arquitetura x86.
O sistema implantado no teste é mostrado na Figura 35. Ele é composto por:
•
Um Núcleo do Formatador com suporte à edição ao vivo;
•
Um Gerenciador de Leiaute customizado para TV;
•
Um Gerenciador de Documentos customizado para TV;
•
Um Gerenciador de Exibidores customizado para TV;
•
Um componente exibidor de Texto customizado para TV; e
•
Um componente exibidor de Imagem customizado para TV.
O Fomatador NCL Xlet
80
Figura 35 – Digrama de componentes do Sistema testado.
O tamanho final dos componentes implementados é mostrado na Tabela 1,
PUC-Rio - Certificação Digital Nº 0511038/CA
sendo que:
•
O
arquivo
“Deployer.jar”
corresponde
ao
componente
de
“Compile.jar”
corresponde
ao
Gerenciador
de
implantação;
•
O
arquivo
Documentos;
•
O arquivo “Ginga.jar” corresponde ao Núcleo do Formatador,
Gerenciador de exibidores e Gerenciador de Leiaute somados;
•
O arquivo “ImagePlayerAdapter.jar” corresponde ao componente do
exibidor de imagens estáticas; e
•
O arquivo “TextPlayerAdapter.jar” corresponde ao componetne
exibidor de texto.
Componente
Deployer.jar
Compiler.jar
Ginga.Jar
Diserializer.Jar
ImagePlayerAdapter
TextPlayerAdapter
Total
Tabela 1 – Componentes do formatador GingaXlet
Tamanho
6,5 KB
111 KB
148 KB
1,5 KB
4,4 KB
4,3 KB
275,7 KB
A fim de verificar a viabilidade da serialização do componente Gerenciador
de Documentos, foram realizados testes de desempenho comparando dois
O Fomatador NCL Xlet
81
cenários: serialização contra a conversão do documento XML. Na serialização o
tempo foi medido desde a leitura do objeto serializado (que foi pré-convertido) até
a presença de sua instância. Na conversão o tempo foi medido entre a leitura do
documento XML até a presença da instância do Gerenciador de Documentos
juntamente com o documento convertido. Os arquivos testados fazem parte de um
conjunto de documentos elaborados pelo Laboratório de Telemídia da Puc-Rio
para o teste de conformidade do Ginga-NCL. Para cada arquivo testado foram
realizados 1000 ensaios. Nos testes, os documentos a serem executados foram
adicionados ao Gerenciador de Documentos e este foi serializado. A
implementação utilizada da interface IGingaXletDeployer realiza a implantação
do Formatador através da desserialização do componente Gerenciador de
PUC-Rio - Certificação Digital Nº 0511038/CA
Documentos e instanciação dos demais componentes do sistema.
Serialização(ms)
Conversão(ms)
Documentos
Mínimo Máximo Médio Mínimo Máximo
connectorBase.ncl
10
15
11
25
29
descriptor01.ncl
26
60
31
47
54
descriptor02.ncl
27
134
33
49
54
descriptor03.ncl
33
60
38
55
67
descriptor04.ncl
33
96
39
56
152
descriptor05.ncl
27
49
30
49
54
descriptor06.ncl
26
42
28
47
53
descriptor07.ncl
30
38
32
53
61
descriptor08.ncl
33
61
35
56
156
descriptor09.ncl
27
33
28
49
55
descriptor10.ncl
27
34
28
49
56
descriptor11.ncl
27
33
28
49
56
descriptor12.ncl
26
43
28
49
55
Structure01.ncl
9
21
10
11
14
Structure02.ncl
9
19
10
11
14
Structure03.ncl
9
19
10
11
18
Structure04.ncl
9
18
10
12
63
Structure05.ncl
9
14
10
11
19
Tabela 2 – Resultados dos testes de Serialização versus conversão
Médio
26
49
50
57
59
50
49
55
59
50
51
50
50
12
12
12
13
12
Os resultados obtidos pelos testes são mostrados na
Documentos
connectorBase.ncl
descriptor01.ncl
descriptor02.ncl
descriptor03.ncl
descriptor04.ncl
descriptor05.ncl
descriptor06.ncl
descriptor07.ncl
descriptor08.ncl
Serialização(ms)
Mínimo Máximo
10
15
26
60
27
134
33
60
33
96
27
49
26
42
30
38
33
61
Médio
11
31
33
38
39
30
28
32
35
Conversão(ms)
Mínimo Máximo
25
29
47
54
49
54
55
67
56
152
49
54
47
53
53
61
56
156
Médio
26
49
50
57
59
50
49
55
59
O Fomatador NCL Xlet
descriptor09.ncl
descriptor10.ncl
descriptor11.ncl
descriptor12.ncl
Structure01.ncl
Structure02.ncl
Structure03.ncl
Structure04.ncl
Structure05.ncl
82
27
27
27
26
9
9
9
9
9
33
34
33
43
21
19
19
18
14
28
28
28
28
10
10
10
10
10
49
49
49
49
11
11
11
12
11
55
56
56
55
14
14
18
63
19
50
51
50
50
12
12
12
13
12
Tabela 2. Pode-se perceber que: em todos os testes o cenário utilizando a
serialização é, em média, ligeiramente inferior, em se tratando de tempo de
espera; e que os testes não mostraram nenhum indício de que tal cenário não
possa ser adotado.
Outro teste a ser realizado consiste em verificar o tamanho do arquivo NCL
serializado em comparação com o arquivo em sua forma convencional e se o
retardo provocado por essa diferença é definitivamente relevante. No entanto esse
PUC-Rio - Certificação Digital Nº 0511038/CA
teste será alvo de trabalhos futuros.
6
Conclusões
O objetivo principal deste trabalho foi elaborar um ambiente de execução
declarativo para sistemas que implementem a especificação do GEM. O ambiente
desenvolvido foi baseado na implementação Java do Formatador NCL criada pelo
Laboraório TeleMídia da PUC-Rio e permite que os programas declarativos
produzidos para o Sistema Brasileiro de TV Digital Terrestre sejam apresentados
em qualquer sistema que implemente o framework GEM.
A fim de melhor compreender as tecnologias envolvidas na elaboração
PUC-Rio - Certificação Digital Nº 0511038/CA
desse ambiente, foram apresentados no Capítulo 2 os middleware para TV Digital
Terrestre que implementam a especificação do GEM e foi feita uma breve
descrição deste padrão.
No Capítulo 3, foram descritos alguns trabalhos relacionados com o tema
proposto nesta dissertação. Foram analisadas duas implementações de ambientes
declarativos para sistemas GEM tendo como base a linguagem SMIL. A partir dos
trabalhos realizados na linguagem SMIL, foi possível compreender a grande
dificuldade encontrada no desenvolvimento de aplicações para sistemas de TV
Digital: o tempo de iniciação. Ou seja, o tempo decorrido desde a recepção do
documento declarativo até sua exibição.
Ao final do Capítulo 3, foi apresentada a implementação Java do
Formatador NCL, que serviu como base para o ambiente proposto nesta
dissertação. Essa implementação foi alterada visando atender à API diferenciada
do GEM e aos requisitos inerentes a sistemas de TV Digital (como, por exemplo,
o tempo de iniciação) Seus módulos foram transformados em componentes de
software, sendo criadas diferentes implementações desses componentes,
atendendo tanto a desktops como sistemas GEM.
Foi desenvolvida uma estratégia diferente de implantação do Formatador
NCL para receptores com recursos de memória limitados. Essa estratégia faz uso
do mecanismo de serialização, oferecido pela linguagem Java, e realiza todo o
processo de conversão do documento NCL em seu distribuidor.
Conclusões
84
Outra otimização (mostrada no Capítulo 4) pode ser realizada para sistemas
DVB-MHP que ofereçam suporte às facilidades de plug-ins interoperáveis e
armazenamento de aplicações. Dessa forma, o ambiente declarativo proposto
poderá se comportar como aplicação nativa nos receptores.
As otimizações propostas levem a uma implantação enxuta do Formatador,
permitindo uma redução do seu tamanho e tornando-o, inclusive, menor que o
exibidor SMIL apresentado no Capítulo 3. Em sistemas com suporte à
persistência de dados e de mídia empacotada (como o Blue-Ray Disc) as
otimizações permitem um desempenho ainda maior em termos de tempo de
iniciação.
PUC-Rio - Certificação Digital Nº 0511038/CA
6.1.
Trabalhos Futuros
Alguns pontos dos trabalhos realizados nesta dissertação podem ser
explorados como trabalhos futuros.
A configuração de máquina virtual CDC e seus perfis possuem
implementações disponíveis para as mais diversas plataformas (mostradas na
Tabela 3). Novos testes em novas plataformas são valiosos para a validação da
implementação proposta nesta dissertação.
Darwin/PowerPC
Linux/ARM
Linux/MIPS
Linux/PowerPC
Linux/Sparc
Linux/x86
Solaris/Sparc
Solaris/x86
Symbian/ARM
Symbian/x86
Vxworks/Sparc
Vxworks/x86
Win32/ARM/PocketPC
Win32/ARM/WindowsMobile5
Win32/MIPS/WindowsCE
Win32/x86
Win32/x86/PocketPC
Tabela 3 – Plataformas que implementam o CDC.
Conclusões
85
Outro aspecto mostrado neste trabalho que pode render trabalhos futuros é a
modelagem do Formatador NCL baseada em componentes. Nem todas as
facilidades proporcionadas por essa modelagem puderam ser aproveitadas neste
trabalho por motivos de requisitos do sistema (como mostrado na Seção 4.3.1).
Em ambientes que ofereçam suporte a diferentes linguagens de programação, por
exemplo, pode haver uma cooperação entre componentes implementados nessas
PUC-Rio - Certificação Digital Nº 0511038/CA
diferentes linguagens.
Figura 36 – Arquitetura de execução distribuída do Formatador NCL.
Além disso, pode-se explorar a distribuição desses componentes criando
arquiteturas de execução como a mostrada na Figura 36. Nessa Figura, existe um
componente Gerenciador de Documentos centralizado de onde vários Núcleos de
Formatadores obtêm os documentos NCL a serem apresentados.
Utilizando esse mesmo componente podem existir, ainda, diversas
ferramentas de autoria. Dessa forma seria possibilitada uma autoria colaborativa
de documentos NCL ao vivo.
7
Referências Bibliográficas
ARIB. ARIB STD-B24, Version 3.2, Volume 3: Data Coding and Transmission
Specification for Digital Broadcasting, ARIB Standard, 2002.
ARIB. ARIB STD-B23, Application Execution Engine Platform for Digital
Broadcasting. ARIB Standard, 2004.
ATSC. DTV Application Software Environment Level 1 (DASE-1) PART 1:
Introduction, Architecture, and Common Facilities. ATSC Standard. Março
PUC-Rio - Certificação Digital Nº 0511038/CA
de 2003.
ATSC. DTV Application Software Environment Level 1 (DASE-1) PART 2:
Declarative Applications and Environment. ATSC Standard, Março de 2003.
ATSC. Advanced Common Application Platform (ACAP), A/101. Agosto de
2005.
BDA, Blue-Ray Disc Format – 2.B Audio Visual Application Format
Specifications for BD-ROM. White paper. Março de 2005.
BERNERS-LEE, T. J. The World-Wide Web. Communications of the ACM, v.
37, n. 8, Agosto de 1994, p. 76-82.
BULTEMAN, D.; RUTLEDGE, L. SMIL 2.0: Interactive Multimedia for Web
and Mobile Devices, Springer, 2004.
BROWN, A. W.; WALLNAU, C. K. International Workshop on ComponentBased Software Engineering. International Conference on Software
Engineering ’99 – Los Angeles. 1999.
ECMA Standardizing Information and Communication Systems. ECMAScript
Language Specification, Standard ECMA 262, 3rd Edition, 1999.
ETSI. Digital Video Broadcasting (DVB), Globally Executable MHP (GEM),
ETSI TS 102 819 v 1.2.1, Maio de 2004.
ETSI. Digital Video Broadcasting (DVB), Multimedia Home Platform (MHP)
Referências Bibliográficas
87
Specification 1.1.1, ETSI TS 102 812, Maio de 2005. Disponível em:
<www.mhp.org/>. Acesso em 12/03/2007.
FERRETTI, S.; ROCCETTI, M.; ANDRICH, J. Living the TV Revolution:
Unite MHP to the Web or Face IDTV Irrelevance! 15th International
Conference on World Wide Web, p.899-900, 2006.
FUHRHOP, C.; HU, J.; GAFSOU, O. Prototype of Applications, User Interfaces
and End User Tools, IST-2000-28298: ICE-CREAM. Abril de 2003.
GAMMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J., Padrões de Projeto,
Editora Bookman, Porto Alegre, 2002.
GEARY, D. M., MCCLELLAN, A. L. Graphic Java: mastering the AWT.
SunSoft, Prentice Hall, 1997.
PUC-Rio - Certificação Digital Nº 0511038/CA
GOSLING, J.; MCGILTON H. The Java Language Environment. Maio de
1996. Disponível em: <http://java.sun.com/docs/white/langenv/>. Acesso em
15/01/2007.
FILHO, G. L. S. F.;LEITE, L. E. C.; BATISTA, C. E. C. F. Ginga-J: The
Procedural Middleware for the Brazilian Digital TV System. Journal of The
Braziian Computer Society, Março de 2007, p. 47-56.
HAVi Organization, HAVi-Home Audio/Video Interoperability. 1999,
Disponível em: <http://www.havi.org>. Acesso em 20/10/2005.
IERUSALIMSCHY et al. Lua 5.0 Reference Manual. Technical Report MCC 14/03, PUC-Rio, 2003.
ISO/IEC 11172-1. Information technology - Coding of moving pictures and
associated audio for digital storage media at up to about 1,5 Mbit/s –
Part 1: Systems. ISO Standard, 1993.
ISO/IEC 13522-5. Information technology - Coding of multimedia and
hypermedia information -- Part 5: Support for base-level interactive
applications. ISO Standard, 1997.
ISO/IEC 13818-6. Information technology - Generic coding of moving
pictures and associated audio information - Part 6: Extensions for DSMCC. ISO Standard, 1998.
Referências Bibliográficas
88
ITU-T. Worldwide common core – Application environment for digital
interactive television services. ITU-T J.200. Março de 2001.
ITU-T. Harmonization of procedural content formats for interactive TV
applications. ITU-T J.202. Maio de 2003.
ITU-T. Harmonization of declarative content format for interactive television
applications. ITU-T J.201. Julho de 2004.
LAMANDON, J. L.; CESAR, P.; HERRERO, C.; VUORIMAA, P. “Usages of a
SMIL Player in Digital TV” VII IASTED International Conference on
Internet and Multimedia Systems and Applications, Agosto de 2003, p. 579584.
LARMAN, C., Utilizando UML e Padrões – Uma Introdução à análise e ao
PUC-Rio - Certificação Digital Nº 0511038/CA
Projeto Orientados a Objetos. Editora Bookman, 2002.
LIANG, S.; BRACHA, G. Dynamic Class Loading in the Java Virtual
Machine. Conference on Object-oriented programming, systems, languages,
and applications (OOPSLA'98), Vancouver, Canadá, Outubro de 1998.
MHP, Who is using MHP? A look around the world. Setembro de 2006.
Disponível
em:
<http://www.mhp.org/about_mhp/who_is_using_mhp>.
Acesso em: 14/01/2007.
OPENCABLE, Opencable Application Plataform Specification - OCAP 1.0
Profile – OC-SP-OCAP1.0-I16-050803. Issued Specification, Agosto de
2005.
PENG, C.; VUORIMAA, P. Digital Television Application Manager. IEEE
International Conference on Multimedia and Expo 2001, Tóquio, Japão,
Agosto de 2001.
PERROT, . DVB-HTML: an optional declarative language within MHP 1.1.
EBU Technical Review. Setembro de 2001.
RFC. Request for Comments: 3986. Uniform Resource Identifier (URI):
Generic Syntax. 2005.
ROBINSON, M; VOROBIEV, P. Swing. 2ed. Manning, 2003.
Referências Bibliográficas
89
RODRIGUES, R.F., Formatação e Controle de Apresentações Hipermídia
com Mecanismos de Adaptação Temporal. Tese (Doutorado em
Informática) – PUC-RJ, Rio de Janeiro 2003.
SCHEIFLER, R. W.;GETTYS, J. X Window System: Core and extension
protocols: X version 11, releases 6 and 6.1. Digital Press, 1996.
SCHWALB E. M. iTV Handbook - Technologies and Standards, IMSC Press
Multimedia Series, Prentice Hall PTR, 2004.
SHEPPARD, Bill; MOLL, E. Java Technology Goes to the Movies: Java
Technology in Next-Generation Optical Disc Formats. 2006 JavaOne
Conference, Session TS-1685, Maio de 2006.
SZYPERSKI, C. Component Software. 2ed. Addison-Wesley, 2002, 446p.
PUC-Rio - Certificação Digital Nº 0511038/CA
SOARES, L.F.G.; RODRIGUES, R.F.; MUCHALUAT-SAADE, D.C. Modelo
de Contexto Aninhados – versão 3.0. Relatório Técnico, Laboratório
Telemídia PUC-Rio, Março de 2003.
SOARES, L.F.G.; RODRIGUES, R.F. Nested Context Language 3.0 Part 8 –
NCL Digital TV Profiles. Monografias em Ciências da Computação, PUCRio, Outubro de 2006.
SOARES, L.F.G. et al, Nested Context Language 3.0 Part 9 – NCL Live
Editing Commands. Monografias em Ciências da Computação, PUC-Rio,
Dezembro de 2006.
SOARES, L.F.G.; RODRIGUES, R.F.; Mecanismo de Identificação de
Recursos para Aplicações Interativas em Redes de TV Digital por
Difusão. 25o Simpósio Brasileiro de Redes de Computadores e Sistemas
Distribuídos. Maio de 2007.
SUN
MICROSYSTEMS.
Applets.
1994.
Disponível
em:
<http://java.sun.com/applets>. Acessado em: 15/01/2007.
SUN MICROSYSTEMS. Java Media Framework, v2.0 API Specification.
1999.
Disponível
em:
Acessado em: 15/01/2007.
<http://java.sun.com/products/java-media/jmf/>.
Referências Bibliográficas
SUN
MICROSYSTEMS.
90
Object
Serialization.
1999.
<http://java.sun.com/j2se/1.3/docs/guide/serialization>.
Disponível
em:
Acessado
em:
17/05/2007.
SUN MICROSYSTEMS. Permissions int the Java 2 SDK. 2002. Disponível
em:
<http://java.sun.com/j2se/1.4.2/docs/guide/security/permissions.html>.
Acessado em: 17/01/2007.
SUN MICROSYSTEMS. CDC: Java Plataform Technology for Connected
Devices. Java Plataform Micro Edition White Paper. Junho de 2005.
SUN MICROSYSTEMS. CDC Runtime Guide. Reference Implementation.
Agosto de 2005.
TUCS; AXEL Technologies. OpenMHP: Multimedia Home Plataform. 2004.
PUC-Rio - Certificação Digital Nº 0511038/CA
Disponível em: <http://www.openmhp.org>. Acessado em: 15/01/2007.
W3C. Cascading Style Sheets, level 2 - CSS 2 Specification, W3C
Recommendation, 1998.
W3C. HTML 4.01 Specification. W3C Recommendation, Dezembro de 1999.
W3C. XHTML 1.0 The Extensible HyperText Markup Language (Second
Edition) – A Reformulation of HTML 4 in XML 1.0. W3C
Recommendation, Agosto de 2002.
W3C. Document Object Model (DOM) Level 3 Core Specification. W3C
Recommendation, Abril 2004.
W3C. XML Schema Part 0: Primer Second Edition. W3C Recommendation,
Outubro de 2004.
W3C. Synchronized Multimedia Integration Language (SMIL 2.1). W3C
Recommendation, Dezembro de 2005.
WEBER, J. W.; NEWBERRY, T. IPTV Crash Course. McGraw-Hill, 2006.
Apêndice A
Assinatura Digital de um Xlet
A execução de aplicações em receptores de TV digital domésticos permite o
acesso a recursos em tais equipamentos que, no caso de um comprometimento de
sua segurança, podem expor dados sigilosos de seus usuários. Para restringir o
acesso a tais recursos sensíveis do receptor, foram criados mecanismos que
permitissem a sua utilização por aplicações confiáveis.
O uso dos Arquivos de Requisição de Permissão (PRFs) é um mecanismo
PUC-Rio - Certificação Digital Nº 0511038/CA
criado para permitir o acesso pelas aplicações a certos recursos sensíveis dos
receptores em termos de falhas de segurança. Esses recursos incluem, por
exemplo, acesso ao disco local, às preferências dos usuários, ao uso do canal de
retorno, entre outros. Vale lembrar que o acesso a tais ativos deve ser controlado
devido ao fato de as aplicações não necessariamente localizarem-se apenas no
fluxo de transporte proveniente das difusoras; elas podem ser obtidas também via
canal de retorno por provedores de conteúdo das mais diversas origens.
A especificação do GEM prevê que um receptor que suporte tal framework
seja capaz, no mínimo, de processar os PRFs criados pelo padrão MHP. A Figura
37 ilustra um exemplo de arquivo e configuração que respeita tal padrão. O
arquivo do exemplo permite a leitura das preferências do usuário; o uso do canal
de retorno; bloqueia a sintonização; permite a seleção do serviço; permite a leitura
e escrita de dois arquivos; entre outros.
<?xml version="1.0"?>
<!DOCTYPE permissionrequestfile PUBLIC "-//DVB//DTD Permission
Request File 1.0//EN"
"http://www.dvb.org/mhp/dtd/permissionrequestfile-1-0.dtd">
<permissionrequestfile orgid="0x000023d2" appid="0x4020">
<file value="true"></file>
<applifecyclecontrol value="true"></applifecyclecontrol>
<returnchannel>
<defaultisp></defaultisp>
<phonenumber>+552135211500</phonenumber>
<phonenumber>+552135211501</phonenumber>
<phonenumber></phonenumber>
</returnchannel>
Apêndice A
Assinatura Digital de um Xlet
92
<tuning value="false"></tuning>
<servicesel value="true"></servicesel>
<userpreferences read="true" write="false"></userpreferences>
<network>
<host action="connect">hostname</host>
</network>
<persistentfilecredential>
<grantoridentifier id="0x000023d2"></grantoridentifier>
<expirationdate date="24/12/2032"></expirationdate>
<filename read="true"
write="true">23d2/4020/formatterConfig/context/context.ini</filena
me>
<filename read="true"
write="true">23d2/4020/formatterConfig/players/mimedefs.ini</filen
ame>
<filename read="true"
write="true">23d2/4020/formatterConfig/players/ctrldefs.ini</filen
ame>
<signature>023203293292932932921493143929423943294239432
</signature>
<certchainfileid>3</certchainfileid>
</persistentfilecredential>
</permissionrequestfile>
Figura 37 – Exemplo de arquivo PRF.
PUC-Rio - Certificação Digital Nº 0511038/CA
O arquivo PRF permite ainda a leitura de três arquivos localizados no
dispositivo de armazenamento local no receptor: context.ini, mimedefs.ini e
ctlrdefs.ini.
Os dois diretórios iniciais do caminho de acesso a tais arquivos consistem
do identificador da organização e o identificador da aplicação responsáveis por
realizar sua gravação em disco. Isso é parte de uma padronização proposta pelo
MHP e absorvida pelo GEM que permite a uma aplicação criar arquivos apenas
em diretórios que contenham em seu caminho inicialmente tais identificadores.
Vale ressaltar que é permitido que diferentes organizações/aplicações
acessem um arquivo gravado em disco. Contudo, é necessário apresentar no
arquivo PRF o identificador da organização responsável pela gravação original do
arquivo (através do elemento “grantoridentifier”) e uma assinatura (através do
elemento “signature”). Com isso, o receptor terá garantias que esta nova
aplicação tem permissão de ler/alterar um arquivo que não foi originalmente por
ela criado.
PUC-Rio - Certificação Digital Nº 0511038/CA
Apêndice A
Assinatura Digital de um Xlet
93
Figura 38 – Estrutura de diretórios de um Xlet.
Uma aplicação corretamente certificada possui uma estrutura semelhante à
mostrada na Figura 38:
•
O PRF localiza-se no mesmo diretório da classe inicial (que no
exemplo é TestXlet.class e o arquivo PRF é isdtv.TestXlet.perm); e
•
Todos os diretórios que tiverem seu conteúdo assinado possuirão
um arquivo contendo uma assinatura do tipo hash de todo ele
(utilizando o algoritmo MD5, por exemplo). No exemplo da Figura
38, o diretório “data” não tem seu conteúdo assinado.
Apêndice B
Sinalização de Aplicações
O processo de sinalização de aplicações recomendado pelo GEM e
adotado pelo MHP envolve o envio periódico de uma tabela denominada Tabela
de Informação de Aplicações (AIT – Application Information Table). Essas
tabelas constituem um fluxo elementar do fluxo de transporte MPEG-2. Elas são
um tipo de PSI (Program Specific Information). Esse apêndice explica os
principais atributos presentes na AIT e relevantes para a implementação de uma
aplicação DVB-J.
PUC-Rio - Certificação Digital Nº 0511038/CA
As AITs são identificadas na PMT como um fluxo do tipo 0x05. Além
disso, opcionalmente, a PMT pode conter um descritor de sinalização contendo o
tipo de aplicação e a versão da AIT. Dessa forma, o processo de sinalização fica
otimizado pois, receptores que não possuam capacidade de processar um
determinado tipo de aplicação não necessitam decodificar toda a AIT, e mudanças
na AIT são mais facilmente detectadas através do indicador de versão.
Cada tabela AIT possui, principalmente, zero ou mais descritores comuns,
contendo informações compartilhadas por todas as aplicações nela descritas, uma
lista com os descritores de informações específicas de cada uma dessas
aplicações, além dos campos tipo da aplicação, os códigos de controle da
aplicação, os identificadores das aplicações e a versão da tabela.
O campo “tipo de aplicação” leva o número 0x0001 para aplicações
DVB-J.
O campo “versão da tabela” funciona como uma otimização para que
uma atualização em seu conteúdo possa ser mais facilmente detectada.
O “código de controle” serve para controlar o ciclo de vida a aplicação. O
que significa dizer que através dele a emissora pode mandar comandos para
encerrar uma aplicação, auto iniciar ou apenas informar a sua disponibilidade para
o usuário.
Os “identificadores das aplicações” são um par contendo o identificador
da organização que produziu a aplicação e o identificado da aplicação.
Apêndice B
Sinalização de Aplicações
95
A Tabela 4 mostra os principais campos, citados anteriormente, e seus
respectivos valores a fim de exemplificar uma AIT para o carregamento do
Formatador NCL.
Tipo de Aplicação
0x0001 (DVB-J)
Versão
0x0
Descritores comuns()
for(i=0;i<N;i++){
Identificador da aplicação
0x00001111 . 0x4001
Código de controle
0x01 (Auto iniciar)
Descritores da aplicação()
}
Tabela 4 – Exemplo resumido de uma tabela AIT.
PUC-Rio - Certificação Digital Nº 0511038/CA
Dentre os descritores possíveis para a AIT destacam-se aqueles descritos, de
forma consolidada, na Tabela 5. São eles:
•
O descritor geral da aplicação que informa o perfil ao qual aquela
aplicação se destina e a versão desse perfil. No caso da tabela é
informado o Enhanced Profile com versão mínima igual a 1.1.1.
Nesse descritor pode haver mais de uma par perfil/versão. Se o
receptor der suporte a qualquer dos pares informados, estará apto a
executar a aplicação;
•
O descritor do protocolo de transporte, que pode ser um descritor
comum entre as aplicações e apresenta o identificador do protocolo e
informações específicas do mesmo. No caso da utilização do
carrossel de objetos o identificador é 0x0001 e as outras informações
disponibilizadas são: um identificador da rede original DVB-SI, um
identificador do fluxo de transporte e o identificador do serviço
DVB-SI. Esses são basicamente os mesmos elementos formadores
do localizador DVB;
•
Os descritores de informações para o usuário que incluem o
descritor de nome da aplicação (informando nome e idioma) e o
descritor de ícones da aplicação (informando uma figura pela qual o
usuário terá acesso à aplicação). Esses descritores são específicos de
Apêndice B
Sinalização de Aplicações
96
cada aplicação não podendo ser declarados juntamente com os
descritores comuns;
Os descritores específicos de aplicações DVB-J que informam: os
•
parâmetros para a aplicação; o diretório base que representa o
caminho (path) para execução da aplicação; caminhos adicionais
para classes a serem inicializadas junto com a aplicação (classpath
PUC-Rio - Certificação Digital Nº 0511038/CA
extensions); a classe inicial da aplicação.
Perfil da aplicação
0x1(Enhanced Profile)
Version.Major
0x1
Version.Minor
0x1
Version. Micro
0x1
Protocolo de transporte(){
0x0001
Identificador rede original
0x12
Identificador fl. De transporte
0x1
Identificador serviço
0x12
ISO_639_language_code
pt-br
Nome da aplicação
Ginga-NCL
Diretório base
/app/
Extensão ao classpath
/players
Classe inicial
GingaXlet
}
Tabela 5 – Parâmetros adicionais da AIT para sinalização do Formatador Xlet.
No caso da utilização das facilidades proporcionadas pelos plug-ins do
DVB-MHP ou Application Storage (Armazenamento de Aplicações), mais alguns
descritores spodem ser utilizados:
•
Um descritor para delegação de aplicação. Esse descritor pode ser
comum ou específico de uma aplicação e nele é especificado o
identificador da aplicação responsável por interpretar aquele
conteúdo;
•
Um descritor de plug-ins que informa qual tipo de aplicação o
plug-in é capaz de interpretar. Esse descritor deve ser informado
para cada plug-in presente na lista de aplicações;
Apêndice B
Sinalização de Aplicações
•
97
Um descritor de aplicações armazenadas. Nesse descritor é
informado, principalmente, se o ciclo de vida da aplicação é
controlado pela difusora ou requer a interação do usuário (como
PUC-Rio - Certificação Digital Nº 0511038/CA
jogos, por exemplo), e a versão da aplicação.
Apêndice C
A Linguagem NCL
Para a construção de aplicações interativas para sistemas de TV Digital fazse necessário o sincronismo entre as mídias envolvidas neste sistema. Além do
sincronismo do vídeo e áudio principal, o sistema de TV Digital deve ser capaz de
lidar com a sincronização espacial e temporal de objetos de diferentes tipos de
mídia.
O XHTML, usado pela maioria dos middlewares descritos neste capítulo, é
uma linguagem baseada em um modelo hipermídia bastante simples. Apesar de
PUC-Rio - Certificação Digital Nº 0511038/CA
sua simplicidade ser um dos fatores que contribuiu para a sua grande difusão, esta
introduz limitações como, por exemplo, o fato de permitir apenas o sincronismo
espacial. Para se obter sincronismos espaço-temporais é necessário recorrer a
recursos fora do paradigma declarativo, como o uso do ECMAScript.
O modelo hipermídia no qual foi baseado o XHTML define apenas
entidades do tipo nó e elo, sendo que existe apenas um tipo de elo (usado para
representar relações de referência), diminuindo, assim, o poder de expressão da
linguagem. Esse modelo limitado determina, ainda, que a definição dos elos esteja
contida no nó, tornando impossível reusar um documento sem herdar os elos
definidos dentro dele.
O W3C, órgão oficial que regula os padrões da World Wide Web, define o
SMIL (W3C, 2005) como linguagem oficial para o sincronismo de mídias. Nessa
linguagem, solucionando o problema do HTML, os elos não se encontram
definidos dentro dos nós. É especificada nela, ainda, uma entidade denominada
Composição. A Composição contém um conjunto de elos e nós e, no caso do
SMIL, estabelece uma semântica de sincronização. As Composições podem ser de
três tipos: paralela, seqüencial ou exclusiva. A atribuição dessa semântica às
Composições, no entanto, pode dificultar o processo de autoria quando na criação
de relacionamentos complexos. Outro fator limitante dessa linguagem é fato dela
não oferecer suporte à edição/geração ao vivo de documentos.
Apêndice C
A Linguagem NCL
99
A NCL (Nested Context Language) é uma linguagem XML para a autoria
de apresentações hipermídia, incluindo programas de TV não lineares, baseada no
modelo hipermídia NCM (Nested Context Model) (Soares et al, 2003). Seu foco é
o sincronismo de mídias.
Por ser baseada no modelo NCM, a linguagem permite:
•
o uso de composições para a estruturação lógica do documento;
•
o uso de conectores hipermídia para a autoria de elos e fornecendo a
semântica de sincronismo destes;
•
a possibilidade de escolha entre um conjunto de nós alternativos; e
•
a especificação da apresentação por meio de descritores.
A NCL define como os objetos de mídia estão estruturados e como se
relacionam, no tempo e no espaço. Contudo, ao contrário do SMIL, os tipos de
conteúdo desses objetos de mídia não são restritos. Ou seja, num documento NCL
PUC-Rio - Certificação Digital Nº 0511038/CA
os objetos de mídia além de consistir de imagens estáticas, áudio, vídeo e texto,
amplamente implementado pelas demais linguagens, podem representar objetos
de execução (programas na linguagem Lua, JAVA,etc.) ou até documentos de
outras linguagens (XHTML, SMIL,etc.). Por esse motivo a linguagem NCL é
conhecida como uma linguagem de cola.
Outra vantagem da linguagem NCL é que esta permite a autoria de
documentos em tempo de apresentação, ou seja, ela permite a alteração
documento durante a sua execução. Esta funcionalidade é de grande valor em
sistemas de TV digital onde a transmissão de programas ao vivo, como eventos
esportivos, requerer uma alteração em tempo real da apresentação. Nesse
ambiente, a autoria em tempo de apresentação é realizada através do envio de
comandos de edição via NCL stream events (eventos DSM-CC).
A versão atual do NCL encontra-se especificada usando XML Schema
(W3C, 2004b). Nela é prevista a existência de dois perfis: um Perfil Básico e um
Perfil Avançado para TV digital. Esses perfis podem ser construídos graças à
característica modular da linguagem através da seleção de módulos específicos.
Estes módulos que compõem a linguagem são um conjunto de elementos,
atributos e valores de atributos XML que representam uma unidade funcional.
As áreas funcionais da linguagem e seus respectivos módulos são os que
seguem:

Estrutural – módulo Structure;
Apêndice C
A Linguagem NCL
100

Leiaute – módulo Layout;

Componentes – módulo Media e módulo Context;

Interfaces
–
módulo
CompositeNodeInterface,
MediaContentAnchor,
módulo
AttributeAnchor,
módulo
e
módulo
SwitchInterface;

Especificação da Apresentação – módulo Descriptor;

Elos – módulo Linking;

Conectores – módulo XConnector e módulo CompositeConnector;

Controle da Apresentação – módulo TestRule, módulo TestRuleUse,
módulo ContentControl e módulo DescriptorControl;

Temporização – módulo Timing;

Reuso
–
módulo
Import,
módulo
EntityReuse
e
PUC-Rio - Certificação Digital Nº 0511038/CA
ExtendedEntityReuse;
<?xml version="1.0" encoding="ISO-8859-1"?>
<ncl id="coisaDePele"
xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProf
ile
http://www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd">
<head>
<regionBase>
<region height="480" id="window1" title="None"
width="640" >
<region height="200" id="imgRegion1" left="0"
top="0" width="80%"/>
<region height="280" id="logoRegion1" left="0"
top="200" width="100%"/>
<region height="50" id="fraseRegion1" left="0"
top="220" width="100%"/>
</region>
</regionBase>
<descriptorBase>
<descriptor id="img_d1" region="imgRegion1"/>
<descriptor id="logo_d1" region="logoRegion1"/>
<descriptor id="frase_d1" region="fraseRegion1">
<descriptorParam name="color" value="#FF0000" />
</descriptor>
</descriptorBase>
<connectorBase>
<importBase alias="connBase"
documentURI="coisadePele30.conn"/>
</connectorBase>
</head>
<body>
<port id="inicio" component="logotele1" />
<media type="image" descriptor="logo_d1"
id="logotele1" src="img/logo.jpg" >
<area begin="5.1s" end="10.5s" id="part1"/>
módulo
Apêndice C
A Linguagem NCL
101
</media>
<media type="image" descriptor="img_d1" id="img2"
src="img/MIDIA.jpg"/>
<media type="text" descriptor="frase_d1" id="frase"
src="frase.txt" />
<link id="link1" xconnector="connBase#onBeginStart">
<bind component="logotele1" interface="part1"
role="onBegin"/>
<bind component="img2" role="start"/>
</link>
<link id="link4" xconnector="connBase#onEndStop">
<bind component="logotele1" interface="part1"
role="onEnd" />
PUC-Rio - Certificação Digital Nº 0511038/CA
<bind component="img2" role="stop"/>
</link>
<link id="link3" xconnector="connBase#onEndStart">
<bind component="logotele1" interface="part1"
role="onEnd" />
<bind component="frase" role="start"/>
</link>
</body>
</ncl>
Figura 39 – Exemplo de documento NCL 2.0
A Figura 38 ilustra o código de um documento NCL para um melhor
entendimento da linguagem. Para maiores informações sobre essa linguagem o
leitor deve consultar (Soares & Rodrigues, 2006).

Documentos relacionados