Sunteți pe pagina 1din 13

APLICATIVOS PARA TELEVISÃO DIGITAL INTERATIVA

Douglas Dal Pozzo (bolsista)

PET Computação

Universidade Federal de Santa Catarina

Resumo:

A televisão,   um   dos  mais  importantes   e expressivos   meios   de comunicação,   tem

estado a maior parte de sua história atrelada ao objetivo primário de exibição de conteúdo

desprovido de interação com o telespectador.   A tecnologia de televisão digital veio para

mudar   esse  cenário,   proporcionando,   além   de  melhores   qualidades   de   áudio  e  vídeo,   a

possibilidade de interação entre um serviço e o telespectador. Este trabalho foi desenvolvido

a   partir   de   um   estudo   bibliográfico   dos   padrões   abertos   de   televisão   digital   interativa

baseados no livro “Interactive TV Standards: a guide to MHP, OCAP and JavaTV” de Steven

Morris e Anthony Smith­Chaigneau, especialistas no assunto. Apresentamos uma sinopse

da   tecnologia   de   TV   digital   e   também   introduzimos   aspectos   do   desenvolvimento   de

aplicações para a TV Digital: Os Xlets.

contato: pet@inf.ufsc.br
Os sistemas de televisão digital

O sistema de televisão digital, um dos conceitos mais importantes quando se fala em

televisão digital,  é  um  conjunto de definições  que  servem   de referência   para criação  de

produtos compatíveis entre geradores de conteúdo, programadores de aplicações, fábricas

de   equipamentos   eletrônicos,   entre   outros.   Basicamente,   um   padrão   é   definido   pelos

esquemas de compressão e codificação de áudio e vídeo, pela camada de abstração de

software   do   set­top­box  (o  middleware)   e  o  esquema   de  multiplexação  e  modulação  de

dados.  Esses esquemas  são  escolhidos para atender  aos  requisitos  de um padrão,   que

pode ser, por exemplo, privilegiar a alta definição, a interatividade, a recepção móvel, etc.

A figura 1, abaixo, apresenta os componentes utilizados na definição de um sistema

de televisão digital interativa. 

Figura 1: Blocos na forma de caixa preta que definem um 

sistema de televisão digital

A parte mais importante desses blocos do ponto de vista das aplicações (considere

qualquer   referência   a   aplicação   como   sendo   uma   aplicação   para   televisão   digital)   é   a

camada de software denominado middleware. Um middleware é de forma simplificada uma

camada de software que liga dois sistemas separados. No caso da televisão digital ele liga o

hardware   e   o   sistema   operacional   do   set­top­box   às   aplicações.   Sua   função   básica   no

contexto   de   um   sistema   de   TV   digital   é   fornecer   para   o   desenvolvedor   uma   API   para

manipulação de gráfico e vídeo,  acesso  ao canal de retorno,   acesso as  informações  do

serviço, entre outros.
Existem hoje no mundo três grandes sistemas de televisão digital aberta: O sistema

europeu,  DVB  ­  Digital  Video Broadcasting  –  com  o  seu  middleware  MHP  –  Multimedia

Home Platform; O sistema americano, ATSC ­ Advanced Television Systems Committee –

com   o   seu   middleware  DASE   ­   Digital   Applications   Software   Environment;   O   sistema

japonês,  ISDB ­ Integrated Services Digital Broadcasting –  com o seu middleware  ARIB ­

Association of Radio Industries and Businesses.

As aplicações para tv digital

As   aplicações   para   TV   digital   trazem   para   a   televisão   um   pouco   do   teor

computacional proporcionado por um computador. Um possível cenário é o telespectador

estar   assistindo   um   jogo   de   futebol,   por   exemplo,   e   a   emissora   transmitir   pequenas

aplicações   com   diversas   informações   sobre   o   campeonato,   jogo  ou   jogadores.   Além   de

permitir a navegação por essas informações, aplicações mais avançadas permitem o envio

