Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación...

58
Control de medios en MHP Control de medios en MHP Leire Urriza Oiz

Transcript of Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación...

Page 1: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

Control de medios en MHPControl de medios en MHP

Leire Urriza Oiz

Page 2: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .2E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 3: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .3E.T.S de Ingenieros de Telecomunicación

Introducción: accediendo a contenidos (1/2)

Los contenidos accesibles por una aplicación MHP se pueden dividir en:Contenidos DVB Streaming

• Transport strems, servicios, elementary streams y eventos.

Contenidos del Object Carousel (broadcast file system)

• Archivos de audio o video.

Necesaria una estandarización de cómo el receptor accede a estos diferentes contenidos.

Page 4: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .4E.T.S de Ingenieros de Telecomunicación

Introducción: accediendo a contenidos (2/2)

Objetivo: crear referencias al Object Carousel útiles para:Diseñador de aplicaciones (que es el que escribe el

código que crea estas referencias)Middleware (que es el que realmente las usa)

Primera aproximación:Usar una URL. Pero la clase java.net.URL fue

diseñada pensando sobre todo en conexiones IP y no es fácil la adaptación para su uso en TV digital.

Solución:Para evitar los problemas de la clase URL, MHP

utiliza el concepto de locator.

Page 5: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .5E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 6: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .6E.T.S de Ingenieros de Telecomunicación

Referenciando contenidos (Locators) (1/2)

Locator:Objeto que representa una referencia a un

determinado contenido.NO define como se almacena esta referencia. Es el

middleware el que elije el formato que mejor convenga y sea más eficiente para un tipo de locator dado.

Pueden usar como representación interna una URL u otra representación que optimice las cosas (números, punteros…)

Page 7: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .7E.T.S de Ingenieros de Telecomunicación

Referenciando contenidos (Locators) (2/2)

Ventajas de los locators: Facilitan el trabajo a los implementadores de middleware porque

pueden almacenar cualquier información que necesiten sobre la localización de un contenido determinado.

Desventajas de los locators: Hacen que los diseñadores de aplicaciones deban trabajar con

locators Necesaria una representación externa estandarizada para los locators (external form) que, a día de hoy, es un string representando una URL.

Ni la URL es el locator ni tampoco el locator es la URL. Son dos objetos distintos pero que refieren al mismo contenido. El locator puede usar como representación interna una URL

pero no tiene porqué.

Page 8: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .8E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 9: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .9E.T.S de Ingenieros de Telecomunicación

Tipos de locators (1/10)

Tipos de locatorsEn función del contenido al que refieren:

• Locators para contenidos DVB Streaming• Locators para archivos• Locators para Video Drips

En función de la clase que los implementa:• org.davic.net.Locator• javax.media.MediaLocator

Page 10: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .10E.T.S de Ingenieros de Telecomunicación

Tipos de locators (2/10)Locators para contenidos DVB Streaming

Locators para contenidos DVB Streaming Sintaxis:

dvb://<onID>.<tsID>.<sID>[.<ctag>[&<ctag>]][;<evID>][/<path>]• onID original network ID, que identifica al broadcaster o a la red que

produce el contenido (no la red que actualmente está siendo difundida, si son diferentes)

• tsID transport stream ID, que identifica un transport stream específico que la red esta difundiendo.

• sID service ID, que identifica un servicio dentro del transport stream anterior.

• ctag component Tag, que identifica un elementary stream específico que ha sido etiquetado (tagged) en el service information.

• evID event ID, que identifica un evento específico que forma parte del servicio.

• path ruta hasta un archivo en el object carousel en el que está siendo transmitido el elementary stream.

Solo los tres primeros elementos son necesarios Una URL en sistemas DVB debe referir siempre a un servicio.

Page 11: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .11E.T.S de Ingenieros de Telecomunicación

Tipos de locators (3/10)

Tipos de locatorsEn función del contenido al que refieren:

• Locators para contenidos DVB Streaming• Locators para archivos• Locators para Video Drips

En función de la clase que los implementa:• org.davic.net.Locator• javax.media.MediaLocator

Page 12: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .12E.T.S de Ingenieros de Telecomunicación

Tipos de locators (4/10)Locators para archivos (1/2)

Locators para archivosAunque el formato anterior también puede referir a un

archivo, puede resultar una tarea un poco ardua ya que los locators dvb:// pueden referir a cualquier archivo en cualquier object carousel de cualquier servicio.

