Televisión y Multimedia La Televisión Digital Interactiva 1 Un poquito de vocabulario... • • • • • • Elementary Stream Event Service Multiplex Bouquet Network 2 Elementary Stream... • Un Elementary Stream (ES), es un stream de vídeo, audio o datos binarios codificados en MPEG-2 3 Event... • Un evento es un programa de televisión. • Contiene varios ES, que pueden ser de tipos diferentes o no. 4 Service... • Un servicio es un canal de TV • Un servicio ofrece varios eventos, uno detrás de otro • El número de ES puede variar, así como sus características • MPEG-2 llama program a lo que DVB llama service 5 Un servicio es un conjunto de streams... •Video Streams •Audio Streams •Data Streams •SI •Datos privados •DSM-CC OC •Aplicaciones 6 Multiplex... • Conjunto de servicios multiplexados en MPEG-2 • Cada multiplex viaja en una frecuencia diferente • Bit rate < 40 Mbits/s 7 Multiplex... Video 3-5 Mbps Audio 0.2 Mbps DSMCC 1 Mbps 8 Transport Stream, Program Stream... 9 Bouquet... • Grupo de servicios (canales de tv) agrupados lógicamente (paquete de fútbol, paquete de cine...) • De esta manera podemos tener en cada paquete mas canales o menos de los que caben en un multiplex, y seguir manteniéndolos ordenados sin bajar la eficiencia 10 Network... • Cada operador tiene una red – BBC, Canal Satélite, Sky... • Cada operadora puede transmitir mas de un multiplex • No es necesario que la operadora sea propietaria del medio de transmisión 11 Implantación de la TVDi en Europa • Cuatro cuestiones fundamentales Sociedad Economía Diversidad Europea Tecnología 12 Implantación de la TVDi en Europa Sociedad • ¿Está la sociedad Europea preparada para la TVDi? • Hay que vencer la cultura de la gratuidad – ¿Por qué estamos dispuestos a pagar? • No “vendo” publicidad, vendo servicios y paquetes de programas. 13 Implantación de la TVDi en Europa Economía • Transición a TVD es muy cara • Se abren nuevas líneas de negocio – Repetir formulas anteriores no es garantía de éxito • Mensajitos, apuestas en eventos deportivos, comics por teléfono... – T-Commerce – Publicidad Interactiva 14 Implantación de la TVDi en Europa Diversidad Europea (i) • Requisito para el éxito de la TVDi, coordinación de normativas y planes • El liderazgo debería corresponder a las autoridades europeas, pero son las grandes empresas del sector las que llevan la iniciativa 15 Implantación de la TVDi en Europa Diversidad Europea (ii) • Cada estado tiene su propio plan de implantación – Apagón analógico • España, 2012 • Gran Bretaña, 2006 – 2010 – Francia, TVDi no antes del 2004 • Cadenas públicas deberían llevar el liderazgo (como en GB con la BBC) 16 Expansión DVB... 17 Implantación de la TVDi en Europa Tecnología • Tres cuestiones fundamentales – Diferentes sistemas de distribución • Cable, Satélite, Terrena, Internet – Estándar abierto de codificación de aplicaciones: MHP – Renovación del equipamiento doméstico 18 Implantación de la TVDi en Europa. Tecnología Sistemas de Distribución • Diferentes culturas y orografías hacen que unos sistemas se desarrollen más que otros • DVB-T, DVB-S, DVB-C 19 Implantación de la TVDi en Europa. Tecnología Sistemas de Distribución Cable • Ideal para la TVDi – Canal de retorno de banda ancha • Gran implantación en norte de Europa, baja en el sur • Ventaja sobre el satélite y la TVD-T – Mayor calidad de servicio – Permite ofrecer simultáneamente • Televisión Digital Interactiva • Teléfono • Internet 20 Implantación de la TVDi en Europa. Tecnología Sistemas de Distribución Satélite y Terrestre • Desventaja fundamental canal de retorno – Via Modem. Lento y engorroso. – No ofrece interactividad real. Solo local. • No encuentra mercado que justifique la inversión. Ejemplos en España: – Fusión plataformas digitales (satélite) – Fracaso de QuieroTV (terrena) 21 Implantación de la TVDi en Europa Tecnología • Tres cuestiones fundamentales – Diferentes sistemas de distribución • Cable, Satélite, Terrena, Internet – Estándar abierto de codificación de aplicaciones: MHP – Renovación del equipamiento doméstico 22 Implantación de la TVDi en Europa. Tecnología Estándar abierto de codificación aplicaciones • Hoy en día, cada operador de TVDi trabaja con un estándar diferente • Antes de nada, dos cuestiones: – ¿qué es una API? – Mercado Vertical Vs Mercado Horizontal 23 ¿Que es una API...? • ¿Hardware? • ¿Software? • ¿Middelware? Una API (Application Programming Interface) define una interfaz entre las aplicaciones interactivas y el terminal en el que se ejecutan (receptor) 24 Middleware Propietario: API Aplicación Aplicación --- Aplicación Aplicación Middleware Sistema Operativo Drivers de los dispositivos Sistema de Acceso Condicional (CA) STB Hardware 25 Hardware, software, API´s... 26 ¿Donde se situa la API MHP...? Aplicación Aplicación --- Aplicación Aplicación MHP (Application Programming Interface) Middleware Sistema Operativo Drivers de los dispositivos Sistema de Acceso Condicional (CA) STB Hardware 27 ¿Porque MHP? Mercado Vertical Vs Mercado Horizontal 28 Hoy en día: mercado vertical... Desarrollador de Contenido Desarrollador de Aplicaciones Broadcaster Fabricador de Receptor Operadora de Red Suministrador de Middelware Consumidor 29 Objetivo: mercado horizontal... Desarrollador de Contenido Desarrollador de Aplicaciones Broadcaster Broadcaster Broadcaster Broadcaster Operadora de Red Operadora de Red Operadora de Operadora deRed Red Consumidor Fabricador de Receptor Suministrador de Middelware 30 Implantación de la TVDi en Europa. Tecnología Estándar abierto de codificación aplicaciones • MHP define una interfaz genérica entre las aplicaciones y los receptores (por lo tanto es una API...) • Hoy en día todo el mundo está migrando a MHP (o ha hecho la promesa de hacerlo...) • Las empresas de middleware propietario están desarrollando plug-ins, para permitir la migración a MHP 31 Implantación de la TVDi en Europa. Tecnología Estándar abierto de codificación aplicaciones • Aparecen las primeras authoring tools – Herramientas software para el desarrollo de aplicaciones – Enorme reducción de tiempo y esfuerzo 32 Gráficamente... Authoring Tool --Aplicación Aplicación --- Aplicación Aplicación MHP (Application Programming Interface) Plug In Middleware Sistema Operativo Drivers de los dispositivos Sistema de Acceso Condicional (CA) STB Hardware 33 Implantación de la TVDi en Europa Tecnología • Tres cuestiones fundamentales – Diferentes sistemas de distribución • Cable, Satélite, Terrena, Internet – Estándar abierto de codificación de aplicaciones – Renovación del equipamiento doméstico 34 Implantación de la TVDi en Europa. Tecnología Renovación del equipamiento doméstico • Soluciones posibles – Televisión digital integrada – STB (Set Top Box) • Existen varias empresas con middleware incompatible. Se frena la compra de equipos. • MHP – Objetivo de los broadcasters es que los usuarios compren el STB – Habrá varias gamas de los mismos, para llegar a todos los públicos 35 Multimedia Home Platform... Multimedia Home Platform... 36 Requerimientos del nuevo estándar... • Basado en estándares abiertos • Independiente de los diferentes sistemas operativos y hardwares • Se tiene que proporcionar ayuda para facilitar las migraciones de los estándares • Permitir compatibilidad futura “hacia atrás” (lo viejo compatible con lo nuevo) • Dar suficiente información a los fabricantes, para que puedan evaluar si cumplen con MHP 37 Grupos de trabajo MHP... • DVB-TAM (Technical Aspects of MHP) – Especificaciones técnicas. Ajuste a requerimientos técnicos. • MEG (MHP Experts Group) – Tests de conformidad con MHP. • MUG (MHP Umbrella Group) – Soporte a organizaciones fuera de MHP que quieran alcanzar algún tipo de interoperabilidad. 38 MEG (MHP Experts Group)... Tests de conformidad con MHP Aprobado por el DVB Steering Board 3 de Julio de 2002 39 Proposiciones iniciales a DVB-TAM... • • • • • Todas ellas son middleware propietario MHEG-5 OpenTv MediaHighway Liberate mas... 40 Todas tienen algo en común... JAVA!! ¿qué es JAVA? • Lenguaje de programación orientada a objetos, de propósito general • JRE (Java Run-time Environment) – JVM (Java Virtual Machine) – Paquetes (conjunto de librerías) • Byte Code – El código fuente se compila generando un byte code capaz de correr en cualquier máquina que implemente la JVM. Esta MV puede ser implementada en software por cualquier computadora con suficientes recursos. 41 ¿porqué JAVA? • Los broadcasters, están convencidos de la necesidad de convergencia entre internet y la televisión digital – Java contiene protocolos de red – JAVA proporciona seguridad ante ataques intencionados o no. • JAVA funciona en cualquier hardware y con cualquier sistema operativo 42 MHP apuesta por JAVA. DVB-J... • Ventajas: – Mayores funcionalidades – Mas flexibilidad • Desventajas: – Mayor complejidad y coste económico • Mayor tiempo de desarrollo • Los otros sistemas podrían aprovechar para asentarse... 43 JAVA. Clases e Interfaces... Todo son objetos NombreClase NombreInterfaz Constructor o parámetros Constructor o parámetros método1() método1() método2() método2() --- --- Relaciones entre Clases o Interfaces: Subclase o Subinterfaz Parámetro Generación Guardadas lógicamente en paquetes 44 (librerías) JAVA. Listeners y Events... NombreEvent NombreEventListener Constructor o parámetros Constructor o parámetros subscribe(NombreEventListener) método1() método2() método2() --- --- EventListeners Implementados por el receptor Las aplicaciones se suscriben a ellos para tener acceso a los eventos (que se generan de manera asíncrona) 45 Seguridad en MHP... • • • • Mecanismos JAVA estándar Autentificación de aplicaciones Sistema de permisos Seguridad en el canal de retorno 46 Seguridad en MHP... • Mecanismos JAVA estándar – JCV (Java Code Verifier) • Escanea el código en busca de instrucciones ilegales – Java Class Loaders • Clase residentes Vs otras clases 47 Seguridad en MHP... The Java language specification states that two classes are only identical if their fully-qualified name is the same (e.g. java.lang.String) and they are loaded through the same classloader Cada aplicación tiene que tener un classloader dedicado. Primero intento cargar del classloader del sistema, y si no puedo utilizo el mío 48 • Autentificación de aplicaciones Seguridad en MHP... – Sistema de firma y certificado de aplicaciones – No es obligatorio 49 Seguridad en MHP... • Sistema de Permisos – Las aplicaciones firmadas y autentificadas, pueden pedir acceso a recursos escasos 50 Seguridad en MHP... • Seguridad en el canal de retorno – Seguridad estándar Java para conexiones de internet 51 Perfiles MHP... • Enhanced Broadcast • Interactive Broadcast • Internet Access Profile 52 Perfiles MHP... 53 Perfiles MHP... • MHP Enhanced Broadcast (MHP 1.01) – No existe canal de retorno – Solo interactividad local – Restricciones en tipos de imágenes JPEG • MHP Interactive Broadcast (MHP 1.02) – Canal de retorno vía IP – Mid-level communications API – Elimina restricciones en imágenes JPEG – DSM-CC sobre IP opcional • MHP Internet Access (MHP 1.1) – Aplicaciones residentes en STB para acceso a servicios de internet (www, e-mail...) – Permite links entre ambos mundos 54 Perfiles MHP... 55 Requerimientos Hardware del STB... 56 Costes MHP... 57 Sony, Philips, Panasonic... Futuras ampliaciones... Grabadoras de video personales. Home Networks. Servicios de broadband IP. Soporte para transmisiones de video/audio alternativas (streaming de MPEG-4). Un perfil de MHP para comunicaciones móviles. 58 Aplicaciones MHP... • DVB-HTML – Solo están definidas en MHP 1.1 – Por ahora no son muy populares • DVB-J – Son llamadas Xlets – Escritas en JAVA – Parecidas a las Applets • Permiten a un agente externo (application manager) controlar su ciclo de vida. 59 Aplicaciones MHP... • Una aplicación no es otra cosa que una serie de objetos, ordenados en una estructura de directorios • Main Class 60 Control de las aplicaciones... • Application Manager • AIT (Application Information Table) 61 Application Manager... • Monitoriza y controla las app´s • Middelware • Pero, antes de nada... AIT Receptor tiene que saber que la aplicación existe Usuario tiene que tener permiso para usar la aplicación Tenemos que poder acceder a todo lo que necesita la aplicación 62 ¿Que es una Xlet...? Xlet Lifecycle Interfaz Xlet XletContext 63 Xlet: Lifecycle... pauseXlet() initXlet() loaded startXlet() paused started destroyXlet() destroyXlet() destroyed destroyXlet() 64 Xlet. Diagrama de clases... Xlet XletContext initXlet(XletContext) notifyDestroyed() startXlet() notifyPaused() pauseXlet() resumeRequest() destroyXlet() getXletProperty() Paquete javax.tv.xlet Xlet Class: XletContext Class: Creada por la aplicación. Creado por el middelware. Métodos llamados por el Application Manager. Métodos llamados por la aplicación. Sin embargo los métodos son implementados por la aplicación. Notifica al Application Manager de cambios en el estado de la Xlet, o los pide. 65 Pero... ¿Donde viaja la Xlet? • DVB Data Broadcasting • DSM-CC Object Carousel 66 DVB Data Broadcasting... 67 DSM-CC Data Carousel... Ficheros Módulos Bloques Un Fichero Un Módulo Un Módulo Varios DDB 68 DSM-CC Object Carousel... File Objects Directory Objects Stream Objects DSM-CC Object Carousel... Tipos de Objetos Object Stream Stream Event File Directory Service Gateway 70 DSM-CC Object Carousel... Tipos de Objetos en detalle 71 DSM-CC Object Carousel... En un módulo del Data Carousel podemos introducir varios objetos del Object Carousel. La distribución de los mismos es un arte... Mensajes BIOP... Cabecera BIOP Contenido del Objeto • A cada objeto en el object carousel se le añade una cabecera. • Un mensaje BIOP tiene dos partes: – Cabecera • Longitud • Tipo (Directory, File, Stream, Stream Event...) • Clave – Datos enviados en el mensaje • BIOP (Broadcast Inter Object Request Broker Protocol) 73 Carruseles dinámicos o estáticos... 74 Señalización de Aplicaciones • DSI (Download Server Initiate) – Transporta la información referente al Service Gateway • DII (Download Info Indication) – Transporta toda la información referente a los módulos del Object Carousel • Secciones con table_id = 0x3B 75 AIT Application Information Table • Una por cada servicio que contenga aplicaciones • Controla dos problemas – Receptor tiene que saber que la aplicación existe. – Usuario tiene que tener permisos para ejecutar la aplicación. 76 AIT Campos principales del bucle de aplicación... • Application ID – Organization ID (32 bits) – Application ID (16 bits) • Application Control Code – – – – AutoStart Present (but not auto started) Destroy Kill 77 Señalización común a toda aplicación MHP Tabla PMT... PMT Bucle Principal Bucle de ES: Application Signalling Descriptor Bucle de ES: .... • ES en el que viaja la AIT • Tipo de aplicaciones 78 Señalización común a toda aplicación MHP AIT Bucle Principal Transport Protocol Descriptor • Protocol Bucle de aplicación: • Remote connection Application Descriptor Bucle de aplicación: .... • Visibility • Priority • Profile Application Name Descriptor • Nombre de la aplicación 79 Señalización adicional, aplicación DVB-J AIT Bucle Principal Bucle de aplicación: Bucle de aplicación: .... • Parámetros DVB-J Application Descriptor DVB-J Application Location Descriptor • Initial Class Name • Base Directory 80 • Classpath Extension Descriptores Adicionales en la PMT PMT • Todos ellos en el bucle del elementary stream que transporta el DSI Bucle Principal Carousel Identifier Descriptor Bucle de ES: Bucle de ES: .... Data Broadcast ID Descriptor Association Tag Descriptor • If USE = 0 ES del DSI 81 Descriptores Adicionales en la AIT AIT Bucle Principal External Application Authorisation Descriptor Bucle de aplicación: DII Location Descriptor Bucle de aplicación: .... Prefetch Descriptor 82 AIT External Application Authorisation Descriptor... Cuando cambiamos de servicio: • • • • Service bound? New service, Auto-start Application Authorization Descriptor No señaladas? Kill 83 Multimedia Home Platform... Multimedia Home Platform... 84 Problemas que pretendemos resolver... • • • • • • Los recursos en el receptor son escasos Acceder a la AIT Control de aplicaciones por parte de otras aplicaciones Intercambio de objetos entre Xlets Control de gráficos Controlar el video y audio o Dentro de un Servicio o Cambiar de Servicio • • • • • Sincronización de las aplicaciones y el video/audio Cambiar de Transport Stream Acceder a las tablas de Service Information (SI) Acceder a secciones MPEG-2 Acceso al sistema de ficheros o Ficheros del Broadcast o Ficheros permanentemente almacenados • • • Interactuar con el usuario Acceso al canal de retorno Acceso a los módulos de Acceso Condicional (CA) 85 Categorias en las que se dividen las API´s... • • • • • • Acceso de bajo nivel a MPEG-2 Media Control Application lifecycle Gráficos Comunicación Otras... 86 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Graficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 87 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Graficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 88 Application Lifecycle control API... • AIT • Control de aplicaciones – Una aplicación puede afectar al “lifecycle” de otra 89 Diagrama de Clases... AppAttributes AppDatabase genera getAppId(AppDatabaseFilter) getName() get...() getAppAttributes(AppId) getAppProxy(AppId) addListener(AppDatabaseEventListener) parámetro AppProxy pause() start() AppDatabaseFilter stop() resume() subclase CurrentServiceFilter addApplicationStateChangeEventListener() RunningApplicationFilter subinterfaz DVBHTMLProxy DVBJProxy 90 Application lifecycle. Listeners, events... AppDatabase genera AppProxy getAppAttributes() pause() getAppProxy() start() addListener(AppDatabaseEventListener) stop() resume() addApplicationStateChangeEventListener() escucha escucha AppDatabaseEventListener recibe AppDatabaseEvent AppStateChangeEventListener recibe AppStateChangeEvent 91 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 92 Resource Management API... • Recursos limitados en receptor • Mecanismo de indirección 93 Resource management. Diagrama de Clases... ResourceClient ResourceServer requestRelease(ResourceProxy) addResourceStatusEventListener() release(ResourceProxy) removeResourceStatusEventListener() notifyRelease(ResourceProxy) El application manager, llamando a estos métodos, notifica a la aplicación que el recurso al que hace referencia el ResourceProxy necesita ser liberado escucha ResourceStatusListener statusChanged(ResourceStatusEvent) ResourceProxy getClient() Cada API luego añade métodos especificos para el control del recurso recibe ResourceStatusEvent 94 Resource Notification API. Como acceder a un recurso. Aplicación crear... Resource Proxy (Cliente de recurso) Petición de acceso al recurso Validación del Proxy Acceso al recurso Servidor de Recurso 95 Resource Notification API. Como liberar un recurso. Aplicación Recurso en uso... Resouce Proxy (Cliente de recurso) Petición de Liberación de recurso El servidor invalida el proxy Perdemos acceso al recurso Servidor de Recurso 96 Resource Notification API. Perdida de recurso. Aplicación Recurso en uso... Resouce Proxy (Cliente de recurso) No existe El servidor ninguna decidePetición liberar El servidor de Liberación el recurso de invalida el proxy recurso diseñado en middelware Perdemos acceso al recurso Servidor de Recurso 97 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 98 API de Control de Gráficos... • • • • • • Pixel Aspect Ratio Video Aspect Ratio Transparencias Espacio de Colores Window Manager Interfaz con el usuario 99 Modelo de graficos MHP... Background Layer Graphics Layer Video Layer 100 HScreen: referencia al recurso fisico... 101 HScreen. Preferencias y Prioridades... • Preferencias • Prioridades De esta forma el receptor tiene un grado de flexibilidad para adaptarse a las configuraciones de los diferentes dispositivos – – – – – Required Preferred Unnecesary Preferred_not Required_not 102 Sistema de coordenadas MHP... Normalized Coordinates Screen Coordinates AWT coordinates 103 HScene Vs Frame... • Window Manager • HScene – – – – – Jerarquía AWT Una aplicación, una HScene O mejor: Una HScene por cada HScreen Controlamos funcionalidades propias de TV Prioridades y Preferencias 104 Gráficos. Cuestiones de alto nivel... • Formatos – – – – – Gif Png Jpeg Mpeg I-Frame • Subtitulos – DVB Subtitles – DVB Teletext Subtitles 105 Gráficos. Colores y transparencias... • Java RGB Vs TV YUV – La conversión se realiza a mas bajo nivel. No nos preocupa. • DVBColor Class – Definimos color – Definimos grado de transparencia 106 Gráficos. MHP widget set... • ¿Que es un widget? • El paquete AWT se recorta • El paquete org.havi.ui añade una serie de widgets para compensar esa falta • Podemos escribir nuestras propias widgets 107 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Graficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 108 Acceso al canal de retorno... • Servidor TCP/IP y solo TCP/IP • Conexión no permanente 109 Return Channel Session Management API... RCInterfaceManager genera RCInterface getInterface() getInterfaces() implementa ResourceServer ConnectionParameter subclase utiliza ConnectionRCInterface Number connect() User name disconnect() Password release() DNS setTarget() getTarget() setTargetToDefault() getUserName() getPassword() setTarget() getDNSServer() implementa ResourceProxy 110 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 111 Interaccionar con el usuario... • Solo tenemos el mando a distancia • Evento AWT implica aplicación focalizada (en pantalla) • Pero MHP no permite que las Hscenes se superpongan... org.dvb.event • Acceso exclusivo 112 User Input Event Handling. Diagrama de clases... ResourceProxy implementa UserEventRepository ResourceServer implementa utiliza EventManager addKey() addUserEventListener() addUserEvent() addExclusiveAccessToAWTEvent() subclase OverallRepository crea escucha UserEventListener userEventReceived() UserEvent Source Family Type Code Modifier When getCode() get...() 113 Mecanismo de interacción con el usuario. Usuario aprieta un botón si ¿evento en repository? ¿evento exclusivo? no Enviar evento no-AWT a las aplicaciones que lo hayan solicitado si no ¿Hay alguna aplicación focalizada? no si Enviar evento AWT a la aplicación focalizada ¿Pedido por aplicación AWT? si Enviar evento AWT a la aplicación si está focalizada no Enviar evento no-AWT a la aplicación El evento puede estar en un repository, aunque haya una aplicación focalizada. Además, puede estar marcado como exclusivo en un repository y en otro no. Enviar evento AWT al navegador 114 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 115 Comunicación entre Xlets... • Classloaders en MHP • RMI (Remote Method Invocation) 116 Classloaders en MHP... The Java language specification states that two classes are only identical if their fully-qualified name is the same (e.g. java.lang.String) and they are loaded through the same classloader Cada aplicación tiene que tener un classloader dedicado. Primero intento cargar del classloader del sistema, y si no puedo utilizo el mío 117 RMI. Remote Method Invocation... • RMI definido para la red (TCP/IP) – Stub Clases – Sobrecarga del receptor • Extensiones a RMI (org.dvb.io.ixc): – IxcRegistry Class IxcRegistry Class Las aplicaciones exportan objetos cuando quieren compartirlos. Las aplicaciones que necesiten esos objetos tienen que importarlos. Todo el proceso es a nivel local. bind() lookup() list() rebind() unbind() 118 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 119 Acceso al Sistema de Ficheros... • DSM-CC API – Acceso al Broadcast FileSystem • Persistent Storage API 120 DSM-CC Broadcast Filesystem... • Problemas de latencia – Se usa mucho se trasmite a menudo – Avisar con tiempo • Cache – FROM_CACHE – FROM_CACHE_OR_STREAM – FROM_STREAM_ONLY • java.io Vs org.dvb.dsmcc 121 DSM-CC API. Diagrama de clases... ServiceDomain crea DSMCCObject attach() asynchronousLoad() detach() synchronousLoad() getMountPoint() loadDirectoryEntry() prefetch() unload() addObjectChangeEventListener() utiliza AsynchronousLoadingEventListener ObjectChangeEventListener receiveEvent() receiveEvent() escucha escucha AsynchronousLoadingEvent ObjectChangeEvent getSource() getSource() 122 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 123 Persistent Storage API... • No esta garantizada su existencia – Una aplicación puede guardar ficheros en memoria persistente • El receptor crea un directorio para cada aplicación • Los ficheros almacenados – Permisos • Owner (aplicacion) • Group (organizacion) • World – Expiration Rate – Prioridad 124 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 125 MPEG-2 Section Filter API... • MPEG-2 Private Sections • Cuestiones fundamentales – Recepción Asíncrona – Listeners MHP permite filtrados positivos, negativos e incluso positivos y negativos a la vez 126 MHP define tres tipos de filtros... • Simple Section Filter • Ring Section Filter – setEmpty() method • Table Section Filter El filtro “real” puede ser hardware o software. Eso a la API le da igual. 127 Ring Section Filter... Slot Sección Vacio Slot Sección Vacio Slot Sección Vacio Sección setEmpty() Slot Vacio Sección Slot Vacio Sección Slot Vacio La llamada al método setEmpty() es responsabilidad de la aplicación. 128 MPEG-2 Section Filter API... ResourceProxy SectionFilterGroup implementa newRingSectionFilter() ResourceServer attach() detach() Crea, destruye... SectionFilter startFiltering() usa SectionFilterListener SectionFilterUpdate() addSectionFilterListener() getMountPoint() subclase TableSectionFilter RingSectionFilter SimpleSectionFilter getSections() getSections() getSection() devuelve Section table_id() section_number() 129 MPEG-2 Section Filter API... implementa SectionFilterListener sectionFilterUpdate(SectionFilterEvent) aplicación escucha SectionFilterEvent sectionFilterEvent(SectionFilter) subclase SectionAvailableEvent EndOfFilteringEvent VersionChangeDetectedEvent subclase IncompleteFilteringEvent TimeOutEvent 130 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 131 Acceso a Tablas de SI... • La llegada es asíncrona • No accedemos a la AIT 132 Diagrama de clases... SIDatabase SIRetrievalListener retriveSIService(SIRetrievalListener) postRetrievalEvent(SIRetrievalEvent) libera libera SISuccesfulRetrieveEvent SIRequest Extends cancelRequest() SIRetrievalEvent getResult() libera SIIterator SIInformation ...etc subinterfaz SIEvent nextElement() PMTBouquet SITime SINetwork 133 Proceso que se sigue para la obtencion de SI... Aplicación Petición de SI SIRequest retriveSIService() o cualquier otro... Notificación de petición recibida La clase SIDatabase nos da información de toda la SI de una red SIDatabase SISuccesfulRetrieveEvent Notificación de recepción de tabla 134 Proceso que se sigue para la obtención de SI... SIInformation getResult() SISuccesfulRetrieveEvent Aplicación nextElement() SIIterator 135 No siempre se puede acceder a las tablas... Eventos que se liberan ante una petición: (todos ellos son subclases de SIRetrievalEvent) •SILackOfResourcesEvent •SIRequestCancelledEvent •SITableNotFoundEvent •SIObjectNotInTableEvent •SINotInCacheEvent •SISuccesfuRetrieveEvent 136 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 137 Media Control API´s... • JMF (Java Media Framework) – Cambiar de media (video/audio) • JavaTV Service Selection API – Cambiar de Servicio • Tuner Control API – Cambiar de Transport Stream 138 MHP Locators... • Referencia a los diferentes contenidos del stream DVB • Hay varios tipos: – Javax.media.MediaLocator – Javax.tv.locator.Locator – Org.davic.net.Locator • Su construcción es responsabilidad de cada implementación en concreto 139 MHP Locators... DVB URL format: dvb://<onID>.<tsID>.<sID>[.<ctag>[&<ctag>]] [;<evID>][<path>] Javax.media.MediaLocator Javax.media.MediaLocator toExternalForm() Javax.media.MediaLocator URL Javax.media.MediaLocator toExternalForm() Javax.media.MediaLocator Javax.media.MediaLocator 140 Diferentes contenidos en MHP... • DVB service – URL: dvb://<onID>.<tsID>.<sID>[.<ctag>[&<ctag>]][;<evID>][<path>] • MPEG audio clips – MPEG-1 audio. – Típicamente viaja en un OC. – URL: file:// • Video drips – Trocito de video codificado en MPEG-1 – Nos evitamos transmitir toda la señal – URL: dripfeed:/ 141 Formatos de imágenes MPEG... La imágenes I se decodifican por si mismas Las imágenes P se decodifican a través de otras imágenes P o I Las imágenes B no propagan los errores, porque a través suya no se 142 decodifica ninguna otra imagen Video drips... I Frame: Imagen completa P Frame: Solo transmitimos la actualización a la I frame anterior Imagen final La aplicación alimenta el receptor con imágenes de tipo P Integra la I frame inicial con la actualización (P frame) 143 JMF. Java Media Framework... • Player Object – Audio o Video • Control Object – No modifica el estado del Player – Añade funcionalidades extra • DataSource Object – Como el mount de linux – Independiza el cómo del qué 144 Players, Controls y DataSources... Audio Player DSMCCObject DataSource Volumen Control Video Player1 Persistent Storage DataSource Video Format Control Video Player2 Es necesario asociar un DataSource al player para poder crearlo 145 Estados de un Player... deallocate() realized prefetching prefetched prefetch() start() stop() realizing realice() starting deallocate() stop() unrealized started 146 Controladores... • Extensión añadida a la clase player, para crear nuevas funcionalidades • Un clase controlador puede controlar varios players • No afecta al estado del player!! • Ejemplos: – – – – – VideoFormatControl MediaSelectControl AWTVideoSizeControl BackgroundVideoPresentationControl LanguageControl 147 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 148 JavaTV Service Selection API... • Seleccionamos un servicio • Service Context 149 Un servicio es un conjunto de streams... •Video Streams •Audio Streams •Data Streams •SI •Datos privados •DSM-CC OC •Aplicaciones 150 Service Context... •Entorno de un Servicio •El número de Service Context que podemos crear depende del receptor •Necesito al menos: •Tuner •MPEG decoder 151 JavaTV service selection API... ServiceContextFactory crea ServiceContext createServiceContext() select(service) getServiceContext(XletContext) stop() destroy() addListener() utiliza ServiceContextListener receiveServiceContextEvent() La aplicación crea un service context, y luego cambia el servicio que presenta en el mismo. Es posible que cambiemos a un servicio en que nuestra aplicación no esté permitida escucha ServiceContextEvent 152 Service Context Lyfecycle... Aplicación Not Presenting select() createServiceContext() Destroyed select() stop() select() Presentation Pending destroy() Presenting 153 Eventos que puede recibir la aplicación... stop() ServiceContextEvent Operación de Tuning Recursos Retirados Retirada autorización AC subclase PresentationTerminatedEvent SelectionFailedEvent subclase ServiceContextDestroyEvent PresentationChangedEvent subclase AlternativeContentEvent NormalContentEvent 154 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 155 Tuner control API... • Cambiar Transport Stream (multiplex) – Normalmente para acceder datos • TransportStream Class Vs Locator – Referencia al tipo de interfaz (satélite, terrestre o cable) 156 Contenidos del multiplex... TransportStream Service ElementaryStream retriveService() retriveElementaryStream() getPID() getTransportStreamId() getTransportStream() getService() subclase DvbTransportStream subclase DvbService subclase DvbElementaryStream getNetworkId() Mediante estas clases hacemos referencia a los contenidos de un multiplex MPEG, pero relacionandolos con el tipo de red de acceso. Los locators no dan esa informacion. 157 The tuning API... ResourceServer ResourceProxy implementa NetworkInterfaceController tune(TransportStream) reserve(NetworkInterface) implementa NetworkInterfaceManager getNetworkInterface(TransportStream) getNetworkInterfaces() release() genera controla NetworkInterface getCurrentTransportStream() listAccesibleTransportStreams() getDeliverySystemType() Solo una aplicación, en cada momento, tiene acceso al controlador StreamTable getTransportStreams(Locator) listTransportStreams() 158 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 159 Sincronizar aplicaciones y media... • Queremos sincronizar aplicaciones y el media – Stream Events • No existe una referencia temporal en una trama MPEG-2 – NPT (DSM-CC Normal Play Time) 160 NPT (DSM-CC Normal Play Time) • Viaja en secciones privadas MPEG-2 • Introducida por el broadcaster • Dos grandes ventajas. – Admite discontinuidades – Jerarquización NPT Valor NPT Identificador 161 NPT. Discontinuidades, jerarquias... 162 DSM-CC Stream Events... • Stream Event en Object Carousel... • Stream Event en Broadcast Stream... Stream Event (broadcast) Stream Event (carousel) NPT(referencia temporal) Identificador Identificador Podemos recibir varios Stream Events en el broadcast stream, que se correspondan con un mismo Stream Event 163 en el object carousel DSM-CC Stream Events... Stream Event (carousel) Identificador Stream Event (broadcast) NPT(referencia temporal) Identificador 164 Diagrama de clases. Stream Events... DSMCCObject constructor Aplicación crea DSMCCStreamEvent DSMCCStreamEvent(DSMCCObject) subscribe(EventName, StreamEventListener) getEventList() constructor Notifica la llegada del Stream Event Se subscribe a un evento, indicando el listener para la notificación StreamEvent StreamEventListener StreamEvent(DSMCCStreamEvent) receiveStreamEvent(StreamEvent) getEventNPT() Llegada de un Stream Event getEventId() 165 Application Lifecycle Gráficos Acceso AIT comunicar APP Control de Gráficos Cambiar de Transport stream Acceso canal Retorno Interaccionar con usuario Recursos escasos en receptor Sincronizar Aplicaciones y Media Cambio de servicio Media Control Intercambiar datos entre Xlets Acceso a módulos CA Acceso a Secciones MPEG2 Control de V/A Dentro de un servicio Comunicación Acceso a ficheros Ficheros de Broadcast Acceso a Tablas de SI Almacenado Permanentemente Acceso Bajo Nivel MPEG-2 166 Acceso a módulos de CA... • Modulos de AC – Software – Hardware • Man Machine Interface 167 Acceso a los módulos de CA... ResourceServer ResourceProxy implementa CAModuleManager getModules() addCAListener() addMMIListener() implementa CAModule isConnectable() isDescramblable() DescramblerProxy startDescrambling() startDescrambingDialog() addDescramblerListener() Subscrito a... Subscrito a... CAListener MMIListener DescramblerListener receiveCAEvent() receiveMMIEvent() receiveDescramblerEvent() recibe CAEvent recibe MMIEvent recibe DescramblerEvent 168 MMI (Man Machine Interface). MMIEvents... MMIListener MMIEvent recibe getDialogId() receiveMMIEvent() getSource() subclase StartMMIEvent CloseMMIEvent startMMIEvent(MMIObject) constructor MMIObject close() subclase Text List getText() Enquiry getAnswer() setAnswer() Menu 169 Fin de la presentación, Mikel Sagues