de   dados  ao  provedor   do   conteúdo   utilizando  possivelmente   a  própria   infra­estrutura   da

internet.

As aplicações para tv digital são classificadas em [6]: 

­ aplicações service­bound: Apresentam informações ou interatividade contextuais

ao conteúdo sendo exibido de um determinado serviço. São carregadas no STB toda

vez que são executadas.

­   aplicações  unbound:  Não   são   contextuais,   podem   ser   acessadas   a   qualquer

momento e não possuem um propósito específico. Guias de programação eletrônica,

home banking, jogos, etc.

­   aplicações   armazenadas:  São   mais   complexas   e   possuem   funções   bem   mais

genéricas.   Geralmente   são   pagas   e   são   armazenadas   em   uma   dispositivo   de

memória para o usuário executá­la durante o período de validade dela. 
­   aplicações   embutidas:  São   aplicações   nativas   do   STB,   como   um   guia   de

programação eletrônica, serviços de alerta de catástrofes, etc. 

Cada   uma   dessas   classes   de   aplicações   podem   apresentar   diferentes   níveis   de

interatividade. Interatividade está relacionada com a forma com que o usuário pode utilizar

essas aplicações: ele pode navegar pelos dados recebidos, requisitar novos dados ou até

mesmo enviar informações de volta ao serviço que disponibilizou a aplicação. Nesse sentido

os níveis de interatividade são:

­ local:  O usuário não envia dados ao serviço. Somente interage com dos dados

recebidos e carregados  no set­top­box.  Exemplo:  controle sobre apresentação  de

informações contextuais, navegação.

­ intermitente: é feita uma conexão (geralmente por linha telefônica) ao serviço e a

conexão permanece até que o usuário entre com as informações e envie os dados.

Exemplos: home banking, home shopping, e­voting.

­ plena:  o usuário utiliza a mesma infraestrutura da internet (adsl) e permanece o

tempo   todo   conectado,   podendo   requisitar   e   enviar   informações   a   qualquer

momento: Exemplo; e­mail, internet.

Entre os sistemas de televisão digital abertos Java e html são as duas linguagem

predominantes   utilizadas   no   desenvolvimento   de   aplicações.   Para   os   desenvolvedores

Java,   surge   ai   mais   uma   possibilidade   de   desenvolvimento   com   a   linguagem.   Nesse

trabalho abordamos somente a utilização de Java, uma vez que ela oferece um poder de

expressão e interatividade muito maior do que uma linguagem descritiva como o html. 

Java  é  uma   linguagem   de  programação   interpretada,   que  roda  em   cima  de  uma

máquina virtual. Essa é a grande vantagem da sua utilização já que uma vez escrita poderá

ser executada em qualquer set­top­box que implemente a maquina virtual Java, não tendo

necessidade de recompilação de código e outros problemas relacionados. Esse é um dos

objetivos da TV  digital  aberta:   a  compatibilidade  das aplicações.     Além  disso,   existe  um

canal de comunicação entre especialistas da área de TV digital e os desenvolvedores do
Java, através dos quais os especialistas fazem requisições que são ouvidas e padronizadas

pela linguagem. Um fruto dessas requisições é o documento Java specification request 927,

a API Java TV [].     A especificação Java TV é parte da plataforma  Java 2 Micro Edition

(J2ME) na configuração de Connected Device Configuration (CDC) [9]. 

Para   cada   um   dos   três   padrões   abertos,   a   API   Java   TV   forma   o   núcleo   das

definições.   Ela   especifica   o   modelo   de   ciclo   de   vida   das   aplicações,   abstrai   aspectos

relacionados ao hardware e sistema operacional do set­top­box e padroniza uma série de

requisitos básicos de uma aplicação.

Desse ponto em diante, escolhemos o sistema europeu DVB/MHP para o estudo do

desenvolvimento   de   aplicações.   Esse   é   o   sistema   mais   difundido   mundialmente   e