Se pueden usar URL’s del tipo file:// seguida de la ruta absoluta hasta el archivo de interés.

Problema: no se sabe dónde MHP va a montar el object carousel difícil conocer la ruta completa.

Solución: obtener la URL de un archivo en el object carousel a partir del propio archivo.

Page 13: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .13E.T.S de Ingenieros de Telecomunicación

Tipos de locators (5/10)Locators para archivos (2/2)

Ejemplo (acceso a un archivo de audio)://Se crea un objeto DSM-CC que refiera al archivo en el carousel

//Destacar que la ruta es relativa al directorio root (Service Gateway)

//de la aplicación

DSMCCObject miObjetoDSMCC;

miObjetoDSMCC = new DSMCCObject("audios/audio1.mp2");

//Se obtiene la URL llamando al método getURL()

URL miURL = miObjetoDSMCC.getURL();

//Una vez que se tiene la URL se puede crear un javax.tv.locator.Locator,

//un javax.media.MediaLocator y a partir de él crear el player o bien

//crear el player directamente. A modo de ejemplo se muestra la primera //opcion

try{

LocatorFactory lf = LocatorFactory.getInstance();Locator miLocalizador = lf.createLocator(miURL.toString());

}

catch (MalformedLocatorException e){

}

Page 14: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .14E.T.S de Ingenieros de Telecomunicación

Tipos de locators (6/10)

Tipos de locatorsEn función del contenido al que refieren:

• Locators para contenidos DVB Streaming• Locators para archivos• Locators para Video Drips

En función de la clase que los implementa:• org.davic.net.Locator• javax.media.MediaLocator

Page 15: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .15E.T.S de Ingenieros de Telecomunicación

Tipos de locators (7/10)Locators para VideoDrips

Locators para Video Drips Video drips:

• Formato que provee un mecanismo eficiente, en cuanto a memoria, para mostrar varias imágenes similares.

• Pequeños video clips MPEG-2 compuestos únicamente por :– Una I-frame que es la que primero se decodifica.– Una o varias P-frames que son decodificadas en base a la primera

I-frame. Los datos se pasan a la API de control de medio a través de un

array de bytes, por lo que el contenido debe estar ya en memoria realmente este formato no tiene un locator que indique de dónde se cargan los datos.

Aún así existe un formato URL para crear locators a Video Drips dripfeed://, que informa al locator acerca del formato del contenido pero sin necesidad de referir a un contenido específico.

En el apartado de ejemplos veremos esto con más detalle.

Page 16: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .16E.T.S de Ingenieros de Telecomunicación

Tipos de locators (8/10)

Tipos de locatorsEn función del contenido al que refieren:

• Locators para contenidos DVB Streaming• Locators para archivos• Locators para Video Drips

En función de la clase que los implementa:• org.davic.net.Locator• javax.media.MediaLocator

Page 17: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .17E.T.S de Ingenieros de Telecomunicación

Tipos de locators (9/10)En función de la clase que los implementa (1/2)

Gran variedad de clases que implementan a los locators pero afortunadamente hay dos jerarquías principales y están relacionadas: org.davic.net.Locator

• Usada para todo menos para el “media control”. Tiene como clase padre a javax.tv.locator.Locator y refiere a cualquier contenido broadcast.

• Subclases:– org.davic.net.dvb.DvbLocator para referir a transport streams y servicios en

redes DVB.– org.dvb.locator.FrequencyLocator para referir a servicios transportados en

transport streams que no tienen información de servicio.

javax.media.MediaLocator• Sólo se usa para el “media control”. Lo usa JMF para referir al media clip

que va a presentar, con lo que puede referir a un servicio DVB, a un componente del servicio, a un audio clip o a un video drip.

• Subclase:– org.davic.media.MediaLocator para servir de puente entre JMF y el resto del

sistema, es decir, entre JMF MediaLocator y los JavaTV Locator.

Page 18: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .18E.T.S de Ingenieros de Telecomunicación

Tipos de locators (10/10)En función de la clase que los implementa (2/2)

No es posible convertir un MediaLocator en un org.davic.net.Locator ni construir el segundo a partir del primero. Habrá que usar la external form del MediaLocator para crear un org.davic.net.Locator.

La existencia de la clase org.davic.media.MediaLocator en la segunda jerarquía hace posible que las aplicaciones puedan construir MediaLocators a partir de org.davic.net.Locators.

