Upload
dangcong
View
212
Download
0
Embed Size (px)
Citation preview
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 SmithChaigneau, 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: [email protected]
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 settopbox (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 settopbox à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 infraestrutura da
internet.
As aplicações para tv digital são classificadas em [6]:
aplicações servicebound: 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 settopbox. 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, evoting.
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; email, 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 settopbox 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 settopbox 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 settopbox 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 MHEG6 [7], esse padrão, publicado em 1998, adicionou um
conjunto de novas APIs Java ao padrão MHEG6, 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 TVPacote função
javax.tv.carousel Provides access to broadcast file and directory data through APIs that work withthe java.io package.
javax.tv.graphics Provides a mechanism by which Xlets may discover their root container anddescribes a mechanism for alpha blending.
javax.tv.locator Provides a means for referencing data and resources accessible via the Java TVAPIs.
javax.tv.media Provides controls and events for the management of realtime media in a televisionenvironment.
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.
javax.tv.service Provides mechanisms for accessing the service information (SI) database and APIsrepresenting the SI elements it contains.
javax.tv.service.guide Provides APIs to support electronic program guides (EPGs), including programschedules, program events and program ratings.
javax.tv.service.navigation
Provides APIs to navigate through services and hierarchical service information.
javax.tv.service.selection
Provides a mechanism to select a Service for presentation.
javax.tv.service.transport
Provides additional information about the transport mechanisms that deliver thecontent the SI data describes.
javax.tv.util Provides APIs for creating and managing timer events.
javax.tv.xlet Provides interfaces used by applications and the application manager tocommunicate.
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çãoorg.havi.ui Definição de elementos de interface gráfica com o usuárioorg.havi.ui.event Definição dos esquemas de tratamento de eventos dos elementos de interface gráficaTabela 2 Pacotes da API HAVi utilizados pela especificação MHP e suas respectivas funções [1].
DVB CorePacote funçãoorg.dvb.application
Provides access to lists of applications which are available in this context and the abilityto launch those applications.
org.dvb.dsmcc Provides extended access to files carried in the broadcast stream.
org.dvb.event Provides access to user input events before they are processed through the eventmechanism of the java.awt package.
org.dvb.io.ixc Provides support for interapplication communication. org.dvb.io.persistent
Provides extensions to the java.io package for access to files held in persistent storage.
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.
org.dvb.net.rc Provides session management for bidirectional IP connections which are session basedfrom 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.
org.dvb.test Broadcast model In a broadcastbased conformance system, there are effectively threemain entities involved in an automated test process: The test server that is used to holdand initiate all of the tests.
org.dvb.ui Provides extended graphics functionality. org.dvb.user Provides access to settings and preferences configured by the enduser.Tabela 3: Pacotes da API DVB utilizados pela especificação MHP e suas respectivas funções [10].
DAVIC CorePacote função
org.davic.media Provides various extensions to the Java Media Framework for the control of TVoriented 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.sections Provides access to MPEG2 section filtering.
org.davic.net Provides general content referencing.
org.davic.net.ca Provides an interface to various features of a conditional access system for thoseapplications 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...
A televisão digital utiliza um modelo gráficobaseado em camadas.
No computador pessoal o modelo gráfico apresentasomente uma camada onde são colocados todos os
componentes.
Devese configurar os dispositivos relacionadosas camadas do modelo gráfico.
Não é necessária a configuração explícita doscomponentes relacionados ao modelo gráfico.
Limitações de poder de processamento, diferentestamanhos de telas.
Os computadores são mais genéricos
Tabela 5: Algumas diferenças encontradas entre desenvolvimento de aplicações para televisão digital eo 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 mostrase 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 settopbox, com diferentes recursos, devese configurar cada um desses
dispositivos de modo que a aplicação seja compatível com os recursos do settopbox 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çãoHScreen Representa a tela física de um settopbox X
HScreenDevicesClasse abstrada que define os dispositivoslógicos constituintes da classe HScreen.
X
HBackgroundDevice Representa a camada do fundo da tela.HBackgroundConfiguration
HStillBackgroundConfiguration
HVideoDeviceRepresenta a camada de exibição de
vídeo.HVideoConfiguration
HGraphicsDeviceRepresenta a camada de exibição de
componentes da interface gráfica com ousuário.
HGraphicsConfiguration
Tabela 6: Esta tabela apresenta as classes de mapeamento, suas funções, e classes de configuraçãopara 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 settopbox, 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 toplevel 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: Declarase o
objeto e obtémse 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 tohttp://www.interactivetvweb.org/
[6] Steven Morris and Anthony SmithChaigneau. Interactive TV Standards.
Focal Press, 2005.
[7] P. Hofmann. MHEG5 and MHEG6: Multimedia Standards for Minimal ResourceSystems. 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.Xhttp://www.mhp.org/mhp_technology/mhp_1_1/