conseqüentemente é o que mais apresenta documentação e softwares de apoio na web.

Esse padrão é formado pelas seguintes APIs:

API Java TV

“A API Java TV é uma extensão da plataforma Java desenvolvida através de um

processo aberto da Sun Microsystems e líderes da industria de televisão digital. As maiores

fábricas de eletrônicos para consumidor anunciaram seu apoio na adoção dessa API como

um padrão de televisão digital mundial” [2].

A API Java TV está sendo projetada para oferecer acesso a funcionalidades do tipo:

• Definição do modelo das aplicações.

• Acesso a fluxo de áudio e vídeo;

• Acesso condicional;

• Acesso a informações de serviço;

• Controle remoto. 

API HAVi ­ Home Audio Video Interoperability

A interface de usuário definida pela HAVi permite que aplicações escritas em Java

determinem os recursos presentes em cada set­top­box e com isso desenhem sua interface

gráfica na tela, manipulem dados entrados pelo usuário, executem pequenos arquivos de
som, etc. Ela usa um subconjunto do AWT ­ Abstract Windowing Toolkit – definido na API

Java 1.1 e estende seus pacotes para suportar recursos específicos da plataforma HAVi.

API DAVIC ­ Digital Audio Visual Council

Baseado no padrão MHEG­6 [7],  esse padrão,  publicado em 1998, adicionou um

conjunto de novas APIs Java ao padrão MHEG­6, capacitando essa nova API a acessar

informações de serviço, controlar a apresentação de áudio e vídeo e gerenciar recursos do

receptor. 

API DVB

A especificação DVB/MHP é construída a partir de outras APIs como Java TV, HAVi,

Davic. Para completar a especificação DVB/MHP [10] são necessárias novas interfaces de

programação e elas são definidas pela API DVB Core que estende algumas funcionalidades

oferecidas pelas outras APIs como também inclui novas funções para atender aos requisitos

da especificação.

Para   cada   uma   dessas   APIs   apresentamos   na   forma   de   tabelas   os   pacotes

utilizados pela especificação DVB/MHP.   Essas tabelas foram extraídas da documentação

dessas APIs e podem ser acessadas a partir de suas referências.

Java TV
Pacote função
 Provides access to broadcast file and directory data through APIs that work with
javax.tv.carousel 
the java.io package. 
Provides a mechanism by which Xlets may discover their root container and
javax.tv.graphics 
describes a mechanism for alpha blending. 
Provides a means for referencing data and resources accessible via the Java TV
javax.tv.locator 
APIs. 
 Provides controls and events for the management of real­time media in a television
javax.tv.media 
environment. 
javax.tv.media.protocol   Provides access to generic streaming data in the television broadcast.
javax.tv.net   Provides access to IP datagrams transmitted in the broadcast stream. 
 Provides mechanisms for accessing the service information (SI) database and APIs
javax.tv.service 
representing the SI elements it contains. 
 Provides APIs to support electronic program guides (EPGs), including program
javax.tv.service.guide 
schedules, program events and program ratings. 
javax.tv.service.navigati
 Provides APIs to navigate through services and hierarchical service information. 
on 
javax.tv.service.selectio
 Provides a mechanism to select a Service for presentation.

javax.tv.service.transpo Provides additional information about the transport mechanisms that deliver the
rt  content the SI data describes. 
javax.tv.util   Provides APIs for creating and managing timer events. 
 Provides interfaces used by applications and the application manager to
javax.tv.xlet 
communicate.
Tabela 1  Pacotes da API Java TV utilizados pela especificação MHP e suas respectivas funções [2].

HAVi Level 2 User Interface 
Pacote função
org.havi.ui  Definição de elementos de interface gráfica com o usuário
org.havi.ui.event   Definição dos esquemas de tratamento de eventos dos elementos de interface gráfica
Tabela 2  Pacotes da API HAVi utilizados pela especificação MHP e suas respectivas funções [1].