Page 19: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .19E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 20: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .20E.T.S de Ingenieros de Telecomunicación

Creación de locators

Existen dos propuestas para la construcción de locators: Creación directa a partir de una URL

• Aplicable a javax.media.MediaLocator y org.davic.net.Locator

• Ejemplo:javax.media.MediaLocator localizador;

localizador = new javax.media.MediaLocator("dvb://1.3.1");

Creación indirecta a través de la clase LocatorFactory• Aplicable a javax.tv.locator.Locator, de hecho, instancias de esta

clase sólo se pueden crear usando la clase javax.tv.locator.LocatorFactory. Esta clase proporciona un método createLocator() que coge como argumento una URL.

• Ejemplo:javax.tv.locator.Locator localizador;javax.tv.locator.LocatorFactory lf = javax.tv.locator.LocatorFactory.getInstance();

localizador = lf.createLocator("dvb://1.3.1.cb");

Page 21: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .21E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 22: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .22E.T.S de Ingenieros de Telecomunicación

Player, Control, DataSource

MHP confía la tarea de decodificación y reproducción de contenidos audio/video a la API JMF (Java Media Framework)

JMF tiene 3 conceptos principales: Player

• Es el elemento principal de la API MHP• Responsable de decodificar y reproducir el media• Todos los players son subclases de javax.media.Player

Control• Extensión del objeto player que permite añadir nuevas funcionalidades al

player sin tener que crear una subclase.• Típicamente se usan para proporcionar control sobre elección de lenguaje,

tamaño de video, intercambio de elementary streams…• Todos los controls son subclases de javax.media.Control

DataSource• Objeto encargado de proporcionar los datos media que el player va a

decodificar.• Todos los players están siempre asociados a un objeto DataSource ya que

es imposible crear un player que no tenga un objeto DataSource asociado• Todos los DataSource son subclases de javax.media.protocol.DataSource

Page 23: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .23E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 24: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .24E.T.S de Ingenieros de Telecomunicación

La clase Manager

No se pueden crear instancias de Player y DataSource directamente hay que usar la clase Manager para crearlos.public class Manager {

public static Player createPlayer(URL sourceURL);public static Player createPlayer(MediaLocator sourceLocator);public static Player createPlayer(DataSource source);

public static DataSource createDataSource(URL sourceURL);public static DataSource createDataSource(MediaLocator sourceLocator);

public static TimeBase getSystemTimeBase(); public static Vector getDataSourceList(String protocolName); public static Vector getHandlerClassList(String contentName);

}

Los métodos más interesantes de esta clase son: createDataSource()

• Crea una nueva instancia de la clase DataSource que traerá los datos desde el lugar referido por la URL o por el MediaLocator (según el método utilizado)

createPlayer()• Crea una nueva instancia de la clase Player que podrá ser usada para

reproducir un media clip .

Page 25: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .25E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 26: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .26E.T.S de Ingenieros de Telecomunicación

Proceso de creación de un player (1/5)

Todo player está asociado siempre a un objeto DataSource por lo que parece lógico pensar que los players se crean a partir de DataSources. Sin embargo, de acuerdo a la clase Manager, existen otros mecanismos: A partir de una URL A partir de un MediaLocator

en los que la clase Manager creará primero el DataSource del tipo apropiado.

También es posible que una aplicación no cree un player nuevo sino que obtenga el player del servicio actual en el que se está ejecutando.

Page 27: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .27E.T.S de Ingenieros de Telecomunicación

Proceso de creación de un player (2/5)

Ejemplo 1: Creación de un nuevo player a partir de una URL: Obtener una instancia de la clase URL para poder pasarla como

argumento al método createPlayer(). Normalmente invocando a métodos del tipo getURL() o bien toURL().

• getURL()DSMCCObject miObjetoDSMCC;

miObjetoDSMCC = new DSMCCObject(“audios/audio1.mp2”);URL miURL = miObjetoDSMCC.getURL();

• toURL()File archivo = new File(“audios/audio1.mp2”);URL miURL = archivo.toURL();

Crear el player usando la clase ManagerPlayer player = javax.media.Manager.createPlayer(miURL);

Invocar al método start() del player. Es entonces cuando comienza a reproducirse el contenido.

player.start();

Page 28: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .28E.T.S de Ingenieros de Telecomunicación

Proceso de creación de un player (3/5)

