El documento describe el sistema de televisión digital terrestre interactiva de Argentina. Adoptó el estándar brasileño-japonés SBTVD-T/ISDB-Tb, usando codificación MPEG-4 AVC y el middleware Ginga desarrollado en Brasil. Ginga permite ejecutar aplicaciones interactivas en decodificadores (STB) de diferentes fabricantes a través de una API. El lenguaje NCL se usa para crear aplicaciones y Lua como lenguaje de scripting. Los desarrolladores usan herramientas como Composer
Herramientas de desarrollo para dispositivos móviles
Ginga ncl-lua
1. SATVD-T Sistema Argentino de Televisión Digital Terrestre INTERACTIVO Argentina adoptó la norma nipo-brasileña de TV digital SBTVD-T/ ISDB-Tb , que difiere de la ISDB-T, con respecto a la codificación de vídeo, usando el estándar MPEG- 4 AVC y el middleware Ginga , que fue desarrollado por Brasil y se convirtió en la gran novedad de la norma. Optando por aplicar la alternativa declarativa de Ginga. H.264 o MPEG- 4 AVC parte 10, es una norma que define un códec de vídeo de alta compresión. Esta norma H.264/AVC, crea un estándar capaz de proporcionar una buena calidad de imagen, con tasas binarias notablemente inferiores a los estándares previos (MPEG-2, H.263 o MPEG-4 parte 2), además de no incrementar la complejidad de su diseño.
3. Ginga es el nombre del middleware libre, del Sistema Brasileño de TV Digital Terrestre (SBTVD), que nos permite ejecutar aplicaciones interactivas dentro de un STB (Set-Top Box). Como en el mercado existen STBs de distintos fabricantes y puede variar la plataforma hardware/software de los mismos, surge la necesidad de tener un middleware que nos permita correr aplicaciones sin importar que STB tengamos. El middleware es un software de conectividad, que ofrece un conjunto de servicios que hacen posible el funcionamiento de aplicaciones. Funciona como una capa de software, que se sitúa entre las capas de aplicaciones, proporcionando una API para la fácil programación. API es una interfaz de programación de aplicaciones(del inglés application programming interface) se trata de un conjunto de funciones y procedimientos (o métodos, en la programación orientada a objetos ) que ofrece cierta biblioteca, para ser utilizado por otro software como una capa de abstracción. Fue creado en Brasil por la Pontificia Universidade Católica de Río de Janeiro (PUC-Rio) y la Universidade Federal de Paraíba - UFPB; 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. El lenguaje NCL ha sido desarrollado utilizando una estructura modular, siguiendo los principios adoptados por el W3C -(WWW) World-Wide Web Consortium. Así, los módulos para la especificación de los conectores y las plantillas,son utilizados para la creación de documentos web. Es un 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. La Programación Declarativa , es un paradigma de programación que está basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla. Nested Context Language o lenguaje de contexto anidado
5. Lua se utiliza en muchas aplicaciones profesionales (por ejemplo, Photoshop Lightroom de Adobe),con énfasis en sistemas embebidos (por ejemplo, el middleware Ginga de televisión digital) y juegos (por ejemplo, World of Warcraft). Lua es actualmente el lenguaje de scripting más utilizados en juegos, tiene un sólido manual de referencia y hay destacados libros sobre el mismo. Diversas versiones de Lua han sido liberadas y utilizadas en aplicaciones reales desde su creación en 1993. Lua es un lenguaje de programación imperativa , estructurado y bastante ligero que fue diseñado como lenguaje de script con una semántica extendible. La programación imperativa , en contraposición a la programación declarativa es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican a la computadora cómo realizar una tarea.
6. STB (Set-Top-Box) Para que las señales de tv digital abierta que transmita Canal 7 (y luego el resto de las prestadoras) puedan ser reproducidas en nuestros televisores (recuerden que para una calidad suprema en la definición se necesitan displays -ya sea monitor o TV- que sean full HD, esto es, de 1080 líneas) hace falta un decodificador externo , que ya se encuentra a la venta en el país y lo fabrica un grupo de empresas locales. Próximamente saldrán al mercado TVs con set top box integrados .
7. El modelo de STB que ya se encuentra disponible en el mercado se denomina CDR 1000D. El decodificador ofrece la posibilidad de ver señales digitales estándar, y posee también salida puerto HDMI para alta definición y super vídeo. Integra un Flash de 64 MB, un micro ARM de 400 MHz, entrada Ethernet y ofrece interactividad por medio del middleware Ginga ; conexión a Internet y un Web browser por ahora muy limitado. El formato MP4 instalado tiene varias capas. En una se envía el stream de video y en la capa se datos, éstos se pueden enviar de varias maneras. En este caso, a través de un servidor llamado ‘The Carrousel’ . Entonces es posible la interactividad con el televisor sin necesidad de canal de retorno (conexión adicional a Internet). Por ejemplo, si se está viendo una noticia, se puede presionar un botón ‘Leer más’ y acceder a la noticia como si fuera un diario. Para otro tipo de interactividad sí es necesaria la conexión a Internet adicional . En un reality, para elegir quién se va de la casa desde el control remoto, por ejemplo, se debe apretar el botón rojo o el verde para la elección. Esto sí debe volver por Internet. Observación: El MP4 o MPEG-4 (no confundir con reproductor MP4) es un formato contenedor, especificado como parte del estándar internacional. Se utiliza para almacenar formatos audiovisuales, datos en archivos de computadoras y para transmitir flujos audiovisuales, etc. Existe una prestación denomidada On The Air , que permite cambiar el firmware automáticamente a través del canal. Por ejemplo, se avisa en qué día y hora se va a actualizar el firmware de determinados productos y, a través de The Carrousel, el STB modifica el software, sin necesidad de acceder a Internet. Firmware o programación en firme, es un bloque de instrucciones de programa para propósitos específicos, grabado en una memoria de tipo ROM (no volátil).
8. ¿programar en Ginga-NCL? Estructuración básica de un entorno de desarrollo Ginga es una cualidad, casi indefinible,de movimiento y actitud que poseen los brasileños y que es evidente en todo lo que hacen. La forma en la que caminan, hablan, bailan y se relacionan con todo en sus vidas. La ginga es además, un movimiento fundamental de la capoeira, una forma de lucha por la libertad y la igualdad. Comunidade Ginga
9. El entorno de desarrollo es el conjunto de herramientas que tiene por objeto prestar asistencia a la codificación,ejecución y visualización, de nuestras aplicaciones interactivas. Comenzamos por disponer de un editor dedicado para programar en NCL : Composer Requisito: Java Runtime Environment (JRE) 6 o superior Para codificar nuestras aplicaciones vamos a utilizar el IDE : Eclipse Un entorno de desarrollo integrado o IDE (acrónimo en inglés de integrated development environment), es un programa informático compuesto por un conjunto de herramientas de Programación. Eclipse es un entorno integrado, muy popular, de código abierto y multiplataforma desarrollado en Java . En el IDE deberá instalarse un plug-in: el eclipse NCL que tiene por objeto acelerar el desarrollo de aplicaciones para la TV digital interactiva en NCL.
10. Vamos a utilizar además una herramienta indispensable: Emulator El "Ginga NCL emulador" es la herramienta que nos permitirá visualizar nuestra aplicación NCL en el PC. En el IDE deberá instalarse también el plug-in: eclipse Lua para el desarrollo de aplicaciones en el lenguaje de programación Lua Emulator en acción
11. El Composer es el entorno de edición dedicado a la creación de programas declarativos en NCL para la televisión digital interactiva . En esta herramienta, las abstracciones están definidas en los distintos tipos de puntos de vista, que permiten simular un tipo específico de edición. 1 : estructural, 2 : layout, 3 : temporal y 4 : textual. Conociendo Composer
12. En la captura de pantalla, vemos la interfaz de Eclipse, en el momento de abrir una presentación NCL con el Ginga-NCL-Emulator. Conociendo Eclipse
13. Podemos ejecutar el Ginga-NCL en un Virtual STB Una alternativa necesaria es instalar como máquina virtual: Vmware Server . VMware es un sistema de virtualización por software. Un sistema virtual por software es un programa que simula un sistema físico: un ordenador, un hardware; en este caso un STB . Cuando se ejecuta el programa simulador, proporciona un ambiente de ejecución similar a todos los efectos de un STB físico. Para ejecutar el Ginga-NCL Virtual STB bastará con abrir el VMware Player , hacer clic en Abrir una máquina virtual existente, navegar a la carpeta donde ha descomprimido la imagen y hacer clic en el archivo-FC7 fedora-ginga-i386.vmx .
14. Abriendo la máquina virtual existente En este caso: nuestro STB, que contiene un Sistema Operativo Linux Fedora de Red Hat
15. Pero hace falta algo más. Para acceder a nuestro Ginga-NCL Virtual STB necesitamos hacerlo, a través de una conexión SSH. En Windows para abrir una conexión con la máquina virtual, es posible hacer uso de los programas de Putty SSH Secure Shell Client. Linux ya ofrece el cliente SSH instalado. SSH : (Secure SHell, en español: intérprete de órdenes segura) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos. Consola de comando de windows y Putty SSH
16. 10 Enlaces útiles: http://www.grupogingagoias.com.br/esp/index.php http://grupogingagoias.wordpress.com/ http://www.ginga.org.br/ http://clube.ncl.org.br/ http://www.gingadf.com/blogGinga/ http://imasters.uol.com.br/artigo/11712/tvdigital/o_que_e_o_ginga_ncl_emulator/ http://laws.deinf.ufma.br/~ncleclipse/es/index.htm http://www.softwarepublico.gov.br/dotlrn/clubs/ginga/gingancl/xowiki/weblog http://tdtargentina.ning.com/group/ginga http://wiki.ginga.org.ar/doku.php Observación: presentación realizada en Buenos Aires, con actualización al 8 de agosto del 2010, para complementar el módulo 6 – Trabajo Integrador – Grupo 6, del curso E-learning – Profesores para el Futuro – UTN FRBS. Críticas, opiniones e intercambio de información al respecto del tema, escribir a: [email_address]