DVB Core
Pacote função
org.dvb.applicatio  Provides access to lists of applications which are available in this context and the ability
n  to launch those applications. 
org.dvb.dsmcc   Provides extended access to files carried in the broadcast stream.
 Provides access to user input events before they are processed through the event
org.dvb.event 
mechanism of the java.awt package. 
org.dvb.io.ixc   Provides support for inter­application communication. 
org.dvb.io.persiste
Provides extensions to the java.io package for access to files held in persistent storage.
nt 
org.dvb.lang  Provides those core platform related features not found in the java.lang package. 
org.dvb.media  Provides DVB specific extensions to the Java Media Framework. 
org.dvb.net  Provides general networking features not found elsewhere. 
org.dvb.net.ca  Provides extensions to the conditional access API from DAVIC.
Provides session management for bi­directional IP connections which are session based
org.dvb.net.rc 
from the point of view of an application. 
org.dvb.net.tuning Provides extensions to the tuning API from DAVIC. 
org.dvb.si  Provides access to DVB service information. 
Broadcast model In a broadcast­based conformance system, there are effectively three
org.dvb.test  main entities involved in an automated test process: The test server that is used to hold
and initiate all of the tests.
org.dvb.ui  Provides extended graphics functionality. 
org.dvb.user  Provides access to settings and preferences configured by the end­user.
Tabela 3:  Pacotes da API DVB utilizados pela especificação MHP e suas respectivas funçõ es [10].

DAVIC Core
Pacote função
 Provides various extensions to the Java Media Framework for the control of TV
org.davic.media
oriented audio / video content.
org.davic.mpeg  Provides utility classes for common MPEG concepts. 
org.davic.mpeg.dvb  Provides utility classes for common MPEG concepts as used in DVB. 
org.davic.mpeg.sectio
 Provides access to MPEG­2 section filtering. 
ns
org.davic.net  Provides general content referencing.
 Provides an interface to various features of a conditional access system for those
org.davic.net.ca
applications which need it. 
org.davic.net.dvb  Provides DVB specific content referencing.
org.davic.net.tuning  Provides access to tuning ­ MPEG multiplex selection. 
org.davic.resources  Provides a framework for scarce resource management.
Tabela 4: Pacotes da API DAVIC utilizados pela especificação MHP e suas respectivas funçõ es [3].

Desenvolvimento de aplicações interativas para o sistema DVB/MHP

Não existe nenhuma padronização aberta de desenvolvimento de   aplicações para

TV Digital. No entanto, como todo processo de desenvolvimento de software é aconselhável

a utilização do tradicional esquema de análise e projeto de sistemas.

O   objetivo   da   maioria   das   aplicação   é   a   exibição   de   conteúdo   através   de   uma

interface gráfica com o usuário. E para isso, apresentamos as APIs gráficas de suporte do

sistema   DVB/MHP   para   demonstrar   um   dos   aspectos   mais   importantes   da   maioria   das

aplicações: a criação de interfaces gráficas.

Para o desenvolvimento de qualquer aplicação gráfica para a TV digital precisamos

definir alguns conceitos.

­ Funcionamento do modelo gráfico do MHP

­ Configuração do dispositivo gráfico do receptor

­ Os componentes da interface gráfica de usuário

­ Tratamento de eventos gerados pelo usuário

Existem várias diferenças quanto a forma de desenvolvimento de aplicações para TV

digital   quando   comparada   com   o   desenvolvimento   de   aplicações   para   um   computador

pessoal (Tabela 5). 

Na televisão digital... No computador...
No computador pessoal o modelo gráfico apresenta
A televisão digital utiliza um modelo gráfico
somente uma camada onde são colocados todos os
baseado em camadas.
componentes.
Deve­se configurar os dispositivos relacionados Não é necessária a configuração explícita dos
as camadas do modelo gráfico. componentes relacionados ao modelo gráfico.
Limitações de poder de processamento, diferentes
Os computadores são mais genéricos
tamanhos de telas.
Tabela 5: Algumas diferenças encontradas entre desenvolvimento de aplicações para televisão digital e
o desenvolvimento de aplicações para um computador pessoal.