Ejemplo 2: Creación de un nuevo player a partir de un MediaLocator:Crear un MediaLocator a partir de un string URL

MediaLocator miMediaLocator = new MediaLocator("dvb://1.3.1");

Crear el player usando la clase ManagerPlayer player = javax.media.Manager.createPlayer(miMediaLocator);

Invocar al método start() del player. Es entonces cuando comienza a reproducirse el contenido

player.start();

Page 29: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .29E.T.S de Ingenieros de Telecomunicación

Proceso de creación de un player (4/5)

Ejemplo 3: Creación de un nuevo player a partir de un DataSource: Crear un MediaLocator a partir de un string URL

MediaLocator miMediaLocator = new MediaLocator("dvb://1.3.1");

Crear el DataSource a partir del MediaLocatorDataSource datos = javax.media.Manager.createDataSource(localizador);

Conectar el DataSource con la localización especificada por el locator. Hasta que no se haga esto no hay forma de acceder a los datos.

datos.connect();

Invocar al método start() del DataSource para indicar que el DataSource ya tiene datos para pasar al player.

datos.start();

Crear el player usando la clase ManagerPlayer player = javax.media.Manager.createPlayer(datos);

Invocar al método start() del player. Es entonces cuando comienza a reproducirse el contenido.

player.start();

Page 30: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .30E.T.S de Ingenieros de Telecomunicación

Proceso de creación de un player (5/5)

Ejemplo 4: Obtención del player del servicio actual: Obtener el service context del servicio en el que se ejecuta la xlet.

XletContext contexto;ServiceContextFactory scf = null;ServiceContext sc = null;scf = ServiceContextFactory.getInstance();sc = scf.getServiceContext(contexto);

Obtener el player para el servicio actual. Los objetos ServiceMediaHandler son responsables de presentar las distintas partes del servicio, esto incluye los media components. Buscamos el player entre los distintos Handlers, normalmente suele ser el primero.

ServiceContentHandler[] sch = sc.getServiceContentHandlers();for (int i = 0; i < sch.length; i++) { if (sch[i] instanceof ServiceMediaHandler) { Player player = (Player)sch[i]; }}

Page 31: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .31E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 32: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .32E.T.S de Ingenieros de Telecomunicación

Controls (1/6)

JMF usa el concepto de control para añadir funcionalidades extra al player.

Cada control es una subclase de javax.media.MediaControl. Funcionalidades separadas:

Player controla el proceso de obtener el “media”, decodificarlo y reproducirlo.

Control responsable de manipular cómo presentar el “media” y de hacer cambios que no afecten al ciclo de vida del player.

Invocando al método getControls() de un player obtenemos la lista de controls disponibles para ese player.

Explicaremos los dos controls usados en este proyecto: javax.tv.media.AWTVideoSizeControl javax.tv.media.MediaSelectControl

Para información más detallada sobre controls: Interactive TV Standards (Capítulo 11) ETSI_TS_101 812, V1.2.1, Specification 1.0.2 (Sección 11.4.2)

Page 33: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .33E.T.S de Ingenieros de Telecomunicación

Controls (2/6) javax.tv.media.AWTVideoSizeControl (1/2)

Permite a las aplicaciones controlar el escalado y posicionamiento de la capa de video

javax.tv.media.AWTVideoSizeControlpublic interface AWTVideoSizeControl extends javax.media.Control {

public AWTVideoSize getSize();public AWTVideoSize getDefaultSize();public java.awt.Dimension getSourceVideoSize();public boolean setSize(AWTVideoSize sz);public AWTVideoSize checkSize(AWTVideoSize sz);

}

Para usar este control la aplicación crea un objeto javax.tv.media.AWTVideoSize.

Esta clase toma dos rectángulos como argumentos en su constructor: el primero es el rectángulo fuente (representa el área del video origen que se quiere

presentar) el segundo es el rectángulo destino (identifica el lugar y tamaño en el que va a ser

presentado el contenido del primer rectángulo)El objeto AWTVideoSize calculará automáticamente las transformaciones que necesite, por lo que la aplicación no se debe preocupar de esto.

Page 34: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .34E.T.S de Ingenieros de Telecomunicación

Controls (3/6) javax.tv.media.AWTVideoSizeControl (2/2)

