Documente Academic
Documente Profesional
Documente Cultură
Douglas Dal Pozzo (bolsista)
PET Computação
Universidade Federal de Santa Catarina
Resumo:
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
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
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
produtos compatíveis entre geradores de conteúdo, programadores de aplicações, fábricas
esquemas de compressão e codificação de áudio e vídeo, pela camada de abstração de
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
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 –
Association of Radio Industries and Businesses.
As aplicações para tv digital
computacional proporcionado por um computador. Um possível cenário é o telespectador
permitir a navegação por essas informações, aplicações mais avançadas permitem o envio
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.
momento e não possuem um propósito específico. Guias de programação eletrônica,
home banking, jogos, etc.
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.
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
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
momento: Exemplo; email, internet.
Entre os sistemas de televisão digital abertos Java e html são as duas linguagem
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
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,
(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
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
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.
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 realtime 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.
n
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 interapplication 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 bidirectional 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 broadcastbased 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 enduser.
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 MPEG2 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.
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
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.
Devese 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:
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
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.
HScreenConfiguration.
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.
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
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
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.
interface gráfica.
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/
[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 SmithChaigneau. Interactive TV Standards.
Focal Press, 2005.
[7] P. Hofmann. MHEG5 and MHEG6: 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/