Upload
walter-valverde
View
147
Download
1
Embed Size (px)
Citation preview
1
Iván Bernal, [email protected]://ginga.epn.edu.ec
Ginga -NCL
Quito – Ecuador
Copyright @2010, I. Bernal
Escuela Politécnica NacionalQuito – Ecuador
Iván Bernal, Ph.D.Diciembre 2010/ Draft 2
Agenda
• Generalidades
TV digital
Interactividad STB
Ginga (middleware) Ginga-NCL
Ginga-J
Composer y emulador de STB NCL: regiones, descriptores y medios
Documentos hipermedia: nodos y enlaces
Conectores
Ejemplo
2
Iván Bernal, Ph.D.Diciembre 2010/ Draft 3
1. http://wiki.ginga.org.ar (varios artículos)
BibliografíaBibliografía
Iván Bernal, Ph.D.Diciembre 2010/ Draft 4
GeneralidadesGeneralidades
• Ginga es el nombre que recibe el middleware.
• Ginga permite ejecutar aplicaciones interactivas dentro de un STB
(Set-Top Box).
En el mercado existen STBs de distintos fabricantes y puede variar la
plataforma de hardware/software de los mismos.
Necesidad clara de tener un middleware que permita correr aplicaciones sin
importar que STB se tenga.
Los STBs tendrán la capacidad de actualizar su firmware así como también
la versión de Ginga.
Se puede actualizar por aire: método de actualización masivo, y es el broadcaster de TV
quien se encarga de emitir la actualización.
A través de un dispositivo USB: el fabricante provee un pendrive o bajando la
actualización desde la web.
3
Iván Bernal, Ph.D.Diciembre 2010/ Draft 5
GeneralidadesGeneralidades
• Ginga
Middleware abierto.
Se subdivide en dos subsistemas interrelacionados que permiten el
desarrollo de aplicaciones siguiendo dos paradigmas de programación
diferentes.
Ginga-J (para aplicaciones procedimentales Java)
Ginga-NCL (para aplicaciones declarativas NCL)
Iván Bernal, Ph.D.Diciembre 2010/ Draft 6
GeneralidadesGeneralidades
• NCL (Nested Context Language)
NCL is an XML application language based on the NCM (Nested Context Model)
NCM is a conceptual model for hypermedia document specification, with temporal and
spatial synchronization among its media objects.
Lenguaje declarativo que provee facilidades para especificar aspectos de
interactividad, sincronismos espacial/temporal entre objetos de multimedia,
adaptabilidad y soporte para múltiples dispositivos, es decir construir aplicaciones.
Ginga-NCL
Único middleware estándar internacional tanto para IPTV como para TV digital
terrestre (en todos los tipos de dispositivos).
Único estándar abierto.
El mismo fue creado en la Pontificia Universidad Católica de Río de Janeiro
(PUC-Rio) .
Ofrece una infraestructura de presentación de aplicaciones de multimedia/hipermedia
desarrolladas sobre el paradigma declarativo, escritas en el lenguaje NCL y el lenguaje
de scripting Lua.
4
Iván Bernal, Ph.D.Diciembre 2010/ Draft 7
GeneralidadesGeneralidades
• NCL (Nested Context Language)
Las aplicaciones se pueden ejecutar de dos maneras en el STB.
Las aplicaciones a ejecutar en los STBs vienen dentro de la señal que reciben,
en un canal de datos dedicado para las aplicaciones.
Este canal, recibe el nombre de carrusel de datos, dado que se va
iterando sobre los datos de manera circular enviándolos constantemente.
Esto es necesario porque cuando se sintoniza un canal de televisión, el
STB debe poder descargar el contenido completo del carrusel.
Luego ya sea por voluntad del usuario, o por eventos emitidos desde el
brodcaster la aplicación se ejecuta.
La aplicación es cargada a través de un dispositivo USB y ejecutada.
Iván Bernal, Ph.D.Diciembre 2010/ Draft 8
GeneralidadesGeneralidades
• NCL (Nested Context Language)
Lenguaje declarativo
Significa que los programas declaran el resultado esperado.
Quien ejecuta el programa debe articular los recursos necesarios para
obtener lo que se declara.
Para comprender esta idea, considerar el lenguaje declarativo HTML,
donde se declara una página web pero no se indica paso a paso como
obtenerla, sino que el navegador web interpreta esta declaración y la
muestra con sus propios algoritmos en base a los recursos que maneja.
5
Iván Bernal, Ph.D.Diciembre 2010/ Draft 9
GeneralidadesGeneralidades
• NCL (Nested Context Language)El lenguaje declarativo NCL puede además complementarse con el lenguaje
de scripting Lua, combinando programación declarativa+procedural.
Salvando la diferencia entre lenguajes y el uso específico para aplicaciones
de TV interactiva de Ginga-NCL-Lua.
Este enfoque es análogo al uso del lenguaje declarativo HTML con el de scripting
Javascript que se aplica en el desarrollo de paginas web.
Iván Bernal, Ph.D.Diciembre 2010/ Draft 10
GeneralidadesGeneralidades
• The basic NCL structure module defines:
Te root element, called <ncl>, and its children elements:
The <head> element
The <body> element
6
Iván Bernal, Ph.D.Diciembre 2010/ Draft 11
GeneralidadesGeneralidades
• The <head> element may have the following elements as its
children:
<importedDocumentBase>
<ruleBase>
<transitionBase>
<regionBase>
<descriptorBase>
<connectorBase>
<meta> and <metadata>
Iván Bernal, Ph.D.Diciembre 2010/ Draft 12
GeneralidadesGeneralidades
• The <body> element may have the following elements as
its children:
<port>
<property>
<media>
<context>
<switch>
<link>
7
Iván Bernal, Ph.D.Diciembre 2010/ Draft
EjemploEjemplo
13
Iván Bernal, Ph.D.Diciembre 2010/ Draft
EjemploEjemplo
14
8
Iván Bernal, Ph.D.Diciembre 2010/ Draft 15
EjemploEjemplo
• Dentro de <head>:
Definir una <region> dentro de <regionBase> Una región define el espacio de exhibición de un objeto medio
Definir un <descriptor> dentro de <descriptorBase> Un descriptor define las características de presentación de un medio y la región en el que
se muestra.
Define como se presentan los medios.
Iván Bernal, Ph.D.Diciembre 2010/ Draft 16
EjemploEjemplo
9
Iván Bernal, Ph.D.Diciembre 2010/ Draft 17
EjemploEjemplo
• Dentro de <body>:
Indicar un <port> de inicio. Un <port> indica cuál es el medio que comienza la exhibición del documento NCL.
Iván Bernal, Ph.D.Diciembre 2010/ Draft 18
EjemploEjemplo
• Dentro de <body>:
Definir los medios <media> que se emplearán
Cada objeto medio debe tener: id
src: fuente de origen
descriptor asociado
tipo
10
Iván Bernal, Ph.D.Diciembre 2010/ Draft 19
Iván Bernal, Ph.D.Diciembre 2010/ Draft 20
EjemploEjemplo
• Los documentos hipermedios están compuestos generalmente por
nodos (nós) y enlaces (links, elos).
Cada nodo representa un medio y cada enlace representa la relación entre
medios.
Una relación entre medios puede especificar, por ejemplo, que en un
determinado momento de la presentación de un medio, otro debe iniciarse.
11
Iván Bernal, Ph.D.Diciembre 2010/ Draft 21
EjemploEjemplo
• Ejemplo: considerando un programa audiovisual interactivo que
al iniciar la presentación de un video, inicie también la
presentación de una imagen y texto.
• La disposición en la ventana se organiza como se indica en la
figura a) y la vista estructural b) correspondiente que presenta los
nodos y enlaces.
Iván Bernal, Ph.D.Diciembre 2010/ Draft 22
EjemploEjemplo
• NCM (Nested Context Model) Modelo de Contextos anidadosModelo subyacente de NCL va más allás de los gráficos presentados.
En NCM los gráficos pueden ser anidados, permitiendo segmentar y estructurar el documento
como se desee.
Esto se hace con los nodos de composición, que son nodos compuestos de grafos NCM.
Un nodo de composición también se conoce como “contexto”.
Capítulo 1 y capítulo 2 son contextos (nodos de composición) mientras que los círculos son
cada uno un nodo de contenido.
12
Iván Bernal, Ph.D.Diciembre 2010/ Draft 23
EjemploEjemplo
• NCM (Nested Context Model) Modelo de Contextos anidadosPara estructurar/organziar de mejor manera la sección body (que es un contexto global),
pueden emplearse los contextos para enmarcar algunos medios que estén estrechamente
relacionados. Por ejemplo: los ítems de un menú.
Iván Bernal, Ph.D.Diciembre 2010/ Draft 24
EjemploEjemplo
• NCM (Nested Context Model) Modelo de Contextos anidados
En NCM un nodo puede ser de dos tipos:
No do de contenido o de medios, asociado a un elemento de medios como video, audio,
imagen, texto, etc.
Nodo de composición o contexto (del cual SWITCH s un caso particular)
• Para construir un documento hipermedia es necesario definir:
Qué se quiere reproducir
En dónde (en qué región de la ventana del dispositivo)
Cómo (con que volumen, con que reproductor, con o sin borde)
Cuándo (antes/después de que medio se presenta o después de presionar qué
tecla)
13
Iván Bernal, Ph.D.Diciembre 2010/ Draft 25
EjemploEjemplo
• En NCL, el sincronismo de inicio y fin entre medios está dado por los enlaces
entre los medios.
• El comportamiento de un enlace está definido por el conector asociado.
• Un conector define uno o mas papeles/roles para una condición de activación
del enlace y uno o mas papeles/roles para acciones que deben realizarse cuando
el enlace sea activado.
• Ejemplo: uso de lo conectores onBeginStart y onEndStop
Iván Bernal, Ph.D.Diciembre 2010/ Draft 26
EjemploEjemplo
• onBeginStart
Apenas existe un rol de condición y un rol de activación.
onBegin: condición que indica que el enlace se activa cuando el nodo asociado a este rol es
iniciado.
start : acción indicando que el enlace, al ser activado, inicia una presentación del nodo asociado
a este rol.
“El conector onBeginStart inicia la presentación del nodo ligado al rol start cuando el nodo
asociado al rol onBegin es presentado ”
14
Iván Bernal, Ph.D.Diciembre 2010/ Draft 27
EjemploEjemplo• Si se quiere presentar dos nodos
de medios simultáneamente:
video e imagen.
• Un enlace utilizando un conector
onBeginStart para cuando inicie
el video también inicie la
imagen.
• Un enlace utilizando onEndStop
para cuando el video termine
también termine la imagen.
Iván Bernal, Ph.D.Diciembre 2010/ Draft 28
EjemploEjemplo
15
Iván Bernal, Ph.D.Diciembre 2010/ Draft 29
EjemploEjemplo
• En NCL 3.0 solo hay un tipo de conector : causal connector.
Define condiciones sobre las cuales el enlace puede ser activado y las acciones que serán
realizadas cuando el enlace sea activado.
Un conector causal debe poseer por lo menos una condición y una acción.
Cada condición o acción está asociada a un rol, punto de interfaz del conector que participará
de las asociaciones (bind) del enlace.
Se lee: “cuando la condición, entonces la acción”
Cuando <algún nodo> inicia, termina <algún nodo>
Iván Bernal, Ph.D.Diciembre 2010/ Draft 30
Eje
mp
loE
jem
plo
16
Iván Bernal, Ph.D.Diciembre 2010/ Draft 31
EjemploEjemplo
Iván Bernal, Ph.D.Diciembre 2010/ Draft 32
Sobre descriptoresSobre descriptores
• Un descriptor puede asociarse con varios medios
17
Iván Bernal, Ph.D.Diciembre 2010/ Draft 33
Sobre anchors (area/interface)Sobre anchors (area/interface)
Iván Bernal, Ph.D.Diciembre 2010/ Draft 34
Sobre anchors (area/interface)Sobre anchors (area/interface)
18
Iván Bernal, Ph.D.Diciembre 2010/ Draft
Acceso a variables de entornoAcceso a variables de entorno
• Se puede acceder a los valores de variables de entorno
mediante el Módulo Settings de NCLua.
Este módulo ofrece acceso desde Lua a las variables definidas
en el “objeto settings del documento NCL”.
Ejemplos en Lua: lang = settings.system.language
age = settings.user.age
val = settings.default.selBorderColor
settings.service.myVar = 10
settings.user.age = 18 --> ERROR
35
Iván Bernal, Ph.D.Diciembre 2010/ Draft
Acceso a variables de entornoAcceso a variables de entorno
• Módulo settings
Exporta la tabla settings con:
Variables definidas por el autor del documento NCL.
Variables de ambiente reservadas, contenidas en el nodo:
application/x-ginga-settings.
36
19
Iván Bernal, Ph.D.Diciembre 2010/ Draft
Acceso a variables de entornoAcceso a variables de entorno• La forma de leer y escribir los settings desde NCL es mediante un
objeto media de tipo application/x-ginga-settings.
Si se quiere definir una variable en un documento NCL:
<media id="misVariables" type="application/x-ginga-settings">
<property name="nombreDeVariable" value="unValor"/>
</media>
Ejemplo:<media type="application/x-ginga-settings" id="nodeSettings">
<property name="idioma"/>
</media>
37
Iván Bernal, Ph.D.Diciembre 2010/ Draft
Acceso a variables de entornoAcceso a variables de entorno• La forma de leer y escribir los settings desde NCL es mediante un
objeto media de tipo application/x-ginga-settings.
Por otro lado hay variables de sistema o usuario, por ejemplo la edad del
usuario que está utilizando el STB.
Un ejemplo de como leer esta variable podría ser en la definición de una
regla:
<ruleBase>
<rule id="esMayor" var="user.age" comparator="gt" value="18" />
</ruleBase>
y esa regla se podría utilizar en un switch para decidir si mostrar o no un
contenido.
38