public class AWTVideoSize extends java.lang.Object {

private java.awt.Rectangle source;private java.awt.Rectangle destination;private float xScale;private float yScale;public AWTVideoSize(java.awt.Rectangle source, java.awt.Rectangle dest);public java.awt.Rectangle getSource();public java.awt.Rectangle getDestination();public float getXScale();public float getYScale();public int hashCode();public boolean equals(java.lang.Object other);public java.lang.String toString();

} Comentarios de este control:

El hardware del receptor puede imponer limitaciones en el posicionamiento y escalado del video y el método setSize() puede fallar si no puede soportar la transformación requerida.

Con el método checkSize() se puede chequear antes si la transformación está permitida. Ejemplo: mover video a la esquina superior derecha

Rectangle NORMAL_DIMENSION = new Rectangle(0,0,720,576);Rectangle QUARTER_DIMENSION = new Rectangle(720/2,0,720/2,576/2);AWTVideoSizeControl vsc;vsc = (AWTVideoSizeControl)player.getControl("javax.tv.media.AWTVideoSizeControl");vsc.setSize(new AWTVideoSize(NORMAL_DIMENSION,QUARTER_DIMENSION));

Page 35: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .35E.T.S de Ingenieros de Telecomunicación

Controls (4/6)

JMF usa el concepto de control para añadir funcionalidades extra al player.

Cada control es una subclase de javax.media.MediaControl. Funcionalidades separadas:

Player controla el proceso de obtener el “media”, decodificarlo y reproducirlo.

Control responsable de manipular cómo presentar el “media” y de hacer cambios que no afecten al ciclo de vida del player.

Invocando al método getControls() de un player obtenemos la lista de controls disponibles para ese player.

Explicaremos los dos controls usados en este proyecto: javax.tv.media.AWTVideoSizeControl javax.tv.media.MediaSelectControl

Para información más detallada sobre controls: Interactive TV Standards (Capítulo 11) ETSI_TS_101 812, V1.2.1, Specification 1.0.2 (Sección 11.4.2)

Page 36: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .36E.T.S de Ingenieros de Telecomunicación

Controls (5/6)javax.tv.media.MediaSelectControl (1/2)

Permite a las aplicaciones controlar la presentación de los elementary streams que componen el servicio: Seleccionar streams Añadir streams Eliminar streams Reemplazar streams

javax.tv.media.AWTVideoSizeControlpublic interface MediaSelectControl extends javax.media.Control{

public void select(javax.tv.locator.Locator component);public void select(javax.tv.locator.Locator[] components);public void add(javax.tv.locator.Locator component);public void remove(javax.tv.locator.Locator component);public void replace(javax.tv.locator.Locator fromComponent, javax.tv.locator.Locator toComponent);public void addMediaSelectListener( MediaSelectListener listener);

public void removeMediaSelectListener( MediaSelectListener listener); public javax.tv.locator.Locator[] getCurrentSelection();

}

Limitación de este control: únicamente puede seleccionar componentes que estén dentro del servicio actual.

Page 37: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .37E.T.S de Ingenieros de Telecomunicación

Controls (6/6) javax.tv.media.MediaSelectControl (2/2)

Ejemplo: seleccionar nuevo elementary stream de audio y reproducirlo. Se da por hecho que se ha creado un player mediante cualquiera de los métodos propuestos.

MediaSelectControl msc = (MediaSelectControl)player.getControl("javax.tv.media.MediaSelectControl");

Locator localizador_audio = null;LocatorFactory lf = LocatorFactory.getInstance();try{

localizador_audio = lf.createLocator("dvb://1.3.1.cb" );}catch (MalformedLocatorException e){}try{

msc.select(localizador_audio);} catch (InvalidServiceComponentException e){} catch (InsufficientResourcesException e){} catch (SecurityException e){} catch (InvalidLocatorException e){}

Page 38: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .38E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 39: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .39E.T.S de Ingenieros de Telecomunicación

Ejemplos (1/17)

Explicación detallada de los pasos a seguir para reproducir los distintos contenidos introducidos en el primer apartado:Acceso a contenidos DVB Streaming

• Acceso y presentación de un nuevo elementary stream de audio.

Acceso a contenidos del Object Carousel (broadcast file system)

• Acceso y presentación de un ARCHIVO DE AUDIO• Acceso y presentación de un ARCHIVO DE VIDEO

Page 40: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .40E.T.S de Ingenieros de Telecomunicación

Ejemplos (2/17)Acceso y presentación de un nuevo elementary stream

de audio (1/3)

