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 TV Pacote javax.tv.carousel javax.tv.graphics javax.tv.locator javax.tv.media
função Provides access to broadcast file and directory data through APIs that work with the java.io package. Provides a mechanism by which Xlets may discover their root container and describes a mechanism for alpha blending. Provides a means for referencing data and resources accessible via the Java TV APIs. Provides controls and events for the management of realtime media in a television 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.
javax.tv.service javax.tv.service.guide javax.tv.service.navigati on javax.tv.service.selectio n
Provides mechanisms for accessing the service information (SI) database and APIs representing the SI elements it contains. Provides APIs to support electronic program guides (EPGs), including program schedules, program events and program ratings. Provides APIs to navigate through services and hierarchical service information. Provides a mechanism to select a Service for presentation.
javax.tv.service.transpo rt
Provides additional information about the transport mechanisms that deliver the 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 communicate. Tabela 1 Pacotes da API Java TV utilizados pela especificação MHP e suas respectivas funções [2]. javax.tv.xlet
HAVi Level 2 User Interface função Pacote 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 n
Provides access to lists of applications which are available in this context and the ability to 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 event mechanism of the java.awt package.
org.dvb.io.ixc
Provides support for interapplication communication.
org.dvb.io.persiste nt
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 org.dvb.net.tuning org.dvb.si
Provides session management for bidirectional IP connections which are session based from the point of view of an application. Provides extensions to the tuning API from DAVIC.
org.dvb.ui
Provides access to DVB service information. Broadcast model In a broadcastbased conformance system, there are effectively three main entities involved in an automated test process: The test server that is used to hold and initiate all of the tests. Provides extended graphics functionality.
org.dvb.user
Provides access to settings and preferences configured by the enduser.
org.dvb.test
Tabela 3: Pacotes da API DVB utilizados pela especificação MHP e suas respectivas funçõ es [10].
DAVIC Core Pacote
função
org.davic.media
Provides various extensions to the Java Media Framework for the control of TV 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 ns
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 those 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... A televisão digital utiliza um modelo gráfico baseado em camadas.
No computador... No computador pessoal o modelo gráfico apresenta somente uma camada onde são colocados todos os componentes.
Devese configurar os dispositivos relacionados as camadas do modelo gráfico. Limitações de poder de processamento, diferentes tamanhos de telas.
Não é necessária a configuração explícita dos componentes relacionados ao modelo gráfico. Os computadores são mais genéricos
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 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 HScreen
Função Representa a tela física de um settopbox
Classe configuração X
HScreenDevices
Classe abstrada que define os dispositivos lógicos constituintes da classe HScreen.
X
HBackgroundDevice
Representa a camada do fundo da tela.
HBackgroundConfiguration HStillBackgroundConfiguration
Representa a camada de exibição de 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 HVideoDevice
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 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 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/