PADRÕES DE MIDDLEWARE PARA TV DIGITAL Rafael V. Coelho Fundação Universidade Federal do Rio Grande (FURG) – Rio Grande - RS [email protected] Resumo. Este trabalho discute os tipos de Middleware usados para os principais Sistemas de Televisão Digital do mundo. Incluindo os padrões americano, europeu e japonês. As principais características de cada um destes padrões são esclarecidas no decorrer do artigo. Palavras-chave: TV Digital, Middleware 1. INTRODUÇÃO A principal meta deste artigo é a de esclarecer todo o funcionamento e arquitetura proposta por cada um dos principais padrões de middleware utilizados para a composição de um Sistema Digital de Televisão no mundo, inclusive no Brasil. Será também explicado, o funcionamento, qual a estrutura da arquitetura de um Sistema Digital de Televisão e quais os principais componentes contidos neste. Além disso, serão explicados os tipos de Middleware utilizados nos padrões de TV Digital. Outra meta deste trabalho é fazer uma relação entre os padrões de TV Digital mundo a fora e o modelo brasileiro. 2. A ARQUITETURA DE UM SISTEMA DIGITAL DE TELEVISÃO Para que haja um entendimento sobre os padrões de middleware utilizados, é preciso especificar qual a arquitetura de um Sistema de televisão Digital e como seus componentes internos se relacionam. Similarmente ao modelo OSI em Redes de Computadores, a arquitetura de SDTV também é dividida em camadas. Estas são independentes e cada camada superior deve utilizar os serviços oferecidos pela inferior e, ao mesmo tempo, proporcionar serviços a camada superior a mesma. As camadas são diferenciadas no transmissor e no receptor. Primeiramente, é feita a captura de vídeo, áudio e dados através de uma câmera ou de um arquivo de streaming. Este sinal é codificado (camada de middleware) e é feita a compressão dos dados do programa (camada de compressão) para que possam ser transmitidos. Depois da multiplexação dos dados comprimidos em fluxo de transporte (camada de transporte). Este fluxo codificado é adequado (modulação) ao meio de transmissão (camada de modulação). A camada mais alta do transmissor é a camada de Transmissão, na qual transmitido o sinal da TV. Enquanto isto, no receptor, o sinal da TV deve ser sintonizado (camada de recepção), demodulado e decodificado em fluxo de transporte (camada de demodulação), o programa em questão deve ser demultiplexado (camada de transporte), descomprimido (camada de descompressão) e finalmente extraídos pelo Middleware. A função do middleware é a de possibilitar que aplicações possam ser escritas de modo mais independente possível do hardware e do sistema operacional, permitindo que uma mesma aplicação possa ser carregado e executado em diferentes equipamentos receptores. É importante ressaltar que acima da camada de middleware, existe a camada de aplicação onde são colocadas as aplicações para TV - Interativa, por exemplo. Além disso, para que possa ser visto em uma TV analógica, deve ser utilizado um SET-TOP BOX que transforma os sinais digitais em sinais específicos para a TV analógica. Os padrões MPEG são usados para codificação e compressão de dados multimídia. O tipo MPEG-1 foi criado para vídeos codificados até 1,5 Mbps com qualidade VHS, e áudio codificado com 192 Kbps por canal. MPEG-2 é baseado em MPEG-1, mas mais otimizado. Ele é capaz de codificar vários vídeos entre 4 e 9 Mbps para TV ou entre 15 e 100 Mbps para HDTV. Já o padrão MPEG-4 representa conteúdos de mídia na forma de objetos. Com isso, pode ser feita tanto no servidor quanto no transmissor, a manipulação dos dados, removendo ou inserindo objetos. Além disso, cada padrão de televisão digital deve ter o seu tipo de codificação do sinal de áudio. O Dolby AC-3 é utilizado no ATSC, o MPEG-1 e MPEG-2 são utilizados no DVB e o MPEG-2 AAC é utilizado no ISDB. A camada de transporte é que faz a multiplexação dos dados. Nesta camada é feito o agrupamento de áudio, vídeo e dados em um único fluxo MPEG-TS (Transport Stream) numa mesma base de tempo. Como são utilizados pequenos pacotes para encapsular os fluxos, torna-se fácil a ressincronização de um vídeo para o caso de ocorrerem perdas de pacote no MPEG-TS. A modulação é o processo pelo qual a onda transmitida é alterada de acordo com o sinal da informação a ser transmitida. Permitindo assim que o conteúdo do sinal de mensagens não seja tão vulnerável a ruídos. Os padrões utilizados hoje em dia são COFDM (Coded Orthogonal Frequency Division Multiplexing) pelo ISDB (padrão japonês) e pelo DVB (padrão europeu). Já o padrão americano (ATSC) utiliza 8-VSB (8 L-Vestigial Side Band Modulation) para modular o sinal. 3. PADRÕES DE MIDDLEWARE As aplicações de TV Digital (DTV) podem ser divididas em aplicações procedurais e aplicações declarativas. Linguagens não declarativas podem seguir diferentes paradigmas. Têm-se assim as linguagens procedurais baseadas em módulos, orientadas a objetos. Numa programação procedural, devemos informar ao computador cada passo a ser executado. O programador possui, assim, um maior poder sobre o código, sendo capaz de estabelecer todo o fluxo de controle e execução de seu programa. Nas linguagens declarativas, existe um nível maior de abstração, usualmente ligadas a um domínio ou objetivo específico. O programador fornece apenas o conjunto das tarefas a serem realizadas, não estando preocupado com os detalhes de como o executor da linguagem (interpretador ou compilador) realmente implementará essas tarefas. 3.1 DASE O middleware DASE ou DTV Application Software Enviroment é utilizado no padrão de TV Digital Norte-Americano ATSC. Este middleware permite que serviços interativos sejam executados normalmente por qualquer receptor. O padrão DASE é um esforço do Advanced Television System Committee (ATSC) que permite aos criadores de conteúdo aperfeiçoado e interativo as especificações necessárias para que os aplicativos e dados executem uniformemente em todos os modelos e marcas de receptores. Uma aplicação DASE é um conjunto de informações que são processadas por um ambiente de aplicação para fornecer interatividade com o usuário final ou alterar o estado do ambiente da aplicação. O conteúdo da aplicação pode ser de natureza declarativa ou procedural. As aplicações declarativas tem como objetivo, principal, a apresentação de dados de forma estática. Fazem uso de várias tecnologias web, como linguagens baseadas em tags, XHTML, CSS (Cascading Style Sheets) e DOM (Document Object Model), fluxos de áudio e vídeo. Já os aplicativos procedurais são aqueles que incluem algum processamento lógico. Sendo implementados através de código escrito na linguagem de programação Java[1]. Sendo assim, este tipo de aplicação é capaz de processar tarefas mais complexas dinamicamente. Existe ainda uma categoria de aplicações híbridas, que permite uma mistura de conteúdo de aplicativos tanto declarativos como procedurais. O ambiente de aplicativos DASE fornece browser para conteúdo de aplicações declarativas e uma Máquina Virtual Java. Este tipo de middleware não especifica a implementação de um set-top box específico. 3.2 MHP O padrão MHP é o middleware usado no padrão de TV Digital Europeu DVB. O padrão MHP consiste de uma combinação de suportes à broadcast e à Internet, oferecendo uma API acessível a todos que desejam desenvolver aplicações, receptores e aparelhos de TV. No perfil Enhanced, não é oferecido suporte a canal de retorno e conexão IP. Executa as aplicações via difusão (broadcast). Já o perfil Interactive suporta a um canal de retorno e conexão IP, permitindo assim a possibilidade de interatividade remota. O ultimo perfil disponibilizado pelo Middleware MHP é o Internet Access que suporta aplicações web, além de aplicações desenvolvidas em Java. Este último perfil só foi disponibilizado na versão MHP 1.1. Todos os perfis possuem suporte a aplicações interativas desenvolvidas com a DVB-J que representa um conjunto de funções de alto nível, estruturas de dados e protocolos que representam uma interface padrão para o desenvolvimento de software independente de plataforma de hardware. Duas importantes diferenças entre o MHP 1.0 e o MHP 1.1 são que a nova especificação permite a possibilidade de armazenar localmente aplicações e plug-ins recebidos por difusão, além do acréscimo da DVB-HTML API, uma interface de programação de aplicações baseadas em HTML. Existem dois tipos de aplicações suportadas pelo padrão MHP: DVB-HTML (apresentada através de conteúdo hipermídia) e DVB-J (representadas através de conteúdo compilado na linguagem Java). O MPH é dividido em três camadas: recursos (hardware embutidos), software (aplicações) e interface das aplicações (interoperabilidade). Na camada de recursos estão incluídos os recursos de hardware embutidos na televisão ou set-top-box. Recursos disponíveis incluem hardware de decodificação MPEG, dispositivos de entrada e saída de dados, CPU, memória e sistemas de geração de imagem. Já na camada de software, as aplicações não acessam diretamente os recursos de hardware. Ela traz uma visão abstrata dos recursos disponíveis. Este isolamento entre hardware e software cria portabilidade. Esta camada também inclui um gerenciador de aplicações, que é responsável por controlar o ciclo de vida das aplicações. Finalmente, na camada de Interface das Aplicações, é mantida a interoperabilidade das diversas aplicações MHP desenvolvidas, utilizando principalmente a DVB-J API, aplicações estas orientadas a objeto e baseadas na linguagem de programação Java. Em 2004, uma pesquisa demonstrou que foram registradas vendas de 340.000 receptores com MHP na Itália. Um estudo feito em 2003 mostrou que 700.000 receptores estavam funcionando na Coréia do Sul. Isso sem contar que também é o padrão da Alemanha e da Suécia. Com isto, nota-se a abrangência do padrão MHP na Europa e em outros Países como a Coréia do Sul. 3.3 ARIB O padrão de middleware ARIB (Association of Radio Industries and Business) é utilizado no padrão Japonês ISDB. Neste sistema, áudio, vídeo e todos os serviços de dados são multiplexados e transmitidos via broadcasting de rádio, em um TS (Transport Stream) especificado pelo MPEG-2. Canais para a interatividade das comunicações são disponibilizados através dos canais interativos da rede. O sistema de transmissão de dados que utiliza o armazenamento dos pacotes como um fluxo de pacotes no PES (Packetized Elementary Stream) é usado para aplicações em tempo real, que necessitam de sincronização na decodificação e reprodução dos diferentes tipos de mídia. A estrutura lógica do display ARIB é composta, respectivamente, de plano de vídeo, plano de figura, plano de controle, plano de gráficos e textos e plano de legendas. Além disso, existe o sistema de transmissão de dados, no qual os dados serão transmitidos inúmeras vezes. Este serviço é especificado como carrossel de dados. Outra facilidade proporcionada pelo ARIB é que ele permite adicionar EPG (Electronic Program Guide), índice e funções de gravação automática para melhorar a seleção da programação. Facilitando assim a programação pessoal do usuário. 3.4 Ginga O padrão de camada de software intermediário Ginga[2] foi o primeiro middleware opensource desenvolvido no Brasil com o intuito de prover funções de interatividade para TV Digital e foi lançado no dia 3 de Julho de 2007 no Auditório Principal do Instituto Militar de Engenharia Praia Vermelha, Rio de Janeiro. O Middleware Ginga foi uma iniciativa realizada pelo Laboratório TeleMídia do Departamento de Informática da PUC - Rio em conjunto com o Laboratório LAVID da Universidade Federal da Paraíba. Este padrão brasileiro é divido em Ginga-NCL[3] e Ginga-J. O Laboratório TeleMídia foi responsável pelo Ginga-NCL que é uma infra-estrutura de apresentação para aplicações declarativas escritas na linguagem Nested Context Language (NCL). NCL é uma aplicação XML com facilidades para a especificação de aspectos de interatividade e sincronismo espaço-temporal entre objetos de mídia. Enquanto isso, o Laboratório LAVID foi responsável por desenvolver o Ginga-J que é a infra-estrutura de apresentação para aplicações procedurais (Java Xlet). E é através desta que pode ser implementada aplicações de maior complexidade que provê a interação com o usuário. Existe uma ponte (bridge) entres os módulos Ginga-NCL e Ginga-J que é disponibilizado pela arquitetura Ginga. Além destes dois módulos citados acima, também existe o módulo Common Core que é a camada de software que dá suporte para os outros módulos através de uma série de codecs e procedimentos para obter dados do MPEG-TS ou do canal de retorno que permite a possibilidade de interatividade. Ginga-NCL. O subsistema lógico GingaNCL é composto por uma série de módulos. O mais importante módulo é o NCL Formatter, já que este é responsável por receber um documento NCL e controlar a sua apresentação, tentando garantir que relacionamentos entre objetos de mídia sejam respeitados. Os documentos NCL são providos por uma estrutura chamada private base que corresponde um canal de TV. A partir da linguagem NCL, os objetos envolvidos são descritos e a sincronização entre eles é obtida. Além de especificar o espaço temporal dos mesmos. Os objetos são descritos em documentos NCL que por sua vez são executados pelo Formatador NCL. Os tipos de objetos suportados depende diretamente do NCL player embutido no Formatador NCL. Um destes players é o decoder/player implementado em hardware pelo receptor. Outros módulos do Ginga-NCL merecem destaque. O XHTML-based user agent é composto por um interpretador stylesheet (CSS) e um interpretador ECMAScript. E o módulo LUA engine é responsável por interpretar scripts LUA. LUA[4] é uma linguagem de programação leve e poderosa, projetada para estender aplicações. Seus scripts são acoplados a programas maiores que precisam ler e executar programas escritos pelos usuários. Ginga-J. A arquitetura Ginga-J é composta de cinco camadas: Hardware, Sistema Operacional, Implementação Ginga e Java Virtual Machine (JVM), API Ginga-J e Xlets. Dentre as camadas que compõem a arquitetura Ginga-J, merece destaque a de aplicações. Aplicações para TV Digital, principalmente com enfoque interativo são chamados de Xlets. São similares a Applets em java, mas não são iguais. Xlets são aplicações desenvolvidas em Java TV[5] que é uma API que estende a plataforma Java. Foi desenvolvida pela Sun Microsystems[6] para prover acesso e funcionalidades num receptor de televisão digital. A Sun Microsystems fornece um emulador para simular uma TV Digital em um desktop, chamado XletView. Este é baseado no middleware MHP e é Open Source. Desta forma, as aplicações (Xlets) desenvolvidos podem ser testados de forma rápida e fácil. Para implementar um Xlet, devem ser implementados um número pequeno de métodos que controlam o ciclo de vida do mesmo. 4. CONCLUSÃO A televisão analógica está caindo em desuso. A televisão digital surgiu com o objetivo de ter uma melhor qualidade de imagem e som. Faz melhor uso da largura de banda, tem a transmissão do sinal livre de ruídos. Com isso, possibilita a existência da televisão de alta definição além de permitir a interatividade que é a área de mais rápido desenvolvimento atualmente e de maior interesse. Onde se captava um único programa por canal, poderão existir vários programas (sistema de múltiplos programas). Existem ainda outras vantagens que não serão abordadas neste trabalho. Como exemplos pode-se citar o T-commerce, o comércio eletrônico pela TV, e o T-Banking, serviços bancários também pelo monitor de TV. Isto sem falar na TV interativa que é uma das áreas de maior atratividade e de progresso rápido. Um sistema de transmissão de TV Digital consiste de uma estação transmissora (head-end), um meio físico sobre o qual o sinal de vídeo é transmitido, que pode ser o ar, cabos ou mesmo satélites, e um receptor ou Terminal de Acesso que recebe o sinal transmitido, o decodifica e o exibe. Para garantir a compatibilidade entre estes elementos e permitir que o vídeo possa ser exibido nos destinos, é necessário que sejam padronizada a comunicação entre estes elementos através de padrões. Os padrões mais consolidados são o padrão de TV Digital Norte-Americano ATSC que utiliza o middleware DASE, o padrão Europeu DVB que utiliza o Middleware MHP e o padrão Japonês ISDB que utiliza o Middleware ARIB. Além destes, é importante ressaltar o padrão brasileiro de Middleware Ginga que foi uma iniciativa realizada pelo Laboratório TeleMídia do Departamento de Informática da PUC - Rio em conjunto com o Laboratório LAVID da Universidade Federal da Paraíba. REFERÊNCIAS [1] DEITEL H., DEITEL P. (2005). “Java: Como Programar”. Prentice-Hall, Edição 6. [2] www.ginga.org.br [3] http://www.ncl.org.br/ [4] Ierusalimschy R. (2006). “Programming in Lua”. Lua.org, Edição 2. [5] Bart Calder, et al, “JavaTV™ API Technical Overview: The JavaTV API Whitepaper”, 2000 [6] http://java.sun.com