Asociar un player al servicio en el que se ejecuta la xlet:Crear un locator al servicio y a partir de él crear el

DataSource y el player. Para ello debemos conocer el string dvb:// específico del servicio.

No crear un nuevo player sino obtener el player del servicio actual .

Obtener los controls que se necesiten. En este caso MediaSelectControlMediaSelectControl msc;

msc = (MediaSelectControl)player.getControl("javax.mediaMediaSelectControl");

Page 41: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .41E.T.S de Ingenieros de Telecomunicación

Ejemplos (3/17)Acceso y presentación de un nuevo elementary stream

de audio (2/3)

Crear un el locator que refiera al nuevo audio stream que se quiere presentar para luego, invocando al método select() del control, seleccionar este nuevo audio stream. Hay que tener en cuenta que el método select() coge como argumento de entrada un javax.tv.locator.Locator, no un javax.media.MediaLocator, así que la forma de crear el locator será mediante la clase LocatorFactory.

Locator localizador_audio = null;LocatorFactory lf = LocatorFactory.getInstance();try {

localizador_audio = lf.createLocator("dvb://1.3.1.cc"); //locator al nuevo audio} catch (MalformedLocatorException e) {}try {

msc.select(localizador_audio);} catch (InvalidServiceComponentException e) {} catch (InsufficientResourcesException e) {} catch (SecurityException e) {} catch (InvalidLocatorException e) {}

Una vez hechos los pasos anteriores, el audio stream que se está presentando cambiará.

Page 42: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .42E.T.S de Ingenieros de Telecomunicación

Ejemplos (4/17)Acceso y presentación de un nuevo elementary stream

de audio (3/3)

Comentarios:No hay ninguna particularización para el caso de

audio parece que también funcionaría con un elementary stream de video.

• El código implementado únicamente selecciona un nuevo locator.

No se ha podido experimentar por limitaciones del banco de pruebas.

Page 43: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .43E.T.S de Ingenieros de Telecomunicación

Ejemplos (5/17)

Explicación detallada de los pasos a seguir para reproducir los distintos contenidos introducidos en el primer apartado:Acceso a contenidos DVB Streaming

• Selección y presentación de un nuevo elementary stream de audio.

Acceso a contenidos del Object Carousel (broadcast file system)

• Acceso y presentación de un ARCHIVO DE AUDIO• Acceso y presentación de un ARCHIVO DE VIDEO

Page 44: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .44E.T.S de Ingenieros de Telecomunicación

Ejemplos (6/17)Acceso y presentación de un ARCHIVO DE AUDIO (1/7)

Para acceder a un archivo de audio que viaja en el Object Carousel se tienen varias opciones: Hacer uso de la clase DSMCCObject y crear un player a partir

de una URL. Aprovechar que se trata de un archivo de audio y hacer uso de

la clase HSound.public class HSound{

public HSound();public void load(java.lang.String location);public void load(java.net.URL contents);public void set (byte[] data); public void play(); public void stop(); public void loop(); public void dispose();

}

Simplemente se puede elegir cuando empieza, cuando se acaba o si se desees reproducción en bucle del audio

Usar API JMF para tener más control sobre el audio

Page 45: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .45E.T.S de Ingenieros de Telecomunicación

Ejemplos (7/17)Acceso y presentación de un ARCHIVO DE AUDIO (2/7)

Crear un locator que refiera al archivo del object carousel.

DSMCCObject miObjetoDSMCC;

miObjetoDSMCC = new DSMCCObject(“audios/audio1.mp2”);

//Se obtiene la URL llamando al método getURL()

URL miURL = miObjetoDSMCC.getURL();

Player player_archivo_audio = null;

try {

player_archivo_audio = javax.media.Manager.createPlayer(miURL);

}

catch (NoPlayerException e) {

}

catch (IOException e) {

}

player_archivo_audio.start();

Page 46: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .46E.T.S de Ingenieros de Telecomunicación

Ejemplos (8/17)Acceso y presentación de un ARCHIVO DE AUDIO (3/7)

Para acceder a un archivo de audio que viaja en el Object Carousel se tienen varias opciones: Crear un locator que refiera al archivo del object carousely a

partir de él el player. Aprovechar que se trata de un archivo de audio y hacer uso de

la clase HSoundpublic class HSound{

public HSound();public void load(java.lang.String location);public void load(java.net.URL contents);public void set (byte[] data); public void play(); public void stop(); public void loop(); public void dispose();

}

