http://mhproject.org/media/blogs/mhpenlaces/Interno/Presentaciones/Television y Multimedia/Television y Multimedia TVDi.ppt

Anuncio
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
Descargar