TDC 2010 Florianópolis - Ginga

Preview:

DESCRIPTION

 

Citation preview

Ginga e a TV Digital Interativa no Brasil

Bruno GhisiEngenheiro de Software

weblogs.java.net/brunogh

Alexandre LemosEngenheiro 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 TransmissãoNBR 15602 CodificaçãoNBR 15603 MultiplexaçãoNBR 15604 ReceptoresNBR 15605 SegurançaNBR 15606 MiddlewareNBR 15607 Canal de InteratividadeNBR 15608 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 EclipseDuplo Licenciamento (semelhante ao MySql) http://laws.deinf.ufma.br/~ncleclipse/index.html STB Virtual - implementação referência Ginga-NCLhttp://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-JGPLv2http://ginga.lavid.ufpb.br/projects/gingaj-emulator/wiki AntApache Software Licensehttp://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 tvdigital-subscribe@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

Bruno Ghisi weblogs.java.net/blog/brunogh bcg@certi.org.br

Alexandre Lemosarl@certi.org.br

Obrigado

Estamos contratando: TVD, Web, Mobile, Java, C/C++, Unix, embedded, XP

http://www.certi.org.br/ccd