Simplemente se puede elegir cuando empieza, cuando se acaba o si se desees reproducción en bucle del audio

Usar API JMF para tener más control sobre el audio

Page 47: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .47E.T.S de Ingenieros de Telecomunicación

Ejemplos (9/17)Acceso y presentación de un ARCHIVO DE AUDIO (4/7)

Aprovechar que se trata de un archivo de audio y hacer uso de la clase HSound.

HSound player_archivo_audio = new HSound();

try {

player_archivo_audio.load(“audios/audio1.mp2”); //ruta relativa al directorio //root de la aplicación //(Service Gateway)

}

catch (Exception e){

}

player_archivo_audio.play(); //se podría invocar al método loop() si se //deseara una reproducción ininterrumpida

Page 48: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .48E.T.S de Ingenieros de Telecomunicación

Ejemplos (10/17)Acceso y presentación de un ARCHIVO DE AUDIO (5/7)

Para acceder a un archivo de audio que viaja en el Object Carousel se tienen varias opciones: Crear un locator que refiera al archivo del object carousel y a

partir de él el player. Aprovechar que se trata de un archivo de audio y hacer uso de

la clase HSoundpublic class HSound{

public HSound();public void load(java.lang.String location);public void load(java.net.URL contents);public void set (byte[] data); public void play(); public void stop(); public void loop(); public void dispose();

}

Simplemente se puede elegir cuando empieza, cuando se acaba o si se desees reproducción en bucle del audio

Usar API JMF para tener más control sobre el audio

Page 49: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .49E.T.S de Ingenieros de Telecomunicación

Ejemplos (11/17)Acceso y presentación de un ARCHIVO DE AUDIO (6/7)

Usar API JMF para tener más control sobre el audioFile archivo_audio = new File(“audios/audio1.mp2”);

MediaLocator localizador_archivo_audio = null;

try { localizador_archivo_audio = new javax.media.MediaLocator(archivo_audio.toURL().toExternalForm());

}

catch (MalformedURLException e1) {

}

Player player_archivo_audio = null;

try { player_archivo_audio = javax.media.Manager.createPlayer(localizador_archivo_audio);

}

catch (NoPlayerException e) {

}

catch (IOException e) {

}

player_archivo_audio.start();

Page 50: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .50E.T.S de Ingenieros de Telecomunicación

Ejemplos (12/17)Acceso y presentación de un ARCHIVO DE AUDIO (7/7)

Restricciones en MHP: Único formato soportado: MPEG-1 (MP1 o MP2)

• WAV y MP3 no son soportados Deben ser de tamaño pequeño porque van a ser descargados

del object carousel.• Archivos grandes:

– Tardan mucho tiempo en descargarse y pueden afectar a los tiempos de carga de otros archivos.

– Usan más memoria y esto puede ser un problema en receptores de poco memoria RAM.

Sólo se puede reproducir un audio a la vez ya que los receptores MHP no son capaces de mezclar audios.

• Para reproducir un nuevo audio hay que esperar a que el audio que actualmente se está reproduciendo acabe.

• Esto es aplicable también al audio del servicio asociado a la aplicación, por lo que cualquier efecto de sonido que introduzca la aplicación hará que el audio del servicio se silencie.

Page 51: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .51E.T.S de Ingenieros de Telecomunicación

Ejemplos (13/17)

Explicación detallada de los pasos a seguir para reproducir los distintos contenidos introducidos en el primer apartado:Acceso a contenidos DVB Streaming

• Selección y presentación de un nuevo elementary stream de audio.

Acceso a contenidos del Object Carousel (broadcast file system)

• Acceso y presentación de un ARCHIVO DE AUDIO• Acceso y presentación de un ARCHIVO DE VIDEO

Page 52: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .52E.T.S de Ingenieros de Telecomunicación

Ejemplos (14/17)Acceso y presentación de un ARCHIVO DE VIDEO (1/4)

La norma MHP no soporta la reproducción de videos desde archivo.

No existe ningún mecanismo de reproducción de video que no sea el de un elementary stream.

Se ha intentado reproducir videos mediante la técnica de los Video Drips Formato de contenido nuevo y único en la TV digital Provee un mecanismo eficiente, en cuanto a memoria, para

mostrar varias imágenes similares. Pequeños video clips MPEG-2 compuestos únicamente por

