19
1 Iván Bernal, Ph.D. [email protected] http://ginga.epn.edu.ec Ginga -NCL Quito – Ecuador Copyright @2010, I. Bernal Escuela Politécnica Nacional Quito – 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

NCL Composer EPN

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