SlideShare uma empresa Scribd logo
1 de 192
Baixar para ler offline
Desenvolvimento de Aplicações
Interativas para TV Digital com NCLua
Roteiro
1. O que é a TV Digital Interativa (TVDI) ?
2. Modelo de TVDI;
3. Tipos de Definição na TVD;
4. Aplicações na TVDI;
5. Middleware;5. Middleware;
6. Padrões utilizados;
7. Set-Top Box (STB);
8. JavaTV;
9. NCL;
10. Links sobre TVDI.
1. O que é a TVDI ?
• O sinal da TV é transmitido em um
formato digital, que permite multiplexar
informações de áudio,vídeo e dados num
mesmo canal de transmissão;mesmo canal de transmissão;
• Uso de um canal de retorno para a
comunicação com o emissor do sinal, o
que caracteriza a interatividade.
1. O que é a TVDI ?
• Como funciona ?
– A TV Digital funciona convertendo em fluxos
de bits, imagens e sons (e dados), que por
sua vez são transformados em sinas
elétricos, que são transportados por ondaselétricos, que são transportados por ondas
magnéticas.
– Então os sinais elétricos chegam ao receptor,
e são novamente transformados em fluxos de
bits e convertidos em imagens e sons (e
dados).
1. O que é a TVDI ?
• A verdadeira TV Digital, é completamente
digital e envolve:
– câmeras digitais funcionando com uma
resolução muito maior do que as câmerasresolução muito maior do que as câmeras
analógicas;
– transmissão digital;
– exibição digital com uma resolução muito
maior.
2. Modelo de TVDI
3. Tipos de Definição da TVD
• Standard Definition TV
640 pontos por 480 linhas – 4:3
• High Definition TV
1280 pontos por 720 linhas – 16:91280 pontos por 720 linhas – 16:9
• Full High Definition TV
1920 pontos por 1080 linhas – 16:9
4. Aplicações na TVDI
Segundo o Emarketer, empresa americana
de pesquisa em novas tecnologias, o
termo TVDI abrange uma série de
aplicações, serviços e tecnologias, muitasaplicações, serviços e tecnologias, muitas
ainda nem inventadas.
Mas é possível classificar toda variedade de
informações abrangidas pelo termo em 7
grandes grupos:
4. Aplicações na TVDI
1. Enhanced TV: tipo de conteúdo
televisivo que abrange texto, vídeo e
elementos gráficos, como fotos e
animações;animações;
2. Internet on TV: permite o acesso à
internet usando o televisor. Todas as
funções da internet que conhecemos
hoje estão disponíveis;
4. Aplicações na TVDI
3. Individualized TV: permite a adaptação
total da TV ao gosto do telespectador;
4. Video-on-demand: capacita os
telespectadores a assistir o programa natelespectadores a assistir o programa na
hora em que quiserem, sem a restrição
ao horário em que é transmitido pela
emissora;
4. Aplicações na TVDI
5. Personal Video Recorder (PVR):
também conhecido como Personal TV
ou Digital Video Recorder (DVR),
permite a gravação digital de programaspermite a gravação digital de programas
apenas especificando o título, o horário,
o assunto, o ator, ou algum outro dado
pré-cadastrado sobre o filme;
4. Aplicações na TVDI
6. Walled Garden: um portal contendo um
guia das aplicações interativas. Pode ser
comparado à revista com a grade de
programação das TVs a cabo;programação das TVs a cabo;
7. Game Console: permite o uso da TV
para jogos, seja contra a própria TV,
computador, ou em rede, contra outros
jogadores.
5. Middleware
• Esconde as peculiaridades e
complexidades do hardware, sistema
operacional, drivers de dispositivos,
software e hardware responsáveis
pela decodificação do sinal.pela decodificação do sinal.
• O middleware é a camada de
comunicação entre a camada de
aplicação e os serviços oferecidos
pelas camadas inferiores.
6. Padrões utilizados
Europeu (DVB)
MHP
MPEG-2 BC
MPEG-2 SDTV
MPEG-2
COFDM
Americano (ATSC)
DASE
Dolby AC3
MPEG-2 HDTV
MPEG-2
8-VSB.
Japonês (ISDB)
ARIB
MPEG-2 AAC
MPEG-2 HDTV
MPEG-2
COFDM
Brasil (ISDB)
Ginga
MPEG-4
MPEG-4
MPEG-2
COFDM
Middleware
Comp.Áudio
Comp.Vídeo
Transporte
Transmissão
7. Set-Top Box (STB)
• “Dispositivo de Entretenimento Interativo
residencial que disponibiliza acesso à internet,
streaming de vídeo e informações via
tradicional sistema de televisão”, National
Semiconductor - 2000.
– Conversão do sinal digital para formato analógico;
– Seleção de programação, inibição de comerciais,
gravação de filmes etc.
– Download e Upload de dados;
– Jogos;
– Ensino a distância;
– Etc.
8. JavaDTV
• É uma plataforma para desenvolvimento e
distribuição de serviços para TVD;
• O middleware dos 3 (e o brasileiro)
principais sistemas de TVD adotam Java;principais sistemas de TVD adotam Java;
• Paradigma PROCEDURAL;
• http://java.sun.com/
9. NCL
• Nested Context Language (PUC-Rio), baseada
no NCM (Nested Context Model);
• Paradigma DECLARATIVO;
• http://www.ncl.org.br/• http://www.ncl.org.br/
• O middleware brasileiro GINGA está sendo
construído para executar aplicações
desenvolvidas em Java e NCL.
10. Links sobre TVDI
• http://uitv.info/
• http://www.labitv.futuro.usp.br/
• http://www.interactivetvweb.org/
• http://www.itvt.com/
• http://www.pjb.co.uk/
• http://www.lsda.org.uk/• http://www.lsda.org.uk/
• http://www.digitaltelevision.gov.uk/
• http://www.broadbandbananas.com/
• http://sbtvd.cpqd.com.br/
• http://www.forumsbtvd.org.br/
• http://www.ncl.org.br
• http://www.ginga.org.br
• http://www.tiresias.org/guidelines/television/index.htm
Nested Context Language
(Linguagem de Contexto Aninhado)
Nested Context Language
(Linguagem de Contexto Aninhado)
A linguagem NCL Nested Context Language é uma
linguagem declarativa para autoria de documentoslinguagem declarativa para autoria de documentos
hipermídia baseados no modelo conceitual NCM
Nested Context Model - que foi desenvolvida utilizando
uma estrutura modular, seguindo os princípios
adotados pelo W3C.
Fonte: www.ncl.org.br
Nested Context Language
• Linguagem proposta pela PUC – Rio;
• Paradigma Declarativo
u ex: NCL, HTML, SQL
u “o que fazer”
u linguagens de domínio específico
• É especificado por XML Schema;
– Defini a estrutura do documento de forma auto-descritiva;
• A linguagem é baseada no modelo de contexto aninhado (NCM);
– Permite que documentos NCL possuam mais de um nível de
aninhamento de contexto;
Nested Context Language
<livro>
<capitulo>
<secao>
<paragrafo>...</paragrafo>
<paragrafo>...</paragrafo>
</secao>
<secao>
•Todas as tags devem ser
fechadas;
•São case sensitive;
•Devem estar bem aninhadas;
Exemplo de XML
<secao>
<paragrafo>...</paragrafo>
<paragrafo>...</paragrafo>
</secao>
</capitulo>
</livro>
•Deve possuir uma raiz;
•Tags principais do NCL:
<ncl> (Raiz)
<head>
<body>
• Projetada de forma modular:
– Permitindo a combinação de seus módulos em
diferentes perfis de linguagem;
• Principais Módulos:
– Structure > atributos que devem estar em todos os documentos
– Layout > como as mídias serão inicialmente apresentadas
Nested Context Language
– Layout > como as mídias serão inicialmente apresentadas
– Media >representar conteúdo físico de mídia digital
– Context > definir contextos internos, como links nas mídias
– Descriptor > informação necessária para que a mídia seja
corretamente exibida
– Linking > possibilita a relação entre elementos hipermídia
– Connector > estabelece eventos de sincronização e interação
com o conteúdo
Nested Context Language
• Linguagem de marcação de dados:
– Formato para descrever dados estruturados;
– Declaração mais precisa dos dados;
• Suporte a sincronização;
– Baseada na estrutura;
– Suporte a canal de retorno;– Suporte a canal de retorno;
• Suporte a múltiplos dispositivos;
• Suporte a edição ao vivo;
– TV Social;
• NCL é software livre!
Nested Context Language
Nós e elos num documento hipermídia
Nested Context Language
Nós e elos num documento
hipermídia
Nós de mídia
Nested Context Language
Nós e elos num documento hipermídia
Nós, elos e nós de composição (contextos)
Nested Context Language
Nós de Contexto ou
Composição
Conjunto de nós ou
conjunto de composiçõesconjunto de composições
Daí o nome de modelo
Contextos Aninhados.
Nós, elos e nós de composição (contextos)
Nested Context Language
(Linguagem de Contexto Aninhado)
A linguagem NCL Nested Context Language é uma
linguagem declarativa para autoria de documentoslinguagem declarativa para autoria de documentos
hipermídia baseados no modelo conceitual NCM
Nested Context Model - que foi desenvolvida utilizando
uma estrutura modular, seguindo os princípios
adotados pelo W3C.
Fonte: www.ncl.org.br
Multimídia
É a combinação, controlada
por computador, de pelo
menos um tipo de mídia
estática (texto, fotografia,
gráfico), com pelo menos
um tipo de media dinâmicaum tipo de media dinâmica
(vídeo, aúdio, animação)
(Chapman & Chapman
2000 e Fluckiger 1995).
Multimídia = Hipermídia ?
Multimídia X Hipermídia
Theodor Holm Nelson
Inventou os termos hipertexto e
hipermídia em 1963
Multimídia X Hipermídia
Theodor Holm Nelson
Hipermídia = A utilização do
hipertexto em aplicações
capazes de integrar não sócapazes de integrar não só
texto mas também imagem e
som.
Hipermídia = Multimídia Interativa
Multimídia X Hipermídia
Sistema Multímidia
Sistema capaz de manipular ao menos um tipo de mídia discreta e
um tipo de mídia continua na forma digital de maneira sincronizada
Sistema HipermídiaSistema Hipermídia
Sistema Multimídia capaz de tratar eventos causados pela
interação com o usuário e reagir a esses eventos
Nested Context Language
(Linguagem de Contexto Aninhado)
A linguagem NCL Nested Context Language é uma
linguagem declarativa para autoria de documentoslinguagem declarativa para autoria de documentos
hipermídia baseados no modelo conceitual NCM
Nested Context Model - que foi desenvolvida
utilizando uma estrutura modular, seguindo os
princípios adotados pelo W3C.
Fonte: www.ncl.org.br
NCM – Nested Context Model
(Modelo de Contexto Aninhado)
• É um modelo conceitual centrado na representação e tratamento de
documentos hipermídia e que dá suporte ao NCL;
• Cujo modelo de interface separa os componentes de dados e de
exibição de objetos;exibição de objetos;
NCM – Nested Context Model
(Modelo de Contexto Aninhado)
Hierarquia de Classes NCM (Versão Anterior a 2.2)
NCM – Nested Context Model
(Modelo de Contexto Aninhado)
Hierarquia de Classes NCM (Versão 2.2)
NCM – Nested Context Model
(Modelo de Contexto Aninhado)
• É um modelo conceitual centrado na representação e
tratamento de documentos hipermídia;
• A partir da versão 2.2 foi imposto o conceito de evento;
– Com a definição de eventos possibilitou a realização de– Com a definição de eventos possibilitou a realização de
sincronização espacial e temporal entre nós.
NCM – Nested Context Model
(Modelo de Contexto Aninhado)
María José Peréz-Luque
“um evento é uma
ocorrência no tempo queocorrência no tempo que
pode ser instantânea ou
durar um período de
tempo”
NCM – Nested Context Model
(Modelo de Contexto Aninhado)
Para o NCM:
Um evento é a exibição.
Um evento NCM pode estar em um dos seguintes estados: dormindo
(sleeping), ocorrendo (occurring) ou suspendo (paused);
NCM – Nested Context Model
(Modelo de Contexto Aninhado)
• Com a introdução deste conceito permitiu:
– A criação do Descritor;
– Elos redefinidos permitindo relações de sincronização temporal
e espacial entre os nós;
NCM 3.0
Elo
NCM 3.0
Elo
• É uma entidade NCM que possui duas propriedades adicionais: um
conector e um conjunto de associações a esse conector;
• Criação do Conector na versão 3.0;• Criação do Conector na versão 3.0;
– Defini condições entre as relações hipermídia, ou entre os nós.
NCM 3.0
Conector
• Bind
– Define os participantes;
• Papel
– A sua definição é baseada no conceito de eventos;
– Define a função dos participantes na relação;
Vídeo Áudio
OnEnd
StartC A
C
NCM 3.0
Imagem
Elo
OnEnd
Start
C
A
C
A
Conector
Papel de Condição
Papel de Ação
NCL
O quê?
Onde?
Como?
Quando?
O quê? Nós
Esse conteúdo é
representado através dos
nós de mídia.nós de mídia.
Nós de mídia
Todo nó de mídia é
definido dentro de um
contexto.
O quê? Nós
contexto.
Representação de nós de mídia e de composição
Onde? Região
Uma região indica a
posição e as dimensões
de uma área onde a mídiade uma área onde a mídia
será apresentada
Representação de região utilizada pela mídia
Descritor
• É nessa entidade que são dadas as características
iniciais de apresentação.
• Define onde o objeto de mídia será apresentado.
– Essa entidade é a base para o suporte a múltiplos
dispositivos de exibição.dispositivos de exibição.
• Entidade que associa a mídia a uma região.
Descritor
Descritores fazem uma associação de uma mídia com várias
regiões
Estrutura inicial do NCL
1 - Cabeçalho básico do NCL ;
2 – As regiões da tela onde aparecerão os elementos visuais (regionBase);
3 – Como e onde os nós serão exibidos, através de descritores (descriptorBase);
Parâmetros de exibição de mídia
em uma determinada região
55
Introdução
• Especificam como os objetos de mídia
serão exibidos;
• São definidos no cabeçalho do documento
ncl;
• Todo nó de mídia que será apresentado
deve ter um descritor associado.<head>
[...]
<descriptorBase id=“dbMain”>
<descriptor id=“dUnicoDefault” region=“rgFull” />
</descriptorBase>
</head>
56
Importação de Bases de
Descritores
• Importar Base de Descritores de outro
documento NCL.
<descriptorBase>
<importBase<importBase
documentURI=“pasta/arquivo.ncl"
alias=“apelido#id_do_elemento_importado”
/>
[...]
</descriptorBase>
57
Atributos básicos de Descritor
• *id: identificador único, utilizado nas referencias do
descritor;
• region: identificador da região associada ao descritor;
• explicitDur: define a duração do objeto de mídia
associado ao descritor. Ex.: “95.9s”(segundos);associado ao descritor. Ex.: “95.9s”(segundos);
• freeze: identifica o que acontece ao final da exibição do
objeto de mídia. Ex.: “true”(congela o ultimo instante do
video ao finalizar);
”
<descriptor
id=“dExemplo”
reggion=“rgTvExemplo”
explicitDur=“25s”
freeze=“true”
/>
58
Parâmetros do Descritor
• Elementos opcionais;
• As propriedades e seus respectivos valores
dependem do tipo de mídia a ser apresentada
• Cada descritor pode conter diversos elementos.
Ex.:Ex.:
<descriptorBase>
<descriptor id=“dVideoPrincipal” region=“rgFull”>
<descriptorParam name=“nomeParam” value=“valorParam” />
<descriptorParam name=“soundLevel” value=“0.7” />
[....]
</descriptor>
</descriptorBase>
59
Parâmetros reservados para
áudio
• “soundLevel”, “balanceLevel”,
“trebleLevel”, “basslevel”: Valores entre 0 e 1
ou ‘0%’ e ‘100%’;
• No caso de “soundLevel”:• No caso de “soundLevel”:
– 0 ou 0% = MUTE;
– 0.5 ou 50% = volume pela metade;
– 1 ou 100% = volume no máximo.<descriptor id=“dAudioEnglish”>
<descriptorParam name=“balancelevel” value=“0.5” />
<descriptorParam name=“soundLevel” value=“0.7” />
</descriptor>
60
Parâmetros reservados para
objetos visuais( vídeos, imagens)
• “location”: posição do objeto de mídia. (left,top) Ex.:
<descriptorParam name=“location” value=“150,300” />;
• “size”: dimensões do objeto de mídia. width e height
separados por vírgula.
• “zIndex”: posição da região no eixo Z.• “zIndex”: posição da região no eixo Z.
• “background”: cor de fundo quando a mídia não couber
na região. (padrão: “transparent”)
• “fit”: valores possíveis: “fill”, “hidden”, “meet”,
“meetBest” ou “slice”. (padrão: “meet”)
61
Parâmetros reservados para
texto
• “fontColor”: a cor da fonte (“white”, “blue”, “yellow”,
etc). (padrão: “white”);
• “fontSize”: tamanho da fonte.
• “fontFamily”: lista com nome de fontes específicas• “fontFamily”: lista com nome de fontes específicas
ou genéricas.
• “fontVariant”: texto “normal” ou em “small-caps”.
(padrão: “normal”).
• “fontWeight”: “normal” ou “bold”.
62
Navegação por teclas entre os
objetos de mídia
• Deve-se, para tal evento, utilizar atributos no elemento
<descriptor />
• Cada elemento deve conter um índice de foco.
• Utiliza-se este índice para indicar o destino do foco
quando o usuário pressionar alguma setaquando o usuário pressionar alguma seta
• Atributos utilizados no elemento “<descriptor />”
“focusIndex”, “moveLeft”, “moveRight”, “moveUp”, “moveDown”,
“focusBorderColor”, “focusBorderTransparency”, “focusBorderWidth”,
“focusSrc”, “focusSelSrc”, “selBorderColor”
63
Exemplo de uso dos atributos de
navegação
Atributos de descritor
relacionados à navegação
em um menu vertical de
seis itens não-circular.
<descriptor<descriptor
id=“dBtnOpc2”
region=“rgbtn2”
focusIndex=“2”
moveDown=“3”
moveUp=“1”
/>
64
Atributos para estilização de seleção atual
“focusSrc”: permite a alteração do
objeto de mídia.
Quando o usuário pressiona “OK”,Quando o usuário pressiona “OK”,
também é possível alterar a cor da
moldura ou o próprio objeto de mídia.
Através dos atributos:
“selBorderColor” e “focusSelSrc”
65
Efeitos de transição
• São atributos no elemento “<descriptor>” que
fazem referência a elementos “<transition>” de
uma base de “<transitionBase>”;
• Os efeitos não são obrigatórios;
• Definidos dentro do cabeçalho do documento;• Definidos dentro do cabeçalho do documento;
<transitionBase>
<transition id=“tEfect1” type=“fade” subtype=“fadeFromColor”
fadeColor=“blue” />
</transitionBase>
<descriptorBase>
<descriptor id=“dExemplo1” region=“rgExemplo” transIn=“tEfect1” />
</descriptorBase>
66
Objetos de mídia e Contexto
Elementos e atributos dos objetos
de mídia e contexto
67
Introdução
• É representado pela tag “<media>”;
• Deve apresentar arquivo de mídia (“src”),
descritor(“descriptor”) e identificador único(“id”);
• Atributo “type” opcional;• Atributo “type” opcional;
<body>
...
<media id=“VideoPrincipal” src=“media/Principal.avi”
descriptor=“dTvExemplo” />
</body>
68
Atributos de Objeto de Mídia
• “id”: identificador único, utilizado nas referencias ao
objeto;
• “src”: caminho do objeto de mídia;
src=“http://lims.ifpi.edu.br/images/myImage.png”src=“http://lims.ifpi.edu.br/images/myImage.png”
• “type”: define o tipo de mídia(opcional);
type=“image/png”
• “descriptor”: identificador do descritor que controle
a exibição do objeto de mídia;
descriptor=“dLogotipoLIMS”
69
Atributo type – valores
permitidos
Valor do type Extensão de Arquivo do Atributo
“src”
text .htm, .html, .xhtml, .css, .xml, .txt
image .bmp, .png, .gif, .jpeg, .jpg, .jpeimage .bmp, .png, .gif, .jpeg, .jpg, .jpe
audio .ua, .wav, .mp1, .mp2, .mp3, .mp4,
.mpg4
video .mp2, .mpeg, .mpg, .mpe, .mp4,
.mpg4, .mng, .qt, .mov, .avi,
Application .ncl, .lua, .xlt, .xlet, .class
70
Contextos
• Agrupa objetos(de mídia, de contexto) e
elos;
• Um exemplo é o elemento “<body>”;
• Representado pelo elemento “<context>”;<body>
......
<context id=“menu”>
<!—portas-->
<!—mídias, contextos -->
<!– elos -->
</context>
</body>
71
Portas
• Ponto de interface de um contexto que
oferece acesso ao objeto do contexto.
72
Portas
• É necessário haver pelo menos uma porta
no documento NCL, indicando qual o
objeto( ou contexto) de mídia inicial.
<body>
<port id=“pInicio” component=“videoPrincipal” />
<port id=“pInteratividade” component=“imgInteratividade” />
...
</body>
73
Quando? – CONECTORES E
ELOSELOS
Definem o sincronismo e a
interatividade entre os objetos de
uma aplicação NCL.
74
Introdução
• Os conectores são definidos no cabeçalho do
documento dentro de uma base de conectores;
• Os elos são inseridos no corpo, representados
pela tag “<link>”;pela tag “<link>”;
• Um elo associa o objeto através de um
conector.
75
Conectores
• Mecanismos de causalidade;
• Para uma ação ser disparada uma
condição deve ser satisfeita;
76
Elementos de Conectores
“<connectorParam>”: define parâmetros, cujos valores são
atribuídos pelos elos;
“<simpleCondition> e <compoundCondition>”: define as
condições de ativações do elo;
“<simpleAction> e <compoundAction>”: define as ações“<simpleAction> e <compoundAction>”: define as ações
que são realizadas.
<casualConnector id=“onBeginStart”>
<simpleCondition role=“onBegin” />
<simpleAction role=“start” />
</casualConnector>
77
Conectores
• “Quando condição/evento, então ação”.
• Cabe ao elo ligar os objetos ao papel;
78
Papéis de Condição
Papel Descrição(quando o elo será ativado)
onBegin Quando o objeto for iniciado
onEnd Quando a apresentação for finalizada(natural ou
intervenção)
onAbort Quando a apresentação for abortada
onPause Quando a apresentação for pausadaonPause Quando a apresentação for pausada
onResume Quando a apresentação for retomada após uma pausa
onSelection Quando uma tecla for pressionada enquanto um obj.
estiver sendo apresentado
79
Papéis de Ação
Papel Descrição (ação a ser realizada quando o elo for ativado)
start Inicia a apresentação do objeto ligado a este papel
stop Termina a apresentação do objeto ligado a este papel
Abort Aborta a apresentação do objeto associado a este papel
Pause Pausa a apresentação do objeto associado a este papel
Resume Retoma a apresentação do objeto ligada a este papel (se estiver
pausada)
80
<casualConnector>
• Baseado em eventos;
• “eventos”: ocorrencia no tempo que pode
ser instanciada ou duração mensurável;
• Tipos de Eventos:
– Apresentação;
– Selecção;
– Atribuição;
– Composição;
81
Máquina de estados de eventos
82
Elos
• Seu comportamento é definido pelo
conector que utiliza;
<link xconnector=“onBeginStart”>
<bind role=“onBegin” component=“videoPrincipal” />
<bind role=“start” component=“imgInteratividade” />
</link>
83
Elementos de “<link>”
• “<bind>”: ligação entre objeto e papel;
• “<linkParam>”: define um parametro do
elo;
– Ex.: “<linkParam name=“vDelay” />”;– Ex.: “<linkParam name=“vDelay” />”;<link xconnector=“id_do_conector”>
<bind role=“id_do_papel_de_condição”
component=“id_de_um_obj” />
<bind role=“id_do_papel_de_acao”
component=“id_de_um_objeto” />
</link>
84
Projeto em NCL
(Gerenciador de vídeo)
Aplicação em NCL
• Ferramentas
• Aplicação
• Requisitos
– O que!– O que!
– Onde!
– Como!
– Quando!
Ferramentas
• Composer IDE
• Eclipse
– Plug-in ncl eclipse
• Ginga-NCL player• Ginga-NCL player
• Portal do software público
Aplicação
Requisitos
1. Definir as mídias (O que!)
2. Definir as regiões (Onde!)
3. Definir os descritores (Como!)
4. Definir o conectores e os elos (Quando!)4. Definir o conectores e os elos (Quando!)
O que!
O que!...
O que!....
O que!....
Onde!
Onde!...
Onde!...
Como!
Como!...
Como!
• Relacionamento
Quando!
Quando!
Quando!...
Quando!
Quando!
Quando!...
<connectorBase>
<causalConnector id="onBegin1StartN">
<simpleCondition role="onBegin"/>
<simpleAction role="start" max="unbounded" qualifier="par"/>
</causalConnector>
<causalConnector id="onSelectionStartN">
<simpleCondition role="onSelection"/>
<simpleAction role="start" max="unbounded" qualifier="par"/>
</causalConnector></causalConnector>
<causalConnector id="onKeySelectionStopN">
<connectorParam name="keyCode" />
<simpleCondition role="onSelection" key="$keyCode"/>
<simpleAction role="stop" max="unbounded" qualifier="par"/>
</causalConnector>
</connectorBase>
Quando!...
A linguagem Lua e suas
aplicaçõesaplicações
O Que é Lua
• Mais uma linguagem de script
– = dinâmica
• Uma linguagem de Descrição de Dados
– Não totalmente diferente de XML
• Única linguagem de programação desenvolvida fora• Única linguagem de programação desenvolvida fora
do primeiro mundo a ter aceitação mundial
• Centenas de milhares de usuários
• Usada por Intel, Conectiva, Microsoft, LucasArts,
Petrobras, etc.
Onde Lua é Desenvolvida
• Desenvolvida na PUC-Rio
– desde 1993
• "Comitê" de três pessoas
– Roberto Ierusalimschy, Luiz H. de Figueiredo,– Roberto Ierusalimschy, Luiz H. de Figueiredo,
Waldemar Celes
Porque Lua
• Portabilidade
• Simplicidade
• Pequeno tamanho
• Acoplabilidade• Acoplabilidade
• Eficiência
Portabilidade
• escrita em ANSI C, compila o mesmo código em
todas as plataformas
• Unix, Windows (incluindo CE), Playstation II,
OS/390, XBox, BeOS, DOS, Palm OS, EPOC,OS/390, XBox, BeOS, DOS, Palm OS, EPOC,
sistemas embutidos, etc.
• Núcleo é praticamente uma aplicação free-standing
Simplicidade
• Um único tipo de estrutura de dados
– Tabelas
• Um único tipo numérico
– tipicamente double– tipicamente double
• Mecanismos ao invés de políticas
– e.g., orientação a objetos
Pequeno Tamanho
• Menos de 200K
• bibliotecas independentes (e removíveis)
Acoplabilidade
• Bi-direcional!
• Acoplada em C/C++, Java, Fortran, C#, Perl, Ruby,
Ada, etc.
Eficiente
• Lua entre as mais rápidas no grupo de linguagens
interpretadas com tipagem dinâmica
Onde é usada
Lua no desenvolvimento de jogos
• Motor de jogos
– Simplifica o desenvolvimento
1. Motor de Inteligência artificial (IA)
2. Motor de física
3. Motor gráfico
4. Motor de som
5. Linguagem de script5. Linguagem de script
• Portabilidade
• Fornece funcionalidade
• Complexo e tem alto custo
• Reduz o custo do desenvolvimento
Mas por que utilizar a linguagem lua
em jogos?
• Compilação
– código fonte é interpretado pelo programa em tempo de
execução e não em tempo de compilação
– Não precisar re-compilar o código principal
– Maior flexibilidade no desenvolvimento da aplicação– Maior flexibilidade no desenvolvimento da aplicação
• Jogo do milhão, Soletrando
• Parametrização de seu conteúdo
• Apenas a parametrização do conteúdo não é a
melhor solução
Mas por que utilizar a linguagem lua
em jogos?
• Programação por não-programadores
• Desenvolvimento de front-ends
• Atualização dos scripts
• Funcionamento interno do jogo• Funcionamento interno do jogo
• Acesso aos códigos-fonte
RPGDU
RPGDU...
Grim Fandango – LucasArts
• Adventure
– Utiliza uma versão modificada de Lua 3.1 como
linguagem de script
Escape from Monkey Island – LucasArts
• Adventure
– Também utiliza uma versão modificada de
Lua 3.1 como linguagem de script
Psychonauts – Double Fine
• Action
– Toda lógica do jogo implementada em Lua
– Jogo controlado por entidades com scripts
Impossible Creatures – Relic
• Lua usada em
• Controle de IA
• Aparência de efeitos e de outros elementos gráficos
• Determinação das regras do jogo
• Edição dos atributos dos personagens
• Debug em tempo real
Lua no desenvolvimento para web
• Plataforma kepler - apresentação
– extremamente portável e leve
– é extensível
– Kepler é um software livre
– criado pela Fábrica Digital e pela PUC-RIO– criado pela Fábrica Digital e pela PUC-RIO
– Pré-requisitos
– Kepler 1.1
Visão
• O Kepler não está tentando ser o novo PHP,
derrubar o Python ou RoR
– Leve e 100% nacional
• Alguma vez você já tentou colocar PHP ou Ruby em• Alguma vez você já tentou colocar PHP ou Ruby em
um dispositivo com 1Mb de RAM?
• O Kepler é Modular
Usos
• Fábrica digital
– Publique!
– Gerenciador de conteúdo para web
– Mais utilizado do Brasil
• CISCO / PUC-RIO
Convergência digital
http://www.convergenciadigital.com.br/cgi/cgilua.exe/sys/start.ht
m?tpl=home
Módulos
• CGILua
• LuaFileSystem
• LuaSocket
• Orbit (demonstrar...)
• Xavante• Xavante
• LuaSql (demonstrar)
• LuaZip
• MD5
• ...
LuaRocks
• sistema de distribuição e gerenciamento para
módulos Lua
• permite que você instale módulos Lua
– Rocks– Rocks
• contém informação sobre dependência de versão
• é uma aplicação de “puro Lua”
• Ginga
– middleware padrão brasileiro para TV digital
• Wireshark
– analisador de protocolos
• Snort• Snort
– intrusion detection and prevention system
• nmap
– rastreador de redes para segurança
Lightroom
Introdução a linguagem Lua
Convenções Léxicas
• Palavras-chave
And break do else elseif end false
for function if in local nil not orfor function if in local nil not or
repeat return
then true until while
Convenções Léxicas…
• Diferencia minúsculas de maiúsculas
and ~= AND ~= And
• Como convenção• Como convenção
_VERSION
Itens léxicos
+ - * / % ^ # == ~= <=
>= < > = ( ) { } [ ] ;
: , . .. ...: , . .. ...
Comentários
• -- Comentário de uma linha
• -- [[ Esse é um comentário de• -- [[ Esse é um comentário de
múltiplas linhas]]
Variáveis
• São globais por padrão
mensagem
mensagem = “Hello, word“
print(mensagem)
• Variável local
local mensagem = “Hello, word“local mensagem = “Hello, word“
print(mensagem)
• Campos de uma table
t[i]
• Palavras-chave
Atribuição
x = 3
x, y = 3, 2
x, y = y, x
x, y, z = 3, 2 -- z recebe nil
x, y = 3, 4 ,5, 6, 7 -- 5, 6 e 7
descartados
Valores e Tipos
• Dinamicamente tipada
local var = “oi“ -- contém uma
stringstring
var = 3.14 -- Agora é um número
var = true -- e agora é um boolean
• Valores de primeira classe
Tipos
• Nil
• Boolean
• Number
• String
• Function• Function
• Table
• Userdata
• Thread
Nil e Boolean
• Representa a ausência de um valor útil
• Representa true e false
• Variáveis não inicializadas têm valor nil
• Qualquer valor diferente de nil e false è verdadeiro
– String vazia ("") e zero (0) são considerados– String vazia ("") e zero (0) são considerados
verdadeiros
Number
• Números
• Equivale a um double (por padrão)
• Sem problema para representar inteiros• Sem problema para representar inteiros
String
• Cadeias de caracteres literais
• Podem ser delimitadas através do uso de aspas
simples ou aspas duplas
– local mensagem = ‘oi’
– local mensagem = “oi”
• Podem conter as seguintes seqüências de escape no
estilo de C
• Podem conter as seguintes seqüências de escape no
estilo de C
– local mensagem = “oin123”
• Formato longo
– local mensagem = [[Cadeias literais longas]]
• Imutáveis
Coerção e concatenação
• Conversão automática
local str1 = "As armas "
local str2 = "e os barões assinalados"
local concatenada = str1..str2
print ("1.234" + 4.321) --> 5.555
print ("Valor: "..171) --> "Valor:171"
Function
• Representa as funções
• Valores de primeira classe
• Pode ter nenhum ou vários de parâmetros
• Pode retornar nenhum ou vários valores
foo = ‘Cadeia de Carac...’
function foo_1(n)function foo_1(n)
return 1
end
foo_2 = function(n)
return 1, 2, 3
end
Userdata
• Permite que dados C arbitrários possam
ser armazenados em variáveis Lua.
Thread
• Representa fluxos de execução
independentes
• é usado para implementar co-rotinas• é usado para implementar co-rotinas
Table
• Implementa arrays associativos
• Representar arrays comuns, tabelas de símbolos, conjuntos,
registros, grafos, árvores, etc.
• Existem várias maneiras convenientes de se criar tabelas em Lua
• Podem conter funções
local t = { }
local t={4, ‘lua’, false}
à t[1]=4, t[2]=‘lua’, t[3]=false
local t = { nome = "Fulano", idade = 33,
pais = { pai = "Ivo", mae = "Ana"}}
print (t["nome"]) --> "Fulano"
print (t.nome) --> "Fulano"
print (t["pais"]["pai"]) --> "Ivo"
print (t.pais.mae) --> "Ana“
Expressões
• aritméticas
u op: + - * / ^ %
u ex: 1+1 (v / 2)^2 -x
u número -> número
l de concatenação
u op: ..
u ex: “João” .. “ e “ .. “Maria”
u string -> string
Expressões
• lógicas
u op: and or not
u ex: 1 and 2 à 2
u 1 and false à false
u not val à false
1 or 2 à 1u 1 or 2 à 1
u relacionais
u op: < > <= >= == ~=
u ex: 1<=2 “a”~=”a” 1==”1” x>y
u valor -> boolean
Estruturas de Controle
local x = 1
• while exp do while x < 10 do
bloco print(x)
i = i + 1
end end
• repeat repeat
bloco print(x)
until exp until x < 10until exp until x < 10
• if exp then if x == 1 then
bloco print(‘x = 1’)
elseif exp then elseif x==2 then
bloco print(x==2)
else else
bloco print(‘x ~= 1e x~= 2’)
end end
O comando for e suas variações
• Numérica
for i = 1, 10, 1 do
if i % 2 == 0 then
print (tostring(i).."é par.")
elseelse
print (tostring(i).." é ímpar.")
end
end
O comando for e suas variações...
• Genérica
hero = { name = "Freddy Hardest",
speed = 3,
strength = 12,strength = 12,
intelligence = 7 }
for k, v in pairs (hero) do
print (k.."-->".. v)
end
Biblioteca Básica
• funções de uso geral
• assert, dofile, error, _G, ipairs, next, pairs,
pcall, print, tonumber, tostring, type,pcall, print, tonumber, tostring, type,
unpack, _VERSION
Biblioteca math
• funções trigonométricas
• exponenciação e logaritmo
• arredondamento
• max, min
• randomização• randomização
• math.sin, math.pi, math.log, math.pow,
math.sqrt, math.random
Biblioteca table
• tabelas como arrays
• inserção e remoção
• ordenação
• concatenação
• table.insert, table.remove, table.sort,
table.concat, table.maxn
Biblioteca string
• funções básicas
• pattern-matching
•string.sub, string.format, string.rep,•string.sub, string.format, string.rep,
string.find, string.lower, string.len
Outras bibliotecas
• Debug -> Depuração
• File -> Entrada e saída
• Os -> Funções de sistema e data e hora• Os -> Funções de sistema e data e hora
+
Declarativo
• Mais alto nível de abstração;
• Resultam em uma declaração
de um resultado desejado;
+
Não Declarativo (Imperativo)
• Podem seguir diferentes
modelos;
• Implementação algorítmica;de um resultado desejado;
• “o que fazer”;
Ex: NCL, HTML e SQL
• Implementação algorítmica;
• “como fazer”;
• Relação direta com a CPU;
• Programador Especialista;
Ex: LUA, Java, C++
+
“O que fazer” “Como fazer”
+
Ambientes de aplicações para receptores fixos e móveis
+
Todo middleware de ambiente declarativo ou procedural
deve dar suporte as seguintes requisitos:
• Suporte a sincronização;• Suporte a sincronização;
• Suporte a múltiplos dispositivos;
• Suporte a edição ao vivo;
Relação entre Objetos de Mídia
• Um objeto com código imperativo deve ser escrito em um arquivo
separado do documento NCL, que apenas o referencia.
• Relacionamentos são independentes do tipo de mídia.
– Através de Elos: <link>;
Exemplo:
<media id=“myvideo” src=“video.mpg”/><media id=“myvideo” src=“video.mpg”/>
<media id=“mynclua” src=“nclua.lua”/>
<link>
<bind role=“onBegin” component=“myvideo”/>
<bind role=“start” component=“mynclua”/>
</link>
• Módulo event
– Permite que objetos NCLua se comuniquem com o documento
NCL;
• Módulo canvas
– Oferece a funcionalidade para desenhar objetos gráficos;
• Módulo settings
– Oferece acesso às variaveis definidas no objeto settings;
• Módulo persistent
– Exporta uma tabela persistente entre execuções de objetos
imperativos;
• Módulo ncledit
– Capaz de editar documentos NCL
Paradigma Orientado a Eventos
• O modelo de execução de um NCLua é
orientada a eventos;
• O módulo event é a mais importante extensão;
• O script NCLua não é nada mais que um• O script NCLua não é nada mais que um
tratador de eventos;
– Apenas um evento é tratado por vez;
– Processamento deve ser rápido;
Paradigma Orientado a Eventos
Paradigma Orientado a Eventos
-- initialization
...
function hdlr (evt)
-- NCL events
if evt.action == 'start' then
...
endend
-- key events
if key.value == '1' then
...
end
end
event.register(hdrl)
Paradigma Orientado a Eventos
evt = {
class =‘key’
type = ‘PRESS’
key = ‘RED’
A função tratadora
pode receber um
evento indicando que a
tecla vermelha do
key = ‘RED’
}
Representação de evento em NCLua.
tecla vermelha do
controle remoto foi
pressionada pelo
telespectador
Paradigma Orientado a Eventos
event.post = {
class =‘ncl’
type = ‘presentation’
action = ‘stop’
A função tratadora
pode receber um
evento indicando que a
tecla vermelha do
action = ‘stop’
}
Representação de evento em NCLua.
tecla vermelha do
controle remoto foi
pressionada pelo
telespectador
Classes de Eventos
Comunicação NCL
•Class: 'ncl'
•Type: 'presentation', 'attribution'
•Action: 'start', 'stop', 'set', ...•Action: 'start', 'stop', 'set', ...
•Transition: 'pauses', 'set', ...
•Area: '', 'fim', 'fase1', ...
Classes de Eventos
• Teclas do controle
– Representa o pressionamento de teclas do controle remoto pelo
usuário;
class: 'key'
type: 'press' e 'release'
key: 'RED', 'A', '1', ...
{ class='key', type='press', key='RED' }
• Eventos internos
– Através dessa classe, aplicações podem estender sua
funcionalidade criando seus próprios eventos;
class: 'user'
any: any
{ class='user', data={k1=v1,k2=v2} }
Classes de Eventos
• Classe tcp: Permite acesso ao canal de interatividade por meio
do protocolo tcp.
• Classe sms: Usada para envio e recebimento de
mensagens SMS em dispositivos móveis.
• Classe edit: Permite que os comandos de edição ao vivo
sejam disparados a partir de scripts NCLua.sejam disparados a partir de scripts NCLua.
• Classe si: Provê acesso a um conjunto de informações
multiplexadas em um fluxo de transporte e transmitidas
periodicamente por difusão.
Exemplo 1
•Três nós NCLua são disparados;
•O primeiro não trata eventos;
•O segundo notifica seu fim natural
ao receber um evento (start);
•O terceiro cria um timer de 3
segundos para notificar seu fim
natural;
Visão temporal e espacial do Exemplo 1
natural;
•Botões identificam seus estados;
Exemplo 1
Visão estrutural do Exemplo 1
Exemplo 2
•Botão “Click it” aparece diversas
vezes durante o vídeo;
•Conta o número de vezes que o
usuário seleciona o botão;
•Em NCL puro: explosão de elos;
•Em Lua: uma variável e um
método;
Visão temporal e espacial do Exemplo 2
método;
•Uso de uma propriedade para
comunicação;
Exemplo 2
Visão estrutural do Exemplo 1
Módulo Canvas
Operações gráficas durante a
apresentação de uma aplicação
Construtores
• canvas:new (image_path : string)
– Construtor utilizado para gerar um novo
canvas cujo conteúdo é a imagem passada
através do argumento image_path.através do argumento image_path.
• canvas:new (width, height : number)
– Construtor utilizado para gerar um novo
canvas com todos os pixels de cor
transparente.
Funções
• canvas:attrSize() -> width, height : number
• canvas:attrColor() -> r, g, b, a : number
• canvas:attrFont() -> face : string, size :
number, style : stringnumber, style : string
• canvas:attrClip() -> x, y, width, height :
number
– Funções utilizadas para obter os valores,
respectivamente, das dimensões do canvas,
da cor atual, da fonte e da área de corte.
Funções
• canvas:attrSize(width, height : number)
• canvas:attrColor(r, g, b, a : number)
• canvas:attrFont(face : string, size :
number, style : string)number, style : string)
• canvas:attrClip(x, y, width, height :
number)
– Funções utilizadas para modificar os valores,
respectivamente, das dimensões do canvas,
da cor atual, da fonte e da área de corte.
Funções
• canvas:drawLine (x1, y1, x2, y2 : number)
• canvas:drawRect (mode : string, x, y, width,
height : number)
• canvas:drawPolygon (mode : string)
• canvas:drawEllipse (mode : string, xc, yc,• canvas:drawEllipse (mode : string, xc, yc,
width, height, ang_start, ang_end : number)
• canvas:drawText (text : string, x, y : number)
– Funções utilizadas para desenhar,
respectivamente, as primitivas linha, retângulo,
polígono, elipse (ou circunferência) e texto.
Funções
• canvas:flush()
– Utilizada para enviar o resultado de uma série
de operações de desenho e de composição
para o canvas, tornando estas visíveis.
• canvas:compose (x, y : number, src :• canvas:compose (x, y : number, src :
canvas, [src_x, src_y, src_w, src_h :
number])
– Utilizada para copiar o conteúdo de um dado
canvas em outro, permitindo operações de
composição.
REFERÊNCIAS BIBLIOGRÁFICAS NCL
[1] NETO, Carlos Salles de Soares; SOARES, Luiz Fernando Gomes; RODRIGUES;
Rogério Ferreira; BARBOSA, Simone Diniz Junqueira. Construindo Programas
Audiovisuais Interativos Utilizando a NCL 3.0 e a Ferramenta Composer - 2a.
edição (NCL 3.0), 2007.
[2] Modelo de Contextos Aninhados (Versão 2.2), Laboratório TeleMídia, PUC-RIO,
2003.
[3] DE MELO, Julio César Paulino; ARAÚJO, Rodrigo Moreira. Os Módulos NCL e[3] DE MELO, Julio César Paulino; ARAÚJO, Rodrigo Moreira. Os Módulos NCL e
NCLUA do Middleware Ginga para aplicações em TV Digital Interativa. UFRN,
2008.
[4] SOARES, Luiz Fernando Gomes; RODRIGUES; Rogério Ferreira. Nested Context
Model 3.0 Part 1 – NCM Core. PUC-RIO.
[5] BARBOSA, Simone Diniz Junqueira; SOARES, Luiz Fernando Gomes. TV Digital
Interativa no Brasil se faz com Ginga Fundamentos, Padrões, Autoria
Declarativa e Usabilidade. pp 105-147, PUC-RIO, 2008.
REFERÊNCIAS BIBLIOGRÁFICAS NCL
[6] FILHO, Mauro Fernando de Holanda Beltrão. GINGAWAY – Uma ferramenta para
criação de aplicações GINGA-NCL interativas para TV Digital. UFPE, 2008.
[7] SANT’ANNA, Francisco; CERQUEIRA, Renato; SOARES, Luiz Fernando Gomes.
NCLUA – Objetos Imperativos LUA na linguagem declarativa NCL. PUC-RIO.
[8] SANT’ANNA, Francisco; NETO, Carlos de Salles Soares; BARBOSA, Simone Diniz
Junqueira; SOARES; Luiz Fernando Gomes. Aplicações Declarativas NCL com
Objetos NCLua Imperativos Embutidos. PUC-RIO, 2009.Objetos NCLua Imperativos Embutidos. PUC-RIO, 2009.
[9] SANT’ANNA, Francisco; CERQUEIRA, Renato; SOARES, Luiz Fernando Gomes.
NCLUA – Objetos Imperativos LUA na linguagem declarativa NCL. PUC-RIO.
[10] SOARES, Luiz Fernando Gomes; BARBOSA, Simone Diniz Junqueira.
Programando em NCL 3.0 Desenvolvimento de Aplicações para o Middleware
Ginga. 2009.

Mais conteúdo relacionado

Mais procurados

GINGA: Interatividade na TV Digital com Java - FLISol 2015 - IFSP - Votuporan...
GINGA: Interatividade na TV Digital com Java - FLISol 2015 - IFSP - Votuporan...GINGA: Interatividade na TV Digital com Java - FLISol 2015 - IFSP - Votuporan...
GINGA: Interatividade na TV Digital com Java - FLISol 2015 - IFSP - Votuporan...mercuriocfg
 
Java na TV Digital - Programando interatividade com JavaDTV
Java na TV Digital - Programando interatividade com JavaDTVJava na TV Digital - Programando interatividade com JavaDTV
Java na TV Digital - Programando interatividade com JavaDTVmercuriocfg
 
TV Digital interativa - Projeto TeouVi
TV Digital interativa - Projeto TeouViTV Digital interativa - Projeto TeouVi
TV Digital interativa - Projeto TeouViLucas Augusto Carvalho
 
Dataprev prova interatividade na TV Digital
Dataprev prova interatividade na TV DigitalDataprev prova interatividade na TV Digital
Dataprev prova interatividade na TV DigitalCampus Party Brasil
 
TV Digital Javaneiros 2010
TV Digital Javaneiros 2010TV Digital Javaneiros 2010
TV Digital Javaneiros 2010JUGMS
 
Produção audiovisual para mídias digitais
Produção audiovisual para mídias digitaisProdução audiovisual para mídias digitais
Produção audiovisual para mídias digitaisCristina Felix
 
TCEd sessao presencial 09-10
TCEd sessao presencial 09-10TCEd sessao presencial 09-10
TCEd sessao presencial 09-10Pedro Almeida
 
Marcelo Bechara Explica o DRM
Marcelo Bechara Explica o DRMMarcelo Bechara Explica o DRM
Marcelo Bechara Explica o DRMMarcelo Bechara
 
Palestra TV Digital - Interatividade Mobilidade
Palestra TV Digital - Interatividade MobilidadePalestra TV Digital - Interatividade Mobilidade
Palestra TV Digital - Interatividade MobilidadeMarco Munhoz
 
Tv interativa se faz com Ginga
Tv interativa se faz com GingaTv interativa se faz com Ginga
Tv interativa se faz com Gingalabmidiaufmg
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalLeonardo Melo Santos
 
Ginga - Solisc 2010
Ginga - Solisc 2010Ginga - Solisc 2010
Ginga - Solisc 2010Bruno Ghisi
 
2.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
2.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA2.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
2.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUACândido Sales Gomes
 
Introdução a interatividade na TV Digital - ICMC USP São Carlos -SP
Introdução a interatividade na TV Digital - ICMC USP São Carlos -SPIntrodução a interatividade na TV Digital - ICMC USP São Carlos -SP
Introdução a interatividade na TV Digital - ICMC USP São Carlos -SPmercuriocfg
 

Mais procurados (18)

GINGA: Interatividade na TV Digital com Java - FLISol 2015 - IFSP - Votuporan...
GINGA: Interatividade na TV Digital com Java - FLISol 2015 - IFSP - Votuporan...GINGA: Interatividade na TV Digital com Java - FLISol 2015 - IFSP - Votuporan...
GINGA: Interatividade na TV Digital com Java - FLISol 2015 - IFSP - Votuporan...
 
Java na TV Digital - Programando interatividade com JavaDTV
Java na TV Digital - Programando interatividade com JavaDTVJava na TV Digital - Programando interatividade com JavaDTV
Java na TV Digital - Programando interatividade com JavaDTV
 
TV Digital interativa - Projeto TeouVi
TV Digital interativa - Projeto TeouViTV Digital interativa - Projeto TeouVi
TV Digital interativa - Projeto TeouVi
 
Dataprev prova interatividade na TV Digital
Dataprev prova interatividade na TV DigitalDataprev prova interatividade na TV Digital
Dataprev prova interatividade na TV Digital
 
TV Digital Javaneiros 2010
TV Digital Javaneiros 2010TV Digital Javaneiros 2010
TV Digital Javaneiros 2010
 
TV Digital - Latinoware
TV Digital - LatinowareTV Digital - Latinoware
TV Digital - Latinoware
 
Produção audiovisual para mídias digitais
Produção audiovisual para mídias digitaisProdução audiovisual para mídias digitais
Produção audiovisual para mídias digitais
 
TCEd sessao presencial 09-10
TCEd sessao presencial 09-10TCEd sessao presencial 09-10
TCEd sessao presencial 09-10
 
Marcelo Bechara Explica o DRM
Marcelo Bechara Explica o DRMMarcelo Bechara Explica o DRM
Marcelo Bechara Explica o DRM
 
Palestra TV Digital - Interatividade Mobilidade
Palestra TV Digital - Interatividade MobilidadePalestra TV Digital - Interatividade Mobilidade
Palestra TV Digital - Interatividade Mobilidade
 
Audiovisual Digital Interativo De Alta Definic
Audiovisual Digital Interativo De Alta DefinicAudiovisual Digital Interativo De Alta Definic
Audiovisual Digital Interativo De Alta Definic
 
Tv interativa se faz com Ginga
Tv interativa se faz com GingaTv interativa se faz com Ginga
Tv interativa se faz com Ginga
 
Desenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV DigitalDesenvolvimento de aplicações Java™ para TV Digital
Desenvolvimento de aplicações Java™ para TV Digital
 
Apresentação CAVNM
Apresentação CAVNMApresentação CAVNM
Apresentação CAVNM
 
Ginga - Solisc 2010
Ginga - Solisc 2010Ginga - Solisc 2010
Ginga - Solisc 2010
 
2.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
2.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA2.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
2.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
 
Introdução a interatividade na TV Digital - ICMC USP São Carlos -SP
Introdução a interatividade na TV Digital - ICMC USP São Carlos -SPIntrodução a interatividade na TV Digital - ICMC USP São Carlos -SP
Introdução a interatividade na TV Digital - ICMC USP São Carlos -SP
 
TV DIGITAL MÓVEL
TV DIGITAL MÓVELTV DIGITAL MÓVEL
TV DIGITAL MÓVEL
 

Semelhante a Desenvolvimento de Aplicações Interativas para TV Digital com NCLua

Tv interativa se faz com Ginga
Tv interativa se faz com GingaTv interativa se faz com Ginga
Tv interativa se faz com Gingalabmidiaufmg
 
Apresentação oswaldo
Apresentação oswaldoApresentação oswaldo
Apresentação oswaldolabmidiaufmg
 
Tv interativa se faz com Ginga
Tv interativa se faz com GingaTv interativa se faz com Ginga
Tv interativa se faz com Gingalabmidiaufmg
 
Palestra TV Digital ou TVs Digitais
Palestra TV Digital ou TVs DigitaisPalestra TV Digital ou TVs Digitais
Palestra TV Digital ou TVs DigitaisMarcelo CORREIA
 
Video conferecia,
Video conferecia, Video conferecia,
Video conferecia, silvioCossa
 
Novos Modelos de Difusão de Conteúdos das Operadoras de TV Convencionais
Novos Modelos de Difusão de Conteúdos das Operadoras de TV ConvencionaisNovos Modelos de Difusão de Conteúdos das Operadoras de TV Convencionais
Novos Modelos de Difusão de Conteúdos das Operadoras de TV Convencionaisguest9342984
 
O Que é Tv Digital?
O Que é Tv Digital?O Que é Tv Digital?
O Que é Tv Digital?Erika Zuza
 
El Futuro de la televisión - Guido Lemos
El Futuro de la televisión - Guido LemosEl Futuro de la televisión - Guido Lemos
El Futuro de la televisión - Guido LemosRed Auti
 
ApresentaçAo Sant Final.Pptx 1
ApresentaçAo Sant Final.Pptx  1ApresentaçAo Sant Final.Pptx  1
ApresentaçAo Sant Final.Pptx 1guest9342984
 
Resumo Interop
Resumo InteropResumo Interop
Resumo Interopleonardotn
 
Internet Introdução e seus serviços online
Internet Introdução e seus serviços onlineInternet Introdução e seus serviços online
Internet Introdução e seus serviços onlinessuser44eeff
 
Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédiaUnidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédialamasduarte13
 
Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédiaUnidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédiainesrita1996
 
Conceitos básicos de multimédia
Conceitos básicos de multimédiaConceitos básicos de multimédia
Conceitos básicos de multimédiajoanamaria2014
 
Unidade 1 conceitos básicos de multimédia
Unidade 1   conceitos básicos de multimédiaUnidade 1   conceitos básicos de multimédia
Unidade 1 conceitos básicos de multimédiaSomosOsFixes
 
Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédia Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédia Mafalda Galvão
 
Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédiaUnidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédiaCristina Lopes
 

Semelhante a Desenvolvimento de Aplicações Interativas para TV Digital com NCLua (20)

Tv interativa se faz com Ginga
Tv interativa se faz com GingaTv interativa se faz com Ginga
Tv interativa se faz com Ginga
 
Apresentação oswaldo
Apresentação oswaldoApresentação oswaldo
Apresentação oswaldo
 
Tv interativa se faz com Ginga
Tv interativa se faz com GingaTv interativa se faz com Ginga
Tv interativa se faz com Ginga
 
Palestra TV Digital ou TVs Digitais
Palestra TV Digital ou TVs DigitaisPalestra TV Digital ou TVs Digitais
Palestra TV Digital ou TVs Digitais
 
Video conferecia,
Video conferecia, Video conferecia,
Video conferecia,
 
Artigo tv digital
Artigo tv digitalArtigo tv digital
Artigo tv digital
 
Mm resumo
Mm resumoMm resumo
Mm resumo
 
Novos Modelos de Difusão de Conteúdos das Operadoras de TV Convencionais
Novos Modelos de Difusão de Conteúdos das Operadoras de TV ConvencionaisNovos Modelos de Difusão de Conteúdos das Operadoras de TV Convencionais
Novos Modelos de Difusão de Conteúdos das Operadoras de TV Convencionais
 
O Que é Tv Digital?
O Que é Tv Digital?O Que é Tv Digital?
O Que é Tv Digital?
 
El Futuro de la televisión - Guido Lemos
El Futuro de la televisión - Guido LemosEl Futuro de la televisión - Guido Lemos
El Futuro de la televisión - Guido Lemos
 
ApresentaçAo Sant Final.Pptx 1
ApresentaçAo Sant Final.Pptx  1ApresentaçAo Sant Final.Pptx  1
ApresentaçAo Sant Final.Pptx 1
 
Resumo Interop
Resumo InteropResumo Interop
Resumo Interop
 
Ginga - i-JAE
Ginga - i-JAEGinga - i-JAE
Ginga - i-JAE
 
Internet Introdução e seus serviços online
Internet Introdução e seus serviços onlineInternet Introdução e seus serviços online
Internet Introdução e seus serviços online
 
Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédiaUnidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédia
 
Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédiaUnidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédia
 
Conceitos básicos de multimédia
Conceitos básicos de multimédiaConceitos básicos de multimédia
Conceitos básicos de multimédia
 
Unidade 1 conceitos básicos de multimédia
Unidade 1   conceitos básicos de multimédiaUnidade 1   conceitos básicos de multimédia
Unidade 1 conceitos básicos de multimédia
 
Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédia Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédia
 
Unidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédiaUnidade 1 – conceitos básicos de multimédia
Unidade 1 – conceitos básicos de multimédia
 

Mais de Carlos Carvalho

E-poti: Análise e Monitoramento da Qualidade da Energia Elétrica
E-poti: Análise e Monitoramento da Qualidade da Energia ElétricaE-poti: Análise e Monitoramento da Qualidade da Energia Elétrica
E-poti: Análise e Monitoramento da Qualidade da Energia ElétricaCarlos Carvalho
 
E-poti: Palestra do Prof. Dr. Andre Aquino no E-poti
E-poti: Palestra do Prof. Dr. Andre Aquino no E-potiE-poti: Palestra do Prof. Dr. Andre Aquino no E-poti
E-poti: Palestra do Prof. Dr. Andre Aquino no E-potiCarlos Carvalho
 
E-poti: Cidades inteligentes: Um novo paradigma da sociedade do conhecimento
E-poti: Cidades inteligentes: Um novo paradigma da sociedade do conhecimentoE-poti: Cidades inteligentes: Um novo paradigma da sociedade do conhecimento
E-poti: Cidades inteligentes: Um novo paradigma da sociedade do conhecimentoCarlos Carvalho
 
E-poti: Desvendando o lado jurídico das Startup’s
E-poti: Desvendando o lado jurídico das Startup’sE-poti: Desvendando o lado jurídico das Startup’s
E-poti: Desvendando o lado jurídico das Startup’sCarlos Carvalho
 
E-poti: Impacto da Eletrônica de Potência nas Redes Inteligentes
E-poti: Impacto da Eletrônica de Potência nas Redes InteligentesE-poti: Impacto da Eletrônica de Potência nas Redes Inteligentes
E-poti: Impacto da Eletrônica de Potência nas Redes InteligentesCarlos Carvalho
 
E-poti: INCENTIVOS FISCAIS À INOVAÇÃO TECNOLÓGICA: LEI DO BEM
E-poti: INCENTIVOS FISCAIS  À INOVAÇÃO TECNOLÓGICA: LEI DO BEM E-poti: INCENTIVOS FISCAIS  À INOVAÇÃO TECNOLÓGICA: LEI DO BEM
E-poti: INCENTIVOS FISCAIS À INOVAÇÃO TECNOLÓGICA: LEI DO BEM Carlos Carvalho
 
E-poti: Potencializando a sua startup através do Marketing Digital
E-poti: Potencializando a sua startup através do Marketing DigitalE-poti: Potencializando a sua startup através do Marketing Digital
E-poti: Potencializando a sua startup através do Marketing DigitalCarlos Carvalho
 
E-poti2014: Eletrônica de Potência, Infraestrutura e Tecnologia em Sistemas d...
E-poti2014: Eletrônica de Potência, Infraestrutura e Tecnologia em Sistemas d...E-poti2014: Eletrônica de Potência, Infraestrutura e Tecnologia em Sistemas d...
E-poti2014: Eletrônica de Potência, Infraestrutura e Tecnologia em Sistemas d...Carlos Carvalho
 
Um processo de inovação contínua de software baseado em prototipagem
Um processo de inovação contínua de software baseado em prototipagemUm processo de inovação contínua de software baseado em prototipagem
Um processo de inovação contínua de software baseado em prototipagemCarlos Carvalho
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IICarlos Carvalho
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part I
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part I
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part ICarlos Carvalho
 
InfoPI 2013 - Minicurso - Introdução ao CUDA - Primeira Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Primeira ParteInfoPI 2013 - Minicurso - Introdução ao CUDA - Primeira Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Primeira ParteCarlos Carvalho
 
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda ParteInfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda ParteCarlos Carvalho
 
InfoPI 2013 - Palestra - ESTADO DO PIAUÍ: Software e Serviços de TI
InfoPI 2013 - Palestra - ESTADO DO PIAUÍ: Software e Serviços de TIInfoPI 2013 - Palestra - ESTADO DO PIAUÍ: Software e Serviços de TI
InfoPI 2013 - Palestra - ESTADO DO PIAUÍ: Software e Serviços de TICarlos Carvalho
 
InfoPI 2013 - Palestra - Incubadoras e Aceleradora
InfoPI 2013 - Palestra - Incubadoras e AceleradoraInfoPI 2013 - Palestra - Incubadoras e Aceleradora
InfoPI 2013 - Palestra - Incubadoras e AceleradoraCarlos Carvalho
 
InfoPI2013 - Palestra - Transformação produtiva e economia digital na América...
InfoPI2013 - Palestra - Transformação produtiva e economia digital na América...InfoPI2013 - Palestra - Transformação produtiva e economia digital na América...
InfoPI2013 - Palestra - Transformação produtiva e economia digital na América...Carlos Carvalho
 
InfoPI2013 - Palestra - Tecnologias da Informação e Comunicação, Empresas e P...
InfoPI2013 - Palestra - Tecnologias da Informação e Comunicação, Empresas e P...InfoPI2013 - Palestra - Tecnologias da Informação e Comunicação, Empresas e P...
InfoPI2013 - Palestra - Tecnologias da Informação e Comunicação, Empresas e P...Carlos Carvalho
 
InfoPI 2013 - Minicurso - A Bioinformática na Cura de Doenças
InfoPI 2013 - Minicurso - A Bioinformática na Cura de DoençasInfoPI 2013 - Minicurso - A Bioinformática na Cura de Doenças
InfoPI 2013 - Minicurso - A Bioinformática na Cura de DoençasCarlos Carvalho
 

Mais de Carlos Carvalho (18)

E-poti: Análise e Monitoramento da Qualidade da Energia Elétrica
E-poti: Análise e Monitoramento da Qualidade da Energia ElétricaE-poti: Análise e Monitoramento da Qualidade da Energia Elétrica
E-poti: Análise e Monitoramento da Qualidade da Energia Elétrica
 
E-poti: Palestra do Prof. Dr. Andre Aquino no E-poti
E-poti: Palestra do Prof. Dr. Andre Aquino no E-potiE-poti: Palestra do Prof. Dr. Andre Aquino no E-poti
E-poti: Palestra do Prof. Dr. Andre Aquino no E-poti
 
E-poti: Cidades inteligentes: Um novo paradigma da sociedade do conhecimento
E-poti: Cidades inteligentes: Um novo paradigma da sociedade do conhecimentoE-poti: Cidades inteligentes: Um novo paradigma da sociedade do conhecimento
E-poti: Cidades inteligentes: Um novo paradigma da sociedade do conhecimento
 
E-poti: Desvendando o lado jurídico das Startup’s
E-poti: Desvendando o lado jurídico das Startup’sE-poti: Desvendando o lado jurídico das Startup’s
E-poti: Desvendando o lado jurídico das Startup’s
 
E-poti: Impacto da Eletrônica de Potência nas Redes Inteligentes
E-poti: Impacto da Eletrônica de Potência nas Redes InteligentesE-poti: Impacto da Eletrônica de Potência nas Redes Inteligentes
E-poti: Impacto da Eletrônica de Potência nas Redes Inteligentes
 
E-poti: INCENTIVOS FISCAIS À INOVAÇÃO TECNOLÓGICA: LEI DO BEM
E-poti: INCENTIVOS FISCAIS  À INOVAÇÃO TECNOLÓGICA: LEI DO BEM E-poti: INCENTIVOS FISCAIS  À INOVAÇÃO TECNOLÓGICA: LEI DO BEM
E-poti: INCENTIVOS FISCAIS À INOVAÇÃO TECNOLÓGICA: LEI DO BEM
 
E-poti: Potencializando a sua startup através do Marketing Digital
E-poti: Potencializando a sua startup através do Marketing DigitalE-poti: Potencializando a sua startup através do Marketing Digital
E-poti: Potencializando a sua startup através do Marketing Digital
 
E-poti2014: Eletrônica de Potência, Infraestrutura e Tecnologia em Sistemas d...
E-poti2014: Eletrônica de Potência, Infraestrutura e Tecnologia em Sistemas d...E-poti2014: Eletrônica de Potência, Infraestrutura e Tecnologia em Sistemas d...
E-poti2014: Eletrônica de Potência, Infraestrutura e Tecnologia em Sistemas d...
 
Um processo de inovação contínua de software baseado em prototipagem
Um processo de inovação contínua de software baseado em prototipagemUm processo de inovação contínua de software baseado em prototipagem
Um processo de inovação contínua de software baseado em prototipagem
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IIOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part II
 
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part I
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part IOficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part I
Oficina Arduino - Jornada de Tecnologia 2014 (E-poti) - Part I
 
InfoPI 2013 - Minicurso - Introdução ao CUDA - Primeira Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Primeira ParteInfoPI 2013 - Minicurso - Introdução ao CUDA - Primeira Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Primeira Parte
 
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda ParteInfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
InfoPI 2013 - Minicurso - Introdução ao CUDA - Segunda Parte
 
InfoPI 2013 - Palestra - ESTADO DO PIAUÍ: Software e Serviços de TI
InfoPI 2013 - Palestra - ESTADO DO PIAUÍ: Software e Serviços de TIInfoPI 2013 - Palestra - ESTADO DO PIAUÍ: Software e Serviços de TI
InfoPI 2013 - Palestra - ESTADO DO PIAUÍ: Software e Serviços de TI
 
InfoPI 2013 - Palestra - Incubadoras e Aceleradora
InfoPI 2013 - Palestra - Incubadoras e AceleradoraInfoPI 2013 - Palestra - Incubadoras e Aceleradora
InfoPI 2013 - Palestra - Incubadoras e Aceleradora
 
InfoPI2013 - Palestra - Transformação produtiva e economia digital na América...
InfoPI2013 - Palestra - Transformação produtiva e economia digital na América...InfoPI2013 - Palestra - Transformação produtiva e economia digital na América...
InfoPI2013 - Palestra - Transformação produtiva e economia digital na América...
 
InfoPI2013 - Palestra - Tecnologias da Informação e Comunicação, Empresas e P...
InfoPI2013 - Palestra - Tecnologias da Informação e Comunicação, Empresas e P...InfoPI2013 - Palestra - Tecnologias da Informação e Comunicação, Empresas e P...
InfoPI2013 - Palestra - Tecnologias da Informação e Comunicação, Empresas e P...
 
InfoPI 2013 - Minicurso - A Bioinformática na Cura de Doenças
InfoPI 2013 - Minicurso - A Bioinformática na Cura de DoençasInfoPI 2013 - Minicurso - A Bioinformática na Cura de Doenças
InfoPI 2013 - Minicurso - A Bioinformática na Cura de Doenças
 

Desenvolvimento de Aplicações Interativas para TV Digital com NCLua

  • 2. Roteiro 1. O que é a TV Digital Interativa (TVDI) ? 2. Modelo de TVDI; 3. Tipos de Definição na TVD; 4. Aplicações na TVDI; 5. Middleware;5. Middleware; 6. Padrões utilizados; 7. Set-Top Box (STB); 8. JavaTV; 9. NCL; 10. Links sobre TVDI.
  • 3. 1. O que é a TVDI ? • O sinal da TV é transmitido em um formato digital, que permite multiplexar informações de áudio,vídeo e dados num mesmo canal de transmissão;mesmo canal de transmissão; • Uso de um canal de retorno para a comunicação com o emissor do sinal, o que caracteriza a interatividade.
  • 4. 1. O que é a TVDI ? • Como funciona ? – A TV Digital funciona convertendo em fluxos de bits, imagens e sons (e dados), que por sua vez são transformados em sinas elétricos, que são transportados por ondaselétricos, que são transportados por ondas magnéticas. – Então os sinais elétricos chegam ao receptor, e são novamente transformados em fluxos de bits e convertidos em imagens e sons (e dados).
  • 5. 1. O que é a TVDI ? • A verdadeira TV Digital, é completamente digital e envolve: – câmeras digitais funcionando com uma resolução muito maior do que as câmerasresolução muito maior do que as câmeras analógicas; – transmissão digital; – exibição digital com uma resolução muito maior.
  • 7. 3. Tipos de Definição da TVD • Standard Definition TV 640 pontos por 480 linhas – 4:3 • High Definition TV 1280 pontos por 720 linhas – 16:91280 pontos por 720 linhas – 16:9 • Full High Definition TV 1920 pontos por 1080 linhas – 16:9
  • 8. 4. Aplicações na TVDI Segundo o Emarketer, empresa americana de pesquisa em novas tecnologias, o termo TVDI abrange uma série de aplicações, serviços e tecnologias, muitasaplicações, serviços e tecnologias, muitas ainda nem inventadas. Mas é possível classificar toda variedade de informações abrangidas pelo termo em 7 grandes grupos:
  • 9. 4. Aplicações na TVDI 1. Enhanced TV: tipo de conteúdo televisivo que abrange texto, vídeo e elementos gráficos, como fotos e animações;animações; 2. Internet on TV: permite o acesso à internet usando o televisor. Todas as funções da internet que conhecemos hoje estão disponíveis;
  • 10. 4. Aplicações na TVDI 3. Individualized TV: permite a adaptação total da TV ao gosto do telespectador; 4. Video-on-demand: capacita os telespectadores a assistir o programa natelespectadores a assistir o programa na hora em que quiserem, sem a restrição ao horário em que é transmitido pela emissora;
  • 11. 4. Aplicações na TVDI 5. Personal Video Recorder (PVR): também conhecido como Personal TV ou Digital Video Recorder (DVR), permite a gravação digital de programaspermite a gravação digital de programas apenas especificando o título, o horário, o assunto, o ator, ou algum outro dado pré-cadastrado sobre o filme;
  • 12. 4. Aplicações na TVDI 6. Walled Garden: um portal contendo um guia das aplicações interativas. Pode ser comparado à revista com a grade de programação das TVs a cabo;programação das TVs a cabo; 7. Game Console: permite o uso da TV para jogos, seja contra a própria TV, computador, ou em rede, contra outros jogadores.
  • 13. 5. Middleware • Esconde as peculiaridades e complexidades do hardware, sistema operacional, drivers de dispositivos, software e hardware responsáveis pela decodificação do sinal.pela decodificação do sinal. • O middleware é a camada de comunicação entre a camada de aplicação e os serviços oferecidos pelas camadas inferiores.
  • 14. 6. Padrões utilizados Europeu (DVB) MHP MPEG-2 BC MPEG-2 SDTV MPEG-2 COFDM Americano (ATSC) DASE Dolby AC3 MPEG-2 HDTV MPEG-2 8-VSB. Japonês (ISDB) ARIB MPEG-2 AAC MPEG-2 HDTV MPEG-2 COFDM Brasil (ISDB) Ginga MPEG-4 MPEG-4 MPEG-2 COFDM Middleware Comp.Áudio Comp.Vídeo Transporte Transmissão
  • 15. 7. Set-Top Box (STB) • “Dispositivo de Entretenimento Interativo residencial que disponibiliza acesso à internet, streaming de vídeo e informações via tradicional sistema de televisão”, National Semiconductor - 2000. – Conversão do sinal digital para formato analógico; – Seleção de programação, inibição de comerciais, gravação de filmes etc. – Download e Upload de dados; – Jogos; – Ensino a distância; – Etc.
  • 16. 8. JavaDTV • É uma plataforma para desenvolvimento e distribuição de serviços para TVD; • O middleware dos 3 (e o brasileiro) principais sistemas de TVD adotam Java;principais sistemas de TVD adotam Java; • Paradigma PROCEDURAL; • http://java.sun.com/
  • 17. 9. NCL • Nested Context Language (PUC-Rio), baseada no NCM (Nested Context Model); • Paradigma DECLARATIVO; • http://www.ncl.org.br/• http://www.ncl.org.br/ • O middleware brasileiro GINGA está sendo construído para executar aplicações desenvolvidas em Java e NCL.
  • 18. 10. Links sobre TVDI • http://uitv.info/ • http://www.labitv.futuro.usp.br/ • http://www.interactivetvweb.org/ • http://www.itvt.com/ • http://www.pjb.co.uk/ • http://www.lsda.org.uk/• http://www.lsda.org.uk/ • http://www.digitaltelevision.gov.uk/ • http://www.broadbandbananas.com/ • http://sbtvd.cpqd.com.br/ • http://www.forumsbtvd.org.br/ • http://www.ncl.org.br • http://www.ginga.org.br • http://www.tiresias.org/guidelines/television/index.htm
  • 19. Nested Context Language (Linguagem de Contexto Aninhado)
  • 20. Nested Context Language (Linguagem de Contexto Aninhado) A linguagem NCL Nested Context Language é uma linguagem declarativa para autoria de documentoslinguagem declarativa para autoria de documentos hipermídia baseados no modelo conceitual NCM Nested Context Model - que foi desenvolvida utilizando uma estrutura modular, seguindo os princípios adotados pelo W3C. Fonte: www.ncl.org.br
  • 21. Nested Context Language • Linguagem proposta pela PUC – Rio; • Paradigma Declarativo u ex: NCL, HTML, SQL u “o que fazer” u linguagens de domínio específico • É especificado por XML Schema; – Defini a estrutura do documento de forma auto-descritiva; • A linguagem é baseada no modelo de contexto aninhado (NCM); – Permite que documentos NCL possuam mais de um nível de aninhamento de contexto;
  • 22. Nested Context Language <livro> <capitulo> <secao> <paragrafo>...</paragrafo> <paragrafo>...</paragrafo> </secao> <secao> •Todas as tags devem ser fechadas; •São case sensitive; •Devem estar bem aninhadas; Exemplo de XML <secao> <paragrafo>...</paragrafo> <paragrafo>...</paragrafo> </secao> </capitulo> </livro> •Deve possuir uma raiz; •Tags principais do NCL: <ncl> (Raiz) <head> <body>
  • 23. • Projetada de forma modular: – Permitindo a combinação de seus módulos em diferentes perfis de linguagem; • Principais Módulos: – Structure > atributos que devem estar em todos os documentos – Layout > como as mídias serão inicialmente apresentadas Nested Context Language – Layout > como as mídias serão inicialmente apresentadas – Media >representar conteúdo físico de mídia digital – Context > definir contextos internos, como links nas mídias – Descriptor > informação necessária para que a mídia seja corretamente exibida – Linking > possibilita a relação entre elementos hipermídia – Connector > estabelece eventos de sincronização e interação com o conteúdo
  • 24. Nested Context Language • Linguagem de marcação de dados: – Formato para descrever dados estruturados; – Declaração mais precisa dos dados; • Suporte a sincronização; – Baseada na estrutura; – Suporte a canal de retorno;– Suporte a canal de retorno; • Suporte a múltiplos dispositivos; • Suporte a edição ao vivo; – TV Social; • NCL é software livre!
  • 25. Nested Context Language Nós e elos num documento hipermídia
  • 26. Nested Context Language Nós e elos num documento hipermídia Nós de mídia
  • 27. Nested Context Language Nós e elos num documento hipermídia Nós, elos e nós de composição (contextos)
  • 28. Nested Context Language Nós de Contexto ou Composição Conjunto de nós ou conjunto de composiçõesconjunto de composições Daí o nome de modelo Contextos Aninhados. Nós, elos e nós de composição (contextos)
  • 29. Nested Context Language (Linguagem de Contexto Aninhado) A linguagem NCL Nested Context Language é uma linguagem declarativa para autoria de documentoslinguagem declarativa para autoria de documentos hipermídia baseados no modelo conceitual NCM Nested Context Model - que foi desenvolvida utilizando uma estrutura modular, seguindo os princípios adotados pelo W3C. Fonte: www.ncl.org.br
  • 30. Multimídia É a combinação, controlada por computador, de pelo menos um tipo de mídia estática (texto, fotografia, gráfico), com pelo menos um tipo de media dinâmicaum tipo de media dinâmica (vídeo, aúdio, animação) (Chapman & Chapman 2000 e Fluckiger 1995).
  • 32. Multimídia X Hipermídia Theodor Holm Nelson Inventou os termos hipertexto e hipermídia em 1963
  • 33. Multimídia X Hipermídia Theodor Holm Nelson Hipermídia = A utilização do hipertexto em aplicações capazes de integrar não sócapazes de integrar não só texto mas também imagem e som.
  • 35. Multimídia X Hipermídia Sistema Multímidia Sistema capaz de manipular ao menos um tipo de mídia discreta e um tipo de mídia continua na forma digital de maneira sincronizada Sistema HipermídiaSistema Hipermídia Sistema Multimídia capaz de tratar eventos causados pela interação com o usuário e reagir a esses eventos
  • 36. Nested Context Language (Linguagem de Contexto Aninhado) A linguagem NCL Nested Context Language é uma linguagem declarativa para autoria de documentoslinguagem declarativa para autoria de documentos hipermídia baseados no modelo conceitual NCM Nested Context Model - que foi desenvolvida utilizando uma estrutura modular, seguindo os princípios adotados pelo W3C. Fonte: www.ncl.org.br
  • 37. NCM – Nested Context Model (Modelo de Contexto Aninhado) • É um modelo conceitual centrado na representação e tratamento de documentos hipermídia e que dá suporte ao NCL; • Cujo modelo de interface separa os componentes de dados e de exibição de objetos;exibição de objetos;
  • 38. NCM – Nested Context Model (Modelo de Contexto Aninhado) Hierarquia de Classes NCM (Versão Anterior a 2.2)
  • 39. NCM – Nested Context Model (Modelo de Contexto Aninhado) Hierarquia de Classes NCM (Versão 2.2)
  • 40. NCM – Nested Context Model (Modelo de Contexto Aninhado) • É um modelo conceitual centrado na representação e tratamento de documentos hipermídia; • A partir da versão 2.2 foi imposto o conceito de evento; – Com a definição de eventos possibilitou a realização de– Com a definição de eventos possibilitou a realização de sincronização espacial e temporal entre nós.
  • 41. NCM – Nested Context Model (Modelo de Contexto Aninhado) María José Peréz-Luque “um evento é uma ocorrência no tempo queocorrência no tempo que pode ser instantânea ou durar um período de tempo”
  • 42. NCM – Nested Context Model (Modelo de Contexto Aninhado) Para o NCM: Um evento é a exibição. Um evento NCM pode estar em um dos seguintes estados: dormindo (sleeping), ocorrendo (occurring) ou suspendo (paused);
  • 43. NCM – Nested Context Model (Modelo de Contexto Aninhado) • Com a introdução deste conceito permitiu: – A criação do Descritor; – Elos redefinidos permitindo relações de sincronização temporal e espacial entre os nós;
  • 45. NCM 3.0 Elo • É uma entidade NCM que possui duas propriedades adicionais: um conector e um conjunto de associações a esse conector; • Criação do Conector na versão 3.0;• Criação do Conector na versão 3.0; – Defini condições entre as relações hipermídia, ou entre os nós.
  • 46. NCM 3.0 Conector • Bind – Define os participantes; • Papel – A sua definição é baseada no conceito de eventos; – Define a função dos participantes na relação;
  • 47. Vídeo Áudio OnEnd StartC A C NCM 3.0 Imagem Elo OnEnd Start C A C A Conector Papel de Condição Papel de Ação
  • 49. O quê? Nós Esse conteúdo é representado através dos nós de mídia.nós de mídia. Nós de mídia
  • 50. Todo nó de mídia é definido dentro de um contexto. O quê? Nós contexto. Representação de nós de mídia e de composição
  • 51. Onde? Região Uma região indica a posição e as dimensões de uma área onde a mídiade uma área onde a mídia será apresentada Representação de região utilizada pela mídia
  • 52. Descritor • É nessa entidade que são dadas as características iniciais de apresentação. • Define onde o objeto de mídia será apresentado. – Essa entidade é a base para o suporte a múltiplos dispositivos de exibição.dispositivos de exibição. • Entidade que associa a mídia a uma região.
  • 53. Descritor Descritores fazem uma associação de uma mídia com várias regiões
  • 54. Estrutura inicial do NCL 1 - Cabeçalho básico do NCL ; 2 – As regiões da tela onde aparecerão os elementos visuais (regionBase); 3 – Como e onde os nós serão exibidos, através de descritores (descriptorBase);
  • 55. Parâmetros de exibição de mídia em uma determinada região 55
  • 56. Introdução • Especificam como os objetos de mídia serão exibidos; • São definidos no cabeçalho do documento ncl; • Todo nó de mídia que será apresentado deve ter um descritor associado.<head> [...] <descriptorBase id=“dbMain”> <descriptor id=“dUnicoDefault” region=“rgFull” /> </descriptorBase> </head> 56
  • 57. Importação de Bases de Descritores • Importar Base de Descritores de outro documento NCL. <descriptorBase> <importBase<importBase documentURI=“pasta/arquivo.ncl" alias=“apelido#id_do_elemento_importado” /> [...] </descriptorBase> 57
  • 58. Atributos básicos de Descritor • *id: identificador único, utilizado nas referencias do descritor; • region: identificador da região associada ao descritor; • explicitDur: define a duração do objeto de mídia associado ao descritor. Ex.: “95.9s”(segundos);associado ao descritor. Ex.: “95.9s”(segundos); • freeze: identifica o que acontece ao final da exibição do objeto de mídia. Ex.: “true”(congela o ultimo instante do video ao finalizar); ” <descriptor id=“dExemplo” reggion=“rgTvExemplo” explicitDur=“25s” freeze=“true” /> 58
  • 59. Parâmetros do Descritor • Elementos opcionais; • As propriedades e seus respectivos valores dependem do tipo de mídia a ser apresentada • Cada descritor pode conter diversos elementos. Ex.:Ex.: <descriptorBase> <descriptor id=“dVideoPrincipal” region=“rgFull”> <descriptorParam name=“nomeParam” value=“valorParam” /> <descriptorParam name=“soundLevel” value=“0.7” /> [....] </descriptor> </descriptorBase> 59
  • 60. Parâmetros reservados para áudio • “soundLevel”, “balanceLevel”, “trebleLevel”, “basslevel”: Valores entre 0 e 1 ou ‘0%’ e ‘100%’; • No caso de “soundLevel”:• No caso de “soundLevel”: – 0 ou 0% = MUTE; – 0.5 ou 50% = volume pela metade; – 1 ou 100% = volume no máximo.<descriptor id=“dAudioEnglish”> <descriptorParam name=“balancelevel” value=“0.5” /> <descriptorParam name=“soundLevel” value=“0.7” /> </descriptor> 60
  • 61. Parâmetros reservados para objetos visuais( vídeos, imagens) • “location”: posição do objeto de mídia. (left,top) Ex.: <descriptorParam name=“location” value=“150,300” />; • “size”: dimensões do objeto de mídia. width e height separados por vírgula. • “zIndex”: posição da região no eixo Z.• “zIndex”: posição da região no eixo Z. • “background”: cor de fundo quando a mídia não couber na região. (padrão: “transparent”) • “fit”: valores possíveis: “fill”, “hidden”, “meet”, “meetBest” ou “slice”. (padrão: “meet”) 61
  • 62. Parâmetros reservados para texto • “fontColor”: a cor da fonte (“white”, “blue”, “yellow”, etc). (padrão: “white”); • “fontSize”: tamanho da fonte. • “fontFamily”: lista com nome de fontes específicas• “fontFamily”: lista com nome de fontes específicas ou genéricas. • “fontVariant”: texto “normal” ou em “small-caps”. (padrão: “normal”). • “fontWeight”: “normal” ou “bold”. 62
  • 63. Navegação por teclas entre os objetos de mídia • Deve-se, para tal evento, utilizar atributos no elemento <descriptor /> • Cada elemento deve conter um índice de foco. • Utiliza-se este índice para indicar o destino do foco quando o usuário pressionar alguma setaquando o usuário pressionar alguma seta • Atributos utilizados no elemento “<descriptor />” “focusIndex”, “moveLeft”, “moveRight”, “moveUp”, “moveDown”, “focusBorderColor”, “focusBorderTransparency”, “focusBorderWidth”, “focusSrc”, “focusSelSrc”, “selBorderColor” 63
  • 64. Exemplo de uso dos atributos de navegação Atributos de descritor relacionados à navegação em um menu vertical de seis itens não-circular. <descriptor<descriptor id=“dBtnOpc2” region=“rgbtn2” focusIndex=“2” moveDown=“3” moveUp=“1” /> 64
  • 65. Atributos para estilização de seleção atual “focusSrc”: permite a alteração do objeto de mídia. Quando o usuário pressiona “OK”,Quando o usuário pressiona “OK”, também é possível alterar a cor da moldura ou o próprio objeto de mídia. Através dos atributos: “selBorderColor” e “focusSelSrc” 65
  • 66. Efeitos de transição • São atributos no elemento “<descriptor>” que fazem referência a elementos “<transition>” de uma base de “<transitionBase>”; • Os efeitos não são obrigatórios; • Definidos dentro do cabeçalho do documento;• Definidos dentro do cabeçalho do documento; <transitionBase> <transition id=“tEfect1” type=“fade” subtype=“fadeFromColor” fadeColor=“blue” /> </transitionBase> <descriptorBase> <descriptor id=“dExemplo1” region=“rgExemplo” transIn=“tEfect1” /> </descriptorBase> 66
  • 67. Objetos de mídia e Contexto Elementos e atributos dos objetos de mídia e contexto 67
  • 68. Introdução • É representado pela tag “<media>”; • Deve apresentar arquivo de mídia (“src”), descritor(“descriptor”) e identificador único(“id”); • Atributo “type” opcional;• Atributo “type” opcional; <body> ... <media id=“VideoPrincipal” src=“media/Principal.avi” descriptor=“dTvExemplo” /> </body> 68
  • 69. Atributos de Objeto de Mídia • “id”: identificador único, utilizado nas referencias ao objeto; • “src”: caminho do objeto de mídia; src=“http://lims.ifpi.edu.br/images/myImage.png”src=“http://lims.ifpi.edu.br/images/myImage.png” • “type”: define o tipo de mídia(opcional); type=“image/png” • “descriptor”: identificador do descritor que controle a exibição do objeto de mídia; descriptor=“dLogotipoLIMS” 69
  • 70. Atributo type – valores permitidos Valor do type Extensão de Arquivo do Atributo “src” text .htm, .html, .xhtml, .css, .xml, .txt image .bmp, .png, .gif, .jpeg, .jpg, .jpeimage .bmp, .png, .gif, .jpeg, .jpg, .jpe audio .ua, .wav, .mp1, .mp2, .mp3, .mp4, .mpg4 video .mp2, .mpeg, .mpg, .mpe, .mp4, .mpg4, .mng, .qt, .mov, .avi, Application .ncl, .lua, .xlt, .xlet, .class 70
  • 71. Contextos • Agrupa objetos(de mídia, de contexto) e elos; • Um exemplo é o elemento “<body>”; • Representado pelo elemento “<context>”;<body> ...... <context id=“menu”> <!—portas--> <!—mídias, contextos --> <!– elos --> </context> </body> 71
  • 72. Portas • Ponto de interface de um contexto que oferece acesso ao objeto do contexto. 72
  • 73. Portas • É necessário haver pelo menos uma porta no documento NCL, indicando qual o objeto( ou contexto) de mídia inicial. <body> <port id=“pInicio” component=“videoPrincipal” /> <port id=“pInteratividade” component=“imgInteratividade” /> ... </body> 73
  • 74. Quando? – CONECTORES E ELOSELOS Definem o sincronismo e a interatividade entre os objetos de uma aplicação NCL. 74
  • 75. Introdução • Os conectores são definidos no cabeçalho do documento dentro de uma base de conectores; • Os elos são inseridos no corpo, representados pela tag “<link>”;pela tag “<link>”; • Um elo associa o objeto através de um conector. 75
  • 76. Conectores • Mecanismos de causalidade; • Para uma ação ser disparada uma condição deve ser satisfeita; 76
  • 77. Elementos de Conectores “<connectorParam>”: define parâmetros, cujos valores são atribuídos pelos elos; “<simpleCondition> e <compoundCondition>”: define as condições de ativações do elo; “<simpleAction> e <compoundAction>”: define as ações“<simpleAction> e <compoundAction>”: define as ações que são realizadas. <casualConnector id=“onBeginStart”> <simpleCondition role=“onBegin” /> <simpleAction role=“start” /> </casualConnector> 77
  • 78. Conectores • “Quando condição/evento, então ação”. • Cabe ao elo ligar os objetos ao papel; 78
  • 79. Papéis de Condição Papel Descrição(quando o elo será ativado) onBegin Quando o objeto for iniciado onEnd Quando a apresentação for finalizada(natural ou intervenção) onAbort Quando a apresentação for abortada onPause Quando a apresentação for pausadaonPause Quando a apresentação for pausada onResume Quando a apresentação for retomada após uma pausa onSelection Quando uma tecla for pressionada enquanto um obj. estiver sendo apresentado 79
  • 80. Papéis de Ação Papel Descrição (ação a ser realizada quando o elo for ativado) start Inicia a apresentação do objeto ligado a este papel stop Termina a apresentação do objeto ligado a este papel Abort Aborta a apresentação do objeto associado a este papel Pause Pausa a apresentação do objeto associado a este papel Resume Retoma a apresentação do objeto ligada a este papel (se estiver pausada) 80
  • 81. <casualConnector> • Baseado em eventos; • “eventos”: ocorrencia no tempo que pode ser instanciada ou duração mensurável; • Tipos de Eventos: – Apresentação; – Selecção; – Atribuição; – Composição; 81
  • 82. Máquina de estados de eventos 82
  • 83. Elos • Seu comportamento é definido pelo conector que utiliza; <link xconnector=“onBeginStart”> <bind role=“onBegin” component=“videoPrincipal” /> <bind role=“start” component=“imgInteratividade” /> </link> 83
  • 84. Elementos de “<link>” • “<bind>”: ligação entre objeto e papel; • “<linkParam>”: define um parametro do elo; – Ex.: “<linkParam name=“vDelay” />”;– Ex.: “<linkParam name=“vDelay” />”;<link xconnector=“id_do_conector”> <bind role=“id_do_papel_de_condição” component=“id_de_um_obj” /> <bind role=“id_do_papel_de_acao” component=“id_de_um_objeto” /> </link> 84
  • 86. Aplicação em NCL • Ferramentas • Aplicação • Requisitos – O que!– O que! – Onde! – Como! – Quando!
  • 87. Ferramentas • Composer IDE • Eclipse – Plug-in ncl eclipse • Ginga-NCL player• Ginga-NCL player • Portal do software público
  • 89. Requisitos 1. Definir as mídias (O que!) 2. Definir as regiões (Onde!) 3. Definir os descritores (Como!) 4. Definir o conectores e os elos (Quando!)4. Definir o conectores e os elos (Quando!)
  • 94. Onde!
  • 97. Como!
  • 105. Quando!... <connectorBase> <causalConnector id="onBegin1StartN"> <simpleCondition role="onBegin"/> <simpleAction role="start" max="unbounded" qualifier="par"/> </causalConnector> <causalConnector id="onSelectionStartN"> <simpleCondition role="onSelection"/> <simpleAction role="start" max="unbounded" qualifier="par"/> </causalConnector></causalConnector> <causalConnector id="onKeySelectionStopN"> <connectorParam name="keyCode" /> <simpleCondition role="onSelection" key="$keyCode"/> <simpleAction role="stop" max="unbounded" qualifier="par"/> </causalConnector> </connectorBase>
  • 107. A linguagem Lua e suas aplicaçõesaplicações
  • 108. O Que é Lua • Mais uma linguagem de script – = dinâmica • Uma linguagem de Descrição de Dados – Não totalmente diferente de XML • Única linguagem de programação desenvolvida fora• Única linguagem de programação desenvolvida fora do primeiro mundo a ter aceitação mundial • Centenas de milhares de usuários • Usada por Intel, Conectiva, Microsoft, LucasArts, Petrobras, etc.
  • 109. Onde Lua é Desenvolvida • Desenvolvida na PUC-Rio – desde 1993 • "Comitê" de três pessoas – Roberto Ierusalimschy, Luiz H. de Figueiredo,– Roberto Ierusalimschy, Luiz H. de Figueiredo, Waldemar Celes
  • 110. Porque Lua • Portabilidade • Simplicidade • Pequeno tamanho • Acoplabilidade• Acoplabilidade • Eficiência
  • 111. Portabilidade • escrita em ANSI C, compila o mesmo código em todas as plataformas • Unix, Windows (incluindo CE), Playstation II, OS/390, XBox, BeOS, DOS, Palm OS, EPOC,OS/390, XBox, BeOS, DOS, Palm OS, EPOC, sistemas embutidos, etc. • Núcleo é praticamente uma aplicação free-standing
  • 112. Simplicidade • Um único tipo de estrutura de dados – Tabelas • Um único tipo numérico – tipicamente double– tipicamente double • Mecanismos ao invés de políticas – e.g., orientação a objetos
  • 113. Pequeno Tamanho • Menos de 200K • bibliotecas independentes (e removíveis)
  • 114. Acoplabilidade • Bi-direcional! • Acoplada em C/C++, Java, Fortran, C#, Perl, Ruby, Ada, etc.
  • 115. Eficiente • Lua entre as mais rápidas no grupo de linguagens interpretadas com tipagem dinâmica
  • 117. Lua no desenvolvimento de jogos • Motor de jogos – Simplifica o desenvolvimento 1. Motor de Inteligência artificial (IA) 2. Motor de física 3. Motor gráfico 4. Motor de som 5. Linguagem de script5. Linguagem de script • Portabilidade • Fornece funcionalidade • Complexo e tem alto custo • Reduz o custo do desenvolvimento
  • 118. Mas por que utilizar a linguagem lua em jogos? • Compilação – código fonte é interpretado pelo programa em tempo de execução e não em tempo de compilação – Não precisar re-compilar o código principal – Maior flexibilidade no desenvolvimento da aplicação– Maior flexibilidade no desenvolvimento da aplicação • Jogo do milhão, Soletrando • Parametrização de seu conteúdo • Apenas a parametrização do conteúdo não é a melhor solução
  • 119. Mas por que utilizar a linguagem lua em jogos? • Programação por não-programadores • Desenvolvimento de front-ends • Atualização dos scripts • Funcionamento interno do jogo• Funcionamento interno do jogo • Acesso aos códigos-fonte
  • 120. RPGDU
  • 122. Grim Fandango – LucasArts • Adventure – Utiliza uma versão modificada de Lua 3.1 como linguagem de script
  • 123. Escape from Monkey Island – LucasArts • Adventure – Também utiliza uma versão modificada de Lua 3.1 como linguagem de script
  • 124. Psychonauts – Double Fine • Action – Toda lógica do jogo implementada em Lua – Jogo controlado por entidades com scripts
  • 125. Impossible Creatures – Relic • Lua usada em • Controle de IA • Aparência de efeitos e de outros elementos gráficos • Determinação das regras do jogo • Edição dos atributos dos personagens • Debug em tempo real
  • 126.
  • 127.
  • 128.
  • 129. Lua no desenvolvimento para web • Plataforma kepler - apresentação – extremamente portável e leve – é extensível – Kepler é um software livre – criado pela Fábrica Digital e pela PUC-RIO– criado pela Fábrica Digital e pela PUC-RIO – Pré-requisitos – Kepler 1.1
  • 130. Visão • O Kepler não está tentando ser o novo PHP, derrubar o Python ou RoR – Leve e 100% nacional • Alguma vez você já tentou colocar PHP ou Ruby em• Alguma vez você já tentou colocar PHP ou Ruby em um dispositivo com 1Mb de RAM? • O Kepler é Modular
  • 131. Usos • Fábrica digital – Publique! – Gerenciador de conteúdo para web – Mais utilizado do Brasil • CISCO / PUC-RIO
  • 133. Módulos • CGILua • LuaFileSystem • LuaSocket • Orbit (demonstrar...) • Xavante• Xavante • LuaSql (demonstrar) • LuaZip • MD5 • ...
  • 134. LuaRocks • sistema de distribuição e gerenciamento para módulos Lua • permite que você instale módulos Lua – Rocks– Rocks • contém informação sobre dependência de versão • é uma aplicação de “puro Lua”
  • 135. • Ginga – middleware padrão brasileiro para TV digital • Wireshark – analisador de protocolos • Snort• Snort – intrusion detection and prevention system • nmap – rastreador de redes para segurança
  • 138. Convenções Léxicas • Palavras-chave And break do else elseif end false for function if in local nil not orfor function if in local nil not or repeat return then true until while
  • 139. Convenções Léxicas… • Diferencia minúsculas de maiúsculas and ~= AND ~= And • Como convenção• Como convenção _VERSION
  • 140. Itens léxicos + - * / % ^ # == ~= <= >= < > = ( ) { } [ ] ; : , . .. ...: , . .. ...
  • 141. Comentários • -- Comentário de uma linha • -- [[ Esse é um comentário de• -- [[ Esse é um comentário de múltiplas linhas]]
  • 142. Variáveis • São globais por padrão mensagem mensagem = “Hello, word“ print(mensagem) • Variável local local mensagem = “Hello, word“local mensagem = “Hello, word“ print(mensagem) • Campos de uma table t[i] • Palavras-chave
  • 143. Atribuição x = 3 x, y = 3, 2 x, y = y, x x, y, z = 3, 2 -- z recebe nil x, y = 3, 4 ,5, 6, 7 -- 5, 6 e 7 descartados
  • 144. Valores e Tipos • Dinamicamente tipada local var = “oi“ -- contém uma stringstring var = 3.14 -- Agora é um número var = true -- e agora é um boolean • Valores de primeira classe
  • 145. Tipos • Nil • Boolean • Number • String • Function• Function • Table • Userdata • Thread
  • 146. Nil e Boolean • Representa a ausência de um valor útil • Representa true e false • Variáveis não inicializadas têm valor nil • Qualquer valor diferente de nil e false è verdadeiro – String vazia ("") e zero (0) são considerados– String vazia ("") e zero (0) são considerados verdadeiros
  • 147. Number • Números • Equivale a um double (por padrão) • Sem problema para representar inteiros• Sem problema para representar inteiros
  • 148. String • Cadeias de caracteres literais • Podem ser delimitadas através do uso de aspas simples ou aspas duplas – local mensagem = ‘oi’ – local mensagem = “oi” • Podem conter as seguintes seqüências de escape no estilo de C • Podem conter as seguintes seqüências de escape no estilo de C – local mensagem = “oin123” • Formato longo – local mensagem = [[Cadeias literais longas]] • Imutáveis
  • 149. Coerção e concatenação • Conversão automática local str1 = "As armas " local str2 = "e os barões assinalados" local concatenada = str1..str2 print ("1.234" + 4.321) --> 5.555 print ("Valor: "..171) --> "Valor:171"
  • 150. Function • Representa as funções • Valores de primeira classe • Pode ter nenhum ou vários de parâmetros • Pode retornar nenhum ou vários valores foo = ‘Cadeia de Carac...’ function foo_1(n)function foo_1(n) return 1 end foo_2 = function(n) return 1, 2, 3 end
  • 151. Userdata • Permite que dados C arbitrários possam ser armazenados em variáveis Lua.
  • 152. Thread • Representa fluxos de execução independentes • é usado para implementar co-rotinas• é usado para implementar co-rotinas
  • 153. Table • Implementa arrays associativos • Representar arrays comuns, tabelas de símbolos, conjuntos, registros, grafos, árvores, etc. • Existem várias maneiras convenientes de se criar tabelas em Lua • Podem conter funções local t = { } local t={4, ‘lua’, false} à t[1]=4, t[2]=‘lua’, t[3]=false local t = { nome = "Fulano", idade = 33, pais = { pai = "Ivo", mae = "Ana"}} print (t["nome"]) --> "Fulano" print (t.nome) --> "Fulano" print (t["pais"]["pai"]) --> "Ivo" print (t.pais.mae) --> "Ana“
  • 154. Expressões • aritméticas u op: + - * / ^ % u ex: 1+1 (v / 2)^2 -x u número -> número l de concatenação u op: .. u ex: “João” .. “ e “ .. “Maria” u string -> string
  • 155. Expressões • lógicas u op: and or not u ex: 1 and 2 à 2 u 1 and false à false u not val à false 1 or 2 à 1u 1 or 2 à 1 u relacionais u op: < > <= >= == ~= u ex: 1<=2 “a”~=”a” 1==”1” x>y u valor -> boolean
  • 156. Estruturas de Controle local x = 1 • while exp do while x < 10 do bloco print(x) i = i + 1 end end • repeat repeat bloco print(x) until exp until x < 10until exp until x < 10 • if exp then if x == 1 then bloco print(‘x = 1’) elseif exp then elseif x==2 then bloco print(x==2) else else bloco print(‘x ~= 1e x~= 2’) end end
  • 157. O comando for e suas variações • Numérica for i = 1, 10, 1 do if i % 2 == 0 then print (tostring(i).."é par.") elseelse print (tostring(i).." é ímpar.") end end
  • 158. O comando for e suas variações... • Genérica hero = { name = "Freddy Hardest", speed = 3, strength = 12,strength = 12, intelligence = 7 } for k, v in pairs (hero) do print (k.."-->".. v) end
  • 159. Biblioteca Básica • funções de uso geral • assert, dofile, error, _G, ipairs, next, pairs, pcall, print, tonumber, tostring, type,pcall, print, tonumber, tostring, type, unpack, _VERSION
  • 160. Biblioteca math • funções trigonométricas • exponenciação e logaritmo • arredondamento • max, min • randomização• randomização • math.sin, math.pi, math.log, math.pow, math.sqrt, math.random
  • 161. Biblioteca table • tabelas como arrays • inserção e remoção • ordenação • concatenação • table.insert, table.remove, table.sort, table.concat, table.maxn
  • 162. Biblioteca string • funções básicas • pattern-matching •string.sub, string.format, string.rep,•string.sub, string.format, string.rep, string.find, string.lower, string.len
  • 163. Outras bibliotecas • Debug -> Depuração • File -> Entrada e saída • Os -> Funções de sistema e data e hora• Os -> Funções de sistema e data e hora
  • 164.
  • 165.
  • 166. +
  • 167. Declarativo • Mais alto nível de abstração; • Resultam em uma declaração de um resultado desejado; + Não Declarativo (Imperativo) • Podem seguir diferentes modelos; • Implementação algorítmica;de um resultado desejado; • “o que fazer”; Ex: NCL, HTML e SQL • Implementação algorítmica; • “como fazer”; • Relação direta com a CPU; • Programador Especialista; Ex: LUA, Java, C++
  • 168. + “O que fazer” “Como fazer”
  • 169. + Ambientes de aplicações para receptores fixos e móveis
  • 170. + Todo middleware de ambiente declarativo ou procedural deve dar suporte as seguintes requisitos: • Suporte a sincronização;• Suporte a sincronização; • Suporte a múltiplos dispositivos; • Suporte a edição ao vivo;
  • 171. Relação entre Objetos de Mídia • Um objeto com código imperativo deve ser escrito em um arquivo separado do documento NCL, que apenas o referencia. • Relacionamentos são independentes do tipo de mídia. – Através de Elos: <link>; Exemplo: <media id=“myvideo” src=“video.mpg”/><media id=“myvideo” src=“video.mpg”/> <media id=“mynclua” src=“nclua.lua”/> <link> <bind role=“onBegin” component=“myvideo”/> <bind role=“start” component=“mynclua”/> </link>
  • 172. • Módulo event – Permite que objetos NCLua se comuniquem com o documento NCL; • Módulo canvas – Oferece a funcionalidade para desenhar objetos gráficos; • Módulo settings – Oferece acesso às variaveis definidas no objeto settings; • Módulo persistent – Exporta uma tabela persistente entre execuções de objetos imperativos; • Módulo ncledit – Capaz de editar documentos NCL
  • 173. Paradigma Orientado a Eventos • O modelo de execução de um NCLua é orientada a eventos; • O módulo event é a mais importante extensão; • O script NCLua não é nada mais que um• O script NCLua não é nada mais que um tratador de eventos; – Apenas um evento é tratado por vez; – Processamento deve ser rápido;
  • 175. Paradigma Orientado a Eventos -- initialization ... function hdlr (evt) -- NCL events if evt.action == 'start' then ... endend -- key events if key.value == '1' then ... end end event.register(hdrl)
  • 176. Paradigma Orientado a Eventos evt = { class =‘key’ type = ‘PRESS’ key = ‘RED’ A função tratadora pode receber um evento indicando que a tecla vermelha do key = ‘RED’ } Representação de evento em NCLua. tecla vermelha do controle remoto foi pressionada pelo telespectador
  • 177. Paradigma Orientado a Eventos event.post = { class =‘ncl’ type = ‘presentation’ action = ‘stop’ A função tratadora pode receber um evento indicando que a tecla vermelha do action = ‘stop’ } Representação de evento em NCLua. tecla vermelha do controle remoto foi pressionada pelo telespectador
  • 178. Classes de Eventos Comunicação NCL •Class: 'ncl' •Type: 'presentation', 'attribution' •Action: 'start', 'stop', 'set', ...•Action: 'start', 'stop', 'set', ... •Transition: 'pauses', 'set', ... •Area: '', 'fim', 'fase1', ...
  • 179. Classes de Eventos • Teclas do controle – Representa o pressionamento de teclas do controle remoto pelo usuário; class: 'key' type: 'press' e 'release' key: 'RED', 'A', '1', ... { class='key', type='press', key='RED' } • Eventos internos – Através dessa classe, aplicações podem estender sua funcionalidade criando seus próprios eventos; class: 'user' any: any { class='user', data={k1=v1,k2=v2} }
  • 180. Classes de Eventos • Classe tcp: Permite acesso ao canal de interatividade por meio do protocolo tcp. • Classe sms: Usada para envio e recebimento de mensagens SMS em dispositivos móveis. • Classe edit: Permite que os comandos de edição ao vivo sejam disparados a partir de scripts NCLua.sejam disparados a partir de scripts NCLua. • Classe si: Provê acesso a um conjunto de informações multiplexadas em um fluxo de transporte e transmitidas periodicamente por difusão.
  • 181. Exemplo 1 •Três nós NCLua são disparados; •O primeiro não trata eventos; •O segundo notifica seu fim natural ao receber um evento (start); •O terceiro cria um timer de 3 segundos para notificar seu fim natural; Visão temporal e espacial do Exemplo 1 natural; •Botões identificam seus estados;
  • 183. Exemplo 2 •Botão “Click it” aparece diversas vezes durante o vídeo; •Conta o número de vezes que o usuário seleciona o botão; •Em NCL puro: explosão de elos; •Em Lua: uma variável e um método; Visão temporal e espacial do Exemplo 2 método; •Uso de uma propriedade para comunicação;
  • 185. Módulo Canvas Operações gráficas durante a apresentação de uma aplicação
  • 186. Construtores • canvas:new (image_path : string) – Construtor utilizado para gerar um novo canvas cujo conteúdo é a imagem passada através do argumento image_path.através do argumento image_path. • canvas:new (width, height : number) – Construtor utilizado para gerar um novo canvas com todos os pixels de cor transparente.
  • 187. Funções • canvas:attrSize() -> width, height : number • canvas:attrColor() -> r, g, b, a : number • canvas:attrFont() -> face : string, size : number, style : stringnumber, style : string • canvas:attrClip() -> x, y, width, height : number – Funções utilizadas para obter os valores, respectivamente, das dimensões do canvas, da cor atual, da fonte e da área de corte.
  • 188. Funções • canvas:attrSize(width, height : number) • canvas:attrColor(r, g, b, a : number) • canvas:attrFont(face : string, size : number, style : string)number, style : string) • canvas:attrClip(x, y, width, height : number) – Funções utilizadas para modificar os valores, respectivamente, das dimensões do canvas, da cor atual, da fonte e da área de corte.
  • 189. Funções • canvas:drawLine (x1, y1, x2, y2 : number) • canvas:drawRect (mode : string, x, y, width, height : number) • canvas:drawPolygon (mode : string) • canvas:drawEllipse (mode : string, xc, yc,• canvas:drawEllipse (mode : string, xc, yc, width, height, ang_start, ang_end : number) • canvas:drawText (text : string, x, y : number) – Funções utilizadas para desenhar, respectivamente, as primitivas linha, retângulo, polígono, elipse (ou circunferência) e texto.
  • 190. Funções • canvas:flush() – Utilizada para enviar o resultado de uma série de operações de desenho e de composição para o canvas, tornando estas visíveis. • canvas:compose (x, y : number, src :• canvas:compose (x, y : number, src : canvas, [src_x, src_y, src_w, src_h : number]) – Utilizada para copiar o conteúdo de um dado canvas em outro, permitindo operações de composição.
  • 191. REFERÊNCIAS BIBLIOGRÁFICAS NCL [1] NETO, Carlos Salles de Soares; SOARES, Luiz Fernando Gomes; RODRIGUES; Rogério Ferreira; BARBOSA, Simone Diniz Junqueira. Construindo Programas Audiovisuais Interativos Utilizando a NCL 3.0 e a Ferramenta Composer - 2a. edição (NCL 3.0), 2007. [2] Modelo de Contextos Aninhados (Versão 2.2), Laboratório TeleMídia, PUC-RIO, 2003. [3] DE MELO, Julio César Paulino; ARAÚJO, Rodrigo Moreira. Os Módulos NCL e[3] DE MELO, Julio César Paulino; ARAÚJO, Rodrigo Moreira. Os Módulos NCL e NCLUA do Middleware Ginga para aplicações em TV Digital Interativa. UFRN, 2008. [4] SOARES, Luiz Fernando Gomes; RODRIGUES; Rogério Ferreira. Nested Context Model 3.0 Part 1 – NCM Core. PUC-RIO. [5] BARBOSA, Simone Diniz Junqueira; SOARES, Luiz Fernando Gomes. TV Digital Interativa no Brasil se faz com Ginga Fundamentos, Padrões, Autoria Declarativa e Usabilidade. pp 105-147, PUC-RIO, 2008.
  • 192. REFERÊNCIAS BIBLIOGRÁFICAS NCL [6] FILHO, Mauro Fernando de Holanda Beltrão. GINGAWAY – Uma ferramenta para criação de aplicações GINGA-NCL interativas para TV Digital. UFPE, 2008. [7] SANT’ANNA, Francisco; CERQUEIRA, Renato; SOARES, Luiz Fernando Gomes. NCLUA – Objetos Imperativos LUA na linguagem declarativa NCL. PUC-RIO. [8] SANT’ANNA, Francisco; NETO, Carlos de Salles Soares; BARBOSA, Simone Diniz Junqueira; SOARES; Luiz Fernando Gomes. Aplicações Declarativas NCL com Objetos NCLua Imperativos Embutidos. PUC-RIO, 2009.Objetos NCLua Imperativos Embutidos. PUC-RIO, 2009. [9] SANT’ANNA, Francisco; CERQUEIRA, Renato; SOARES, Luiz Fernando Gomes. NCLUA – Objetos Imperativos LUA na linguagem declarativa NCL. PUC-RIO. [10] SOARES, Luiz Fernando Gomes; BARBOSA, Simone Diniz Junqueira. Programando em NCL 3.0 Desenvolvimento de Aplicações para o Middleware Ginga. 2009.