Introdução ao middleware de TV Digital brasileiro Bruno Ghisi Fundação CERTI SCJA, SCJP, SCMAD, SCSNI e IBM Certified Specialist SQ Ian Ribas Fundação CERTI SCEA Objetivo Fornecer uma visão geral sobre o middleware brasileiro de TV Digital, o Ginga, e seus subsistemas Ginga-NCL e Ginga-J Exemplo Rede Globo Exemplo Record Exemplo SBT Agenda • • • • • Contextualização Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ponte Agenda • • • • • Contextualização Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ponte Histórico • Novembro 2003 o Ato federal para criação de um sistema de TV Digital o SBTVD (Sistema Brasileiro de TV Digital Terrestre) • Junho 2006 o Definição do padrão ISDB-T • Novembro 2007 o Início da transmissão do sinal da TV Digital no Brasil • Janeiro 2017 o Fim da TV Analógica Cadeia de valor • • • • • • • Radiodifusor OEM Academia Fabricante de chipset Empresa de middleware Gerador de conteúdo ... Fórum SBTVD e ABNT • Fórum SBTVD o Define as especificações e propões soluções de acordo com a realidade brasileiro o Dissemina o padrão • ABNT o Normatiza as especificações o Gerencia as normas O que é o Ginga? • Ginga® é o nome do Middleware Aberto do Sistema Brasileiro de TV Digital (SBTVD) Norma Middleware Ginga • ABNT NBR 15606 - Middleware Ginga o Middleware brasileiro de TV Digital o É uma especificação X implementação • Parte 1: Codificação de dados o Estrutura geral do middleware, requisitos e integração com o hardware • Parte 2: Ginga-NCL para receptores fixos e móveis Linguagem de aplicação XML para codificação de aplicações ABNT NBR 15606 • Parte 3: Especificação de transmissão de dados • Parte 4: Ginga-J — Ambiente para a execução de aplicações procedurais o Em processo de homologação • Parte 5: Ginga-NCL para receptores portáteis - Linguagem XML para codificação de aplicações Agenda • • • • • Contextualização Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ponte O que é um middleware de TVD? • O que é um middleware? o Camada de software intermediário que oculta dependências de plataforma e permite que aplicações sejam desenvolvidas de maneira independente • O que é um middleware de TV Digital? o Middleware que irá rodar no conversor (set top box) ou embarcado na TV Arquitetura Básica de Middleware Arquitetura Ginga • Aplicações podem ser o declarativas (Ginga-NCL) o procedurais (Ginga-J) o híbridas (Ponte) • Ginga Common Core o Decodificadores o Acesso aos recursos Arquitetura Middleware Ginga Receptores full-seg e one-seg • Full-seg o ex: set top box e televisão • One-seg o ex: celular • Ginga-NCL é mandatório para todos receptores • Ginga-J é mandatório para receptores full-seg • Canal de retorno: Full-seg, opcional; one-seg, obrigatório Exemplos de aplicações • Sincronismo de apresentação o assíncrono o sincronismo programa o sincronismo tempo • Exs o Relacionado com serviço de difusão Participação em programas -> Vendas, questionários, etc. Canal de retorno Informação suplementar sobre programas -> Produção, programa, informação de produto, notícias da emissora etc. o Independente com serviço de difusão Informação Independente -> Notícias, previsão do tempo, informação de tráfego, informações de mercado, desastres, eleições, etc o Serviço de função Download -> Correção de erros, upgrade de versão Processo de Apresentação Agenda • • • • • Contextualização Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ponte Middleware Ginga - Ginga-NCL Ginga-NCL • NCL (Nested Context Language) é a parte declarativa do Ginga • Linguagem XML • Código NCL define os objetos de mídia e a estrutura da apresentação • Formatador NCL controla o fluxo da apresentação o ciclo de vida dos players de mídia Documento NCL o quê? nós onde? regiões como? descritores quando? elos e conectores Fonte: Oficina de introdução de aplicações para o Ginga. Telemídia, 2009. Ginga-NCL Conector dispara um evento • action • de um nó de mídia Baseado na ocorrência de outro evento • condition • de um nó de mídia Fonte: Oficina de introdução de aplicações para o Ginga. Telemídia, 2009. Players • Players de mídia específicos apresentam o conteúdo para o usuário o Vídeo, Imagens o Player Lua - interpretador para scripts Lua o Player de Xlets Java o Player XHTML - decodifica conteúdo XHTML, incluindo CSS (stylesheets) e ECMAScript Lua • Linguagem de script poderosa, leve e extensível • Implementado como uma biblioteca, escrita em C • Linguagem procedural, com sintaxe semelhante ao C o Tipo string o Dinamicamente tipado o Sem ponteiros o Coletor de lixo o Tabela associativas dinâmicas como a única estrutura de dados o Funções são variáveis de primeira classe o Suporta alguns conceitos de OOP e FP • Referência completa em: http://www.lua.org NCLua • Módulos extras que devem ser implementados e automaticamente carregados: o módulo canvas: oferece uma API para desenhar primitivas gráficas e manipular imagens o módulo event: permite aplicações NCLua se comunicarem com o middleware através de eventos(NCL e eventos de tecla). Oferece mecanismo para interatividade(tcp class) o módulo settings: exporta uma tabela com variáveis definidas pelo autor do documento NCL e variáveis reservadas de ambiente contidas no nodo application/xginga-settings o módulo persistent: exporta uma tabela com variáveis persistentes, que podem ser manipulados por objetos imperativos. Agenda • • • • • Contextualização Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ponte Middleware Ginga - Ginga-J Histórico • Ginga-J foi proposto pela UFPB (Universidade da Paraíba) em Dez/07 e ocorreram algumas questões de propriedade intelectual em função do MHP (APIs HAVI & DAVIC) o Forum SBTVD e a Sun Microsystems propuseram uma nova especificação em Dez/08 Java DTV Stack Ginga-J • Ginga-J define o ambiente de execução para aplicação procedurais: Java Xlets Modelo de aplicação (XLet) • O gerenciador de aplicativos (AMS) o Carrega, configura, instancia e roda aplicativos o Controla o ciclo de vida dos aplicativos • Cada aplicativo roda separado e não pode compartilhar class loaders CDC / FP / PBP • Connected Device Configuration (CDC) o A configuração mais abrangente do Java ME o CDC fornece uma implementação completa da linguagem Java 1.4 o Com a a adição dos profiles, pode se chegar na API Java SE • Foundation Profile (FP) o Adiciona APIs ao CDC io, security, network, utility • Personal Basis Profile (PBP) o Ambiente de aplicação para aplicativos baseados em AWT que usam somente componentes leves o Muitos dos pacotes e classes do PBP são subcojuntos dos seus equivalentes em Java SE Java TV Fornece um framework ● Outros middlewares utilizam como stack básica ● Acesso ao dados transmitido com o sinal de TV ● Acesso aos dados do SI (Service Information) ● Controle dos media players específicos da TV via JMF ● Java DTV • Informações de serviço, tuner, transporte (MPEG streams) • Media players o Controle das mídias: áudio,vídeo e legendas (close caption) o API de acesso aos recursos de mídia da plataforma • Propriedades do usuário • Acesso aos arquivo da transmissão (broadcast) • Persistência (limitada) • Canal de retorno o Acesso aos dispositivos de rede • Comunicação Inter-Xlet o Integra com o IXC do PBP • LWUIT • Segurança LWUIT ● ● ● ● ● ● ● LWUIT - LightWeight User Interface Toolkit Componentes gráficos de alto nível Tratador de eventos hierárquico através dos containers e componentes Abstração dos componentes nativos Componentes podem ser animados Personalização através de look and feels Resource bundles permitem o empacotamento dos recursos de maneira portável ● Temas, fontes, imagens, animações e mensagens Extensões brasileiras • Complementam e extendem a Java DTV • API de informações de serviço dependente de protocolo o Acessa informações dos serviços específicas do padrão brasileiro (baixo nível) • API extensões para sintonia (zapping) de canais • API da ponte NCL • API adicional de acesso ao canal de retorno o Reserva e conexão o Envio de mensagens • API de acesso baixo nível aos planos gráficos • API de integração de dispositivos externos Agenda • • • • • Contextualização Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ponte Middleware Ginga - Ponte Ponte - NCL -> Java • A ponte funciona em ambos os sentidos • Há um XLet Player, usado integrar o ambiente procedural no formatador NCL o Ginga-J (Xlets) são representados como elementos <media> o No documento NCL, é possível sincronizar Xlets com outros tipos de mídia • Elementos <property> podem ser associados com métodos ou atributos no Xlet, a serem modificados por eventos NCL • Scripts Lua tem acesso à API Java do Ginga-J o Tem um mapeamento dos tipos entre as liguagens Ponte - Java -> NCL • A API da ponte NCL contém um conjunto de classes que implementam a comunicação entre o ambiente imperativo e o declarativo do ambiente Ginga • Controle da apresentação do documento NCL pelo programa Java o NCLPlayer é um player dos documentos NCL para ser incluido no Xlet Java o NCLEdit permite edição dinâmica do documento NCL • Notificação dos eventos do formatador NCL para um Xlet o NCLEventListener precisa ser implementado para receber NCLEvents Referências • • • • • • http://www.forumsbtvd.org.br http://www.softwarepublico.gov.br https://javatv-developers.dev.java.net http://clube.ncl.org.br http://www.openginga.org Lista TV Digital SouJava em [email protected] Obrigado Bruno Ghisi weblogs.java.net/blog/brunogh [email protected] Ian Ribas [email protected] Estamos contratando!