Várias questões poderiam ser levantadas para tratar cada um dos aspectos relativos

ao desenvolvimento de aplicações, porém, iremos nos limitar a demonstração das APIs de

suporte a interface gráfica. Até mesmo no desenvolvimento de interfaces gráficas surgem

questões de como desenvolver uma interface robusta e compatível aos diversos aparelhos

receptores   ponteciais   da  aplicação   e   isso   implica   em   uma   programação   cautelosa,   com

métodos de descoberta de recursos disponíveis no receptor para que quando a aplicação

for executada  não apresente problemas.

A modelo gráfico de um receptor de televisão digital é separado em duas partes:

uma trata  da própria tela como um  todo, mapeando o dispositivo  físico  que  é a tela de

apresentação; o outro modelo é um modelo lógico, ou seja existe somente do ponto de vista

do   desenvolvedor.   Este   modelo   lógico   divide   o   modelo   físico   (a   tela)   em   três   camadas

lógicas   (Figura   2):  Background   layer,   Video   layer,   Graphics   layer.  Essas   camadas   são

empilhadas na seguinte ordem: a camada de trás é a Background layer, a próxima camada

é a Video layer enquanto a camada mais a frente de todas é a Graphics layer. A função de

cada uma dessas camadas é:

­ Background layer: Exibir uma única cor de fundo ou então uma imagem fixa. Sendo

a camada de fundo, ela será visível toda vez que o vídeo for redimensionado ou não for

usado.

­   Video  layer:  É  onde   mostra­se  o  fluxo   de  vídeo   associado  a  uma   transmissão.

Geralmente os receptores oferecem suporte a exibição em tela cheia ou na resolução de

quarto da tela apresentado em um dos quatro quadrantes da tela.

­   Graphics   layer:  É   a   camada   mais   a   frente   de   todas,   no   topo.   É   nela   que   são

apresentadas as aplicações que utilizam interface gráfica com o usuário. A especificação
DVB/MHP determina um suporte de no mínimo 256 cores e resolução de 720x576 pixels

para os receptores desse padrão.

Figura 2: Separação em camadas dos dispositivos 
do modelo gráfico do MHP [5].

Configuração dos dispositivos 

Cada uma das camadas mencionadas são mapeadas em classes da API Havi. Além

disso, como as aplicações precisam estar preparadas para serem executadas em diferentes

modelos   de   set­top­box,   com   diferentes   recursos,   deve­se   configurar   cada   um   desses

dispositivos de modo que a aplicação seja compatível com os recursos do set­top­box em

que   é   executada.   Para   isso   a   API   Havi   também   oferece   classes   de   suporte   chamadas

“classes de configuração de dispositivos”.

As classes de mapeamento e classes de configuração são apresentadas na tabela 6.

As   classes   de   configuração   de   dispositivos   existem   para   cada   uma   das   subclasses   de

HScreenDevices  e   por   usa   vez,   as   classes   de   configuração   são   subclasses   da   classe

HScreenConfiguration. 

Classe Função Classe  configuração


HScreen Representa a tela física de um set­top­box X
Classe abstrada que define os dispositivos
HScreenDevices X
lógicos constituintes da classe HScreen.
HBackgroundConfiguration
HBackgroundDevice Representa a camada do fundo da tela.
HStillBackgroundConfiguration
Representa a camada de exibição de
HVideoDevice HVideoConfiguration
vídeo.
Representa a camada de exibição de
HGraphicsDevice componentes da interface gráfica com o HGraphicsConfiguration
usuário.
Tabela 6:  Esta tabela apresenta  as classes de mapeamento, suas funçõ es, e classes de configuração
para cada dispositivo do modelo gráfico de aplicações para TV Digital.

