Ginga e a TV Digital Interativa no Brasil Bruno Ghisi Engenheiro de Software weblogs.java.net/brunogh Alexandre Lemos Engenheiro de Software
Objetivo Introduzir o conceito do cenário brasileiro de TV Digital, middleware Ginga, aplicações interativas e ferramentas open source relacionadas.
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Histórico Novembro 2003 Ato federal para criação de um sistema de TV Digital SBTVD (Sistema Brasileiro de TV Digital Terrestre) Junho 2006 Definição do padrão ISDB-Tb
Cadeia de valor Radiodifusor Fabricante de produto (OEM) Academia Fornecedor de middleware Fornecedor de JVM Fabricante de chipset Gerador de conteúdo Fornecedor de ferramentas...
Fórum SBTVD e ABNT Fórum SBTVD Define as especificações e propões soluções de acordo com a realidade brasileira Dissemina o padrão ABNT Normatiza as especificações Gerencia as normas
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Padrão Brasileiro TVD ISDB-Tb - padrão japonês Vídeo H.264 Áudio MPEG-4 Ginga Mobilidade One-seg (1Seg)
Padrão Brasileiro TVD Países que escolheram: Brasil Peru Argentina Chile Venezuela Equador Costa Rica Paraguai Bolívia Nicarágua
Receptores full-seg e one-seg Full-seg 1920x1080i, 1280x720p, 720x480p ex: set top box e televisão One-seg 320x240 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
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Middleware de TVD O que é um middleware? 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? Middleware que irá rodar no conversor (set top box) ou embarcado na TV
Carrossel Objetos
O que é o Ginga? Ginga é o nome do Middleware do Sistema Brasileiro de TV Digital (SBTVD)
Norma Middleware Ginga ABNT NBR 15606 - Middleware Ginga Middleware brasileiro de TV Digital É uma especificação X implementação ABNT NBR 15606 é dividida em 6 partes NBR 15601 NBR 15602 NBR 15603 NBR 15604 NBR 15605 NBR 15606 NBR 15607 NBR 15608 Transmissão Codificação Multiplexação Receptores Segurança Middleware Canal de Interatividade Guia de operação
Controle Remoto
Arquitetura Middleware TVD
Arquitetura Middleware Ginga
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Middleware Ginga - Ginga-NCL
NCL PUC-Rio NCL (Nested Context Language) é a parte declarativa do Ginga Linguagem formato XML Código NCL define os objetos de mídia e a estrutura da apresentação Formatador NCL controla fluxo da apresentação ciclo de vida dos players de mídia
NCL
Players Players de mídia específicos apresentam o conteúdo para o usuário Vídeo, Imagens Player Lua - interpretador para scripts Lua Player de Xlets Java Player XHTML - decodifica conteúdo XHTML, incluindo CSS (stylesheets) e ECMAScript
Lua PUC-Rio 1993 Linguagem de script poderosa, leve e extensível Implementado como uma biblioteca, escrita em C Linguagem procedural, com sintaxe semelhante ao C Dinamicamente tipado Sem ponteiros Coletor de lixo http://www.lua.org
Lua
NCLua Extensões ao Lua módulo canvas desenhar diretamente em uma área da TV módulo event comunicação com players no NCL input canal de retorno informações do programa de TV módulo settings configurações do NCL e receptor módulo persistent permite armazenar pequena quantidade de dados no receptor
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Middleware Ginga - Ginga-J
Histórico Ginga-J foi proposto pela UFPB (Universidade da Paraíba) em Dez/07 Ocorreram algumas questões de propriedade intelectual em função do MHP (APIs HAVI & DAVIC) Fórum SBTVD e a Sun Microsystems propuseram uma nova especificação Java DTV
Stack Ginga-J Ginga-J define o ambiente de execução para aplicação procedurais: Java Xlets
CDC / FP / PBP Connected Device Configuration (CDC) A configuração mais abrangente do Java ME CDC é compatível com sintaxe Java 1.4 Com a a adição dos profiles, pode se chegar na API Java SE Foundation Profile (FP) APIs io, security, network, utility Personal Basis Profile (PBP) AWT
AMS Application Management System Sandbox Xlet
Xlet import javax.microedition.xlet.xletstatechangeexception; import javax.microedition.xlet.xletcontext; import javax.microedition.xlet.xlet; public class BasicXlet implements Xlet { public BasicXlet () {} public void initxlet (XletContext context) throws XletStateChangeException {} public void startxlet () throws XletStateChangeException {} public void pausexlet () {} public void destroyxlet (boolean unconditional) throws XletStateChangeException {} }
Java TV APIs definidas no Java TV fornecem um framework Outros middlewares TVD utilizam como stack básica Java 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) Propriedades do usuário Acesso aos arquivo da transmissão (broadcast) Persistência (limitada) Canal de retorno Acesso aos dispositivos de rede Comunicação Inter-Xlet LWUIT
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 (Graphics, Font, etc) Suporte a style, theme e look and feel Resource bundles permitem o empacotamento dos recursos de maneira portável Temas, fontes, imagens, animações e mensagens
Componentes LWUIT
Componentes LWUIT
Componentes LWUIT
Extensões brasileiras (SBTVD) Complementam e estendem a Java DTV API de informações de serviço dependente de protocolo Acessa informações dos serviços específicas do padrão brasileiro (baixo nível) API da ponte NCL
Middleware Ginga - Ponte
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Ferramentas Ginga-NCL LuaEclipse (Licença MIT) http://luaeclipse.luaforge.net/ http://github.com/kinfoo/luaeclipse NCL Eclipse Duplo Licenciamento (semelhante ao MySql) http://laws.deinf.ufma.br/~ncleclipse/index.html STB Virtual - implementação referência Ginga-NCL http://www.gingancl.org.br/ferramentas.html Lunity (Creative Commons) http://phrogz.net/lua/lunity.lua LuaCov (Licença MIT) http://luacov.luaforge.net Ref http://www.bravaitv.com.br/fisl
Ferramentas Ginga-J Emulador Ginga-J - Open Ginga - implementação referência Ginga-J GPLv2 http://ginga.lavid.ufpb.br/projects/gingaj-emulator/wiki Ant Apache Software License http://ant.apache.org Criatividade! LWUIT celular, Java TV SDK, phoneme Advanced, etc Ref http://www.bravaitv.com.br/fisl
Demo OpenGinga
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Comunidades e Listas http://www.forumsbtvd.org.br http://www.softwarepublico.gov.br http://clube.ncl.org.br https://javatv-developers.dev.java.net Listas Lista TV Digital SouJava em tvdigitalsubscribe@soujava.dev.java.net devdtv@googlegroups.com tvinterativa@googlegroups.com
Agenda Contextualização Demo Padrão Brasileiro TVD Middleware Ginga Subsistema Ginga-NCL Subsistema Ginga-J Ferramentas Comunidades Status atual
Receptores
Copa - Band
Copa - Globo
Tititi - Globo
Passione - Globo
Caminho das Índias - Globo
A Fazenda - Record
Portal SBT
Obrigado Bruno Ghisi weblogs.java.net/blog/brunogh bcg@certi.org.br Alexandre Lemos arl@certi.org.br Estamos contratando: TVD, Web, Mobile, Java, C/C++, Unix, embedded, XP http://www.certi.org.br/ccd