TV Digital - The Developers Conference

Propaganda
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!
Download