Ambiente para Desenvolvimento de Aplicações Declarativas para a TV Digital Brasileira Laboratório TeleMídia Depto. Informática PUC-Rio Introdução Um middleware fica localizado entre as aplicações e o sistema operacional, proporciona às aplicações um rápido e fácil desenvolvimento e garante heterogeneidade de sistemas operacionais e hardwares. As aplicações para TV Digital podem ser do tipo declarativa (entidade inicial declarativa, baseado em uma linguagem de descrição declarativa) ou procedural (entidade inicial procedural, implementação algorítmica (linguagens baseadas em módulos, orientadas a objetos), maior poder do programador sobre o código).Essas aplicações utilizam objetos baseados em ferramentas (AVID, Final Cut) para gerações gráficas, de objetos de texto, etc. Para a geração de conteúdo multimídia, uma solução seria uma linguagem de “cola” de objetos. Uma aplicação pode ser do tipo declarativa, procedural ou pode ser híbrida, onde o conjunto de entidades mantém os dois modelos e cada um desses pode ainda, referenciar conteúdo um do outro, coexistindo nos sistemas de TV Digital. Este artigo trata ainda do desenvolvimento de middlewares e o modelo brasileiro Ginga, bem como o uso da linguagem declarativa NCL. Histórico MHEG foi um dos primeiros padrões abertos para TV Digital e utilizava notação sintática ASN-1. Em 1991 o modelo de contextos aninhados NCM propôs uma solução para aninhamento de composições, que foi adotado pelo MHEG em 1992. O NCM tinha foco apenas para Web e MHEG começou a ter portabilidade Java, formando base para TV interativa (DAVIC – Digital Áudio Visual Council). MHP foi o primeiro middleware de puro Java, e foi incluído pelo uso do HTML, que ainda é uma linguagem delicada por tratar apenas a interatividade, sem sincronismo. O middleware do padrão japonês ISDB, utiliza a linguagem SMIL, que não funciona para temporizações em tempo real. Em 2006 começou a ser estudada a junção de um perfil SMIL com a linguagem NCL, e o sistema ISDB adota um perfil XHTML nos sitemas DVB e ATSC, com base em linguagem declarativa BML. Esta linguagem possui sincronismo e adaptabilidade através de entidades procedurais. O sistema brasileiro de TV Digital é mais recente e buscou eficiência nas novas tecnologias, em termos de custo e desempenho, criando o middleware Ginga que possui sincronismo de mídia, interatividade particular, adaptabilidade de conteúdo e suporte a múltiplos dispositivos de interação e exibição. O Ambiente Declarativo do Middleware Ginga Ginga-NCL processa documentos NCL e esta linguagem tem um controle não invasivo e não define nenhum objeto de mídia. No Ginga, objetos de vídeo e áudio MPEG-4 são tratados por exibidores de hardware. O XLet (Java TV) é um objeto de execução que faz parte da ponte entre ambiente declarativo e procedural do Ginga. Outro objeto com suporte no Ginga é o LUA, que é uma linguagem projetada para estender aplicações, ideal para configuração, automação e prototipagem rápida. LUA é interpretada a partir de bytecodes para uma máquina virtual, tem gerenciamento de memória e coleta de lixo. Existe ainda uma blblioteca LuaJava, permitindo a integração entre as duas linguagens. As características da Lua são simplicidade, eficiência, portabilidade, e baixo impacto de inclusão em aplicações, tornando-se mais eficiente tanto em termos de CPU quanto memória. Lua é muito utilizada na área de entretenimento e o NCL-Lua é o ambiente ideal no sistema brasileiro de TV Digital. O padrão Ginga define uma API padrão que todo exibidor deve reportar seus eventos (parar, iniciar, pausar) e todo relacionamento entre as condições de eventos é especificado pela linguagem NCL. Aplicações geradas em outros sistemas podem ter suporte ao Ginga e aplicações geradas em NCL podem ter suporte em outros tipos de middlewares, por causa do duplo sentido na interoperabilidade gerada pela implementação Java em conjunto com o formatador NCL. Considerações Finais As aplicações para TV Digital deverão permitir ao usuário o acesso ao sistema em diversos dispositivos, bem como adaptabilidade ao perfil do usuário, local onde o mesmo se encontra e interação com o sistema. Essas funcionalidades de acordo com o Sistema Brasileiro Ginga, são eficientes tanto em termos de tempo de CPU, quanto de utilização de memória. NCL, que é uma linguagem utilizada no Sistema Brasileiro Ginga, vem sendo utilizada para aplicações de TV Digital e tem foco em sincronismo e adaptabilidade, o que faz com que esta seja incorporada também em outros padrões internacionais.