• Una I-frame que es la que primero se decodifica.• Una o varias P-frames que son decodificadas en base a la primera

I-frame.

pero sin resultados satisfactorios ya que esta técnica no tiene este propósito.

Page 53: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .53E.T.S de Ingenieros de Telecomunicación

Ejemplos (15/17)Acceso y presentación de un ARCHIVO DE VIDEO (2/4)

Funcionamiento de los Video Drips:Existe un formato de locator para referenciar Video

Drips dripfeed://

dripfeed:// DataSource player Su uso no es necesario porque existe una subclase

de DataSource, DripDataSource que permite crear una fuente de datos capaz de alimentar progresivamente el decodificador con pequeñas partes del clip MPEG-2.

Page 54: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .54E.T.S de Ingenieros de Telecomunicación

Ejemplos (16/17)Acceso y presentación de un ARCHIVO DE VIDEO (3/4)

Pasos a seguir para reproducir un Video Drip: Se define el array donde vamos a guardar la lectura del fichero que contiene el video a

mostarstatic final int tam_buffer_lectura = 320000;byte[] datosDrip = new byte[tam_buffer_lectura];

Se crea una instancia de la clase DripDataSource para poder alimentar el decodificador progresivamenteDripFeedDataSorce dfds = new DripFeedDataSource();

Se crea el player a partir del DripDataSource anterior y se invoca a su método start()Player playerDrip = Manager.createPlayer(dfds);playerDrip.start();

Se crea una instancia de la clase FileInputStream pasando como parámetro de entrada el video que se quiere presentar. Los objetos FileInputStream típicamente representan ficheros de texto accedidos en orden secuencial, byte a byte. Con FileInputStream, se puede elegir acceder a un byte, varios bytes o al fichero completo.FileInputStream fis = new FileInputStream("videos/videoSinAudio2.mpg");

Se invoca al método read() del FileInputStream para comenzar la lectura de los datos que se guardarán en el array datosDrip definido en el primer paso y se cierra el stream de entrada cuando la lectura haya finalizado.fis.read(datosDrip);fis.close();

Por último se invoca al método feed() del objeto DripFeedDataSource para comenzar la alimentación progresiva del decodificador con el array en el que tenemos los datos.

dfds.feed(datosDrip);

Page 55: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .55E.T.S de Ingenieros de Telecomunicación

Ejemplos (17/17)Acceso y presentación de un ARCHIVO DE VIDEO (4/4)

Restricciones en MHP: (sobre el formato del clip MPEG usado para los Video Drips) No pueden contener streams de audio Deben estar compuestos únicamente por I-frames y P-frames. Más información: ETSI_TS_101 812, V1.2.1, Specification 1.0.2

(Sección 7.1.3) Los resultados no han sido muy satisfactorios pero han servido para

comprender mejor las restricciones que MHP impone sobre el formato de los video clips usados para generar los Video Drips.

Mejor resultado obtenido: conseguir que el STB decodifique únicamente el primer frame del video pero entremezclado ligeramente con el video del elementary stream.

Conclusión: para reproducir un video el único mecanismo válido es difundirlo como un elementary stream. Para que esta última solución propuesta proporcione resultados

óptimos hay que disponer de suficiente ancho de banda en el carousel para evitar problemas de tiempos de carga de archivos demasiado altos.

Page 56: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .56E.T.S de Ingenieros de Telecomunicación

Índice

Introducción: accediendo a contenidosReferenciando contenidos (Locators)

Tipos de locatorsCreación de locators

Reproduciendo contenidosPlayer, Control, DataSourceLa clase ManagerProceso de creación de un playerControls

EjemplosBibliografía

Page 57: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

22/09/2006 .57E.T.S de Ingenieros de Telecomunicación

Bibliografía

Interactive TV Standards (Steven Morris)Capítulo 8 y 11

http://www.interactivetvweb.org/http://www.interactivetvweb.org/tutorial/mhp/mediacon

trol.shtmlhttp://www.interactivetvweb.org/tutorial/mhp/javamedi

a.shtmlhttp://www.interactivetvweb.org/tutorial/mhp/sound.sht

ml

ETSI_TS_101 812, V1.2.1, Specification 1.0.2

Page 58: Control de medios en MHP Leire Urriza Oiz. 22/09/2006.2 E.T.S de Ingenieros de Telecomunicación Índice  Introducción: accediendo a contenidos  Referenciando.

Gracias por su atención