Existem   várias   formas   de  se  encontrar   a   configuração   adequada  para   cada   uma

dessas classes de configuração e cada configuração é determinada por uma variedade de

parâmetros [1].

Construção da interface gráfica

Uma vez instanciados os modelos dos dispositivos gráficos do set­top­box, podemos

partir para o processo de construção propriamente dito da interface gráfica. Lembremos que

a interface gráfica é apresentada na camada gráfica da aplicação, representada pela classe

HGraphicsDevice. 

O elemento chave, na construção da interface gráfica é representado pela classe

HScene. Essa classe é similar ao Frame, ou Window utilizado como top­level component no

desenvolvimento de interfaces gráficas Java. No entanto, uma HScene apresenta algumas

restrições   como   por   exemplo   a   exibição   de   uma   única   instância   dessa   classe   durante

qualquer momento da existência da aplicação. Quando a aplicação for finalizada, deverá ser

chamado o método HScene.dispose() para remover a instância daquela classe. 

O processo de construção de um objeto  HScene  é bastante simples: Declara­se o

objeto e obtém­se uma instância através da classe auxiliar HSceneFactory.

Existem vários parâmetros que podem ser utilizados no momento da obtenção do

objeto  HScene  pela classe  HSceneFactory.  Esses parâmetros podem ser consultados na

documentação Havi [1].
Conjunto de componentes de interface gráfica e tratamento de eventos 

Agora   começa   a  fase   de   escolha   dos   componentes   que  serão   inseridos   sobre   a

instância da  HScene. O uso desses componentes é feito da mesma forma que se usa os

componentes   AWT   ou  Swing  do   Java.   Basta   observar   os   parâmetros   dos   contrutores   e

seguir o modelo de tratamento de eventos tradicional. Todas essas informações, bem como

o   conjunto   completo   de   componentes   disponíveis   podem   ser   obtidos   da   própria

documentação Havi [1]. 

Resumidamente, podemos definir os seguintes passos que devem ser seguidos no

desenvolvimento de uma aplicação com interface gráfica de usuário.

Passo 1: Instanciação de um objeto do tipo HScreen.

Passo 2: A partir do objeto HScreen obter os correspondentes objetos das camadas

de fundo, de vídeo e gráfica.

Passo   3:  Instanciação   de   um   objeto   HScene   no   contexto   da   camada   gráfica.   É

nesse   objeto   que   serão   colocados   os   Contêineres   e   demais   componentes   de

interface gráfica.

Passo   4:  Tratamento   de   eventos   relacionados   aos   componentes   da   interface

gráfica.
Referências:

[1] HAVi Level 2 graphical user interface API. http://www.havi.org/

[2] Java TV API 1.0. http://java.sun.com/products/javatv/

[3]   DAVIC   1.4.1   Specication   Part   9,   Complete   DAVIC   Specications,   DAVIC.


http://www.davic.org/

[4] Multimedia Home Platform. http://www.mhp.org/

[5]   Interactive   TV  web:  Your   source   for   MHP,   OCAP,   ACAP,   and  JavaTV  information  to
http://www.interactivetvweb.org/

[6] Steven Morris and Anthony Smith­Chaigneau. Interactive TV Standards.

Focal Press, 2005.

[7]   P.   Hofmann.   MHEG­5   and   MHEG­6:   Multimedia   Standards   for   Minimal   Resource
Systems.   Technical   Report,   Technische   Universitat   Berlin,   April   1996.
http://citeseer.ist.psu.edu/hofmann96mheg.html

[8] MHP stubs classes. http://www.interactivetvweb.org/resources/code/mhpstubs.jar

[9] J2ME CDC. http://java.sun.com/products/cdc/

[10] Digital Video Broadcasting (DVB); Multimedia Home Platform (MHP) Specification 1.1.X
http://www.mhp.org/mhp_technology/mhp_1_1/

S-ar putea să vă placă și