ES2147719T3 - Metodo para controlar la ejecucion de un programa de audio y video interactivo. - Google Patents

Metodo para controlar la ejecucion de un programa de audio y video interactivo.

Info

Publication number
ES2147719T3
ES2147719T3 ES99115043T ES99115043T ES2147719T3 ES 2147719 T3 ES2147719 T3 ES 2147719T3 ES 99115043 T ES99115043 T ES 99115043T ES 99115043 T ES99115043 T ES 99115043T ES 2147719 T3 ES2147719 T3 ES 2147719T3
Authority
ES
Spain
Prior art keywords
execution
message
program
avi
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES99115043T
Other languages
English (en)
Other versions
ES2147719T1 (es
Inventor
Jean-Rene Menand
Alain Delpuch
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
OpenTV Inc
Original Assignee
OpenTV Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by OpenTV Inc filed Critical OpenTV Inc
Publication of ES2147719T1 publication Critical patent/ES2147719T1/es
Application granted granted Critical
Publication of ES2147719T3 publication Critical patent/ES2147719T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8166Monomedia components thereof involving executable data, e.g. software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/16Analogue secrecy systems; Analogue subscription systems
    • H04N7/173Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
    • H04N7/17309Transmission or handling of upstream communications
    • H04N7/17318Direct or substantially direct transmission and handling of requests

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Circuits Of Receivers In General (AREA)
  • Television Signal Processing For Recording (AREA)
  • Stored Programmes (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

EN UN RECEPTOR INTERACTIVO AUDIO - VIDEO (RIAV), QUE RECIBE UNA CORRIENTE EN PAQUETE, QUE INCLUYE UN DIRECTORIO Y UN PROGRAMA RIAV, CON UN IDENTIFICADOR ASOCIADO EN EL DIRECTORIO, SE EXPONE UN PROCEDIMIENTO PARA CONTROLAR LA EJECUCION DEL PROGRAMA RIAV, Y QUE COMPRENDE LOS PASOS SIGUIENTES. EN PRIMER LUGAR, CARGAR EL PROGRAMA RIAV EN UNA MEMORIA, EN RESPUESTA A LA PRESENCIA DEL PROGRAMA RIAV EN LA CORRIENTE EN PAQUETE, A CONTINUACION, EMPEZAR LA EJECUCION DEL PROGRAMA RIAV CARGADO. Y, POR ULTIMO, REDUCIR AL MAXIMO LA EJECUCION DEL PROGRAMA RIAV CUANDO SE DETECTA EN LA CORRIENTE EN PAQUETE UN DIRECTORIO QUE IDENTIFICA UN DIFERENTE PROGRAMA RIAV.

Description

Método para controlar la ejecución de un programa de audio y video interactivo.
La presente invención se refiere a un método para controlar la ejecución de un componente de programas ejecutables interactivos de audio y vídeo (AVI).
Se han propuesto sistemas de televisión interactivos en los que un receptor de televisión incluye un procesador programable por el emisor y que es capaz de responder a datos introducidos por el usuario, generar gráficos en pantalla superpuestos en la emisión de vídeo, generar sonidos combinados con la emisión de audio e intercambiar datos con el emisor y otro servicio exterior de procesamiento de datos. En dicho sistema, el lugar de la emisión incluye un sistema informático para generar información sobre programas de aplicación interactiva, incluyendo códigos y datos ejecutables, y combinando la información de los programas de aplicación interactiva con los componentes de audio y vídeo de la señal de televisión asociada, como un componente adicional. El procesador del receptor de televisión recibe desde el emisor la información de los programas de aplicación interactiva, ejecuta el programa de aplicación interactiva que esa información representa, generando los gráficos y sonidos que hay que combinar con el audio y el vídeo de la televisión y procesando las entradas del usuario recibidas a través de un mando a distancia.
En un sistema AVI propuesto, la señal AVI compuesta del emisor es emitida en forma de flujo de datos empaquetados, incluyendo una serie de servicios de paquetes multiplexados en el tiempo. Cada servicio de paquetes transporta una señal de componente diferente de las que componen la señal AVI compuesta. Por ejemplo, un servicio transporta el componente de vídeo, otro el componente de audio y, otro más, el componente de información de los programas de aplicación interactiva. Pueden existir además otros servicios que transporten los canales de audio SAP y estéreo, y/o subtitulado codificado para personas con dificultades auditivas, etc. Además, algunos flujos de datos empaquetados podrían incluir servicios de paquetes que transportan señales de componentes para más de un programa AVI. Cada servicio de paquetes cuenta con un identificador único de componente de servicio (SCID) asociado con él y los paquetes en ese servicio de paquetes incluyen, cada uno, ese identificador de servicios.
Además, en el sistema de AVI propuesto, un servicio de paquetes transporta una guía de programas e incluye un identificador predeterminado de servicio. Los datos transportados por el servicio de paquetes de guía de programas asocian los componentes de un programa AVI con los identificadores de servicio de los servicios de paquetes que llevan esos componentes. Con estos datos, pueden extraerse del flujo de paquetes los servicios de paquetes que transportan los componentes del programa AVI deseado.
Las señales de componente en el flujo de datos empaquetados de la señal AVI son transportadas por una o más unidades de transmisión, consistentes cada una en una serie de paquetes. El primer paquete de cualquier unidad de transmisión es el paquete de cabecera, y los paquetes restantes de la unidad de transmisión son paquetes de datos asociados. El paquete de cabecera contiene información sobre los datos posteriores, y los paquetes de datos asociados transportan los datos que forman esa porción de la señal de componente. Unidades de transmisión diferentes podrían incluir un número distinto de paquetes de datos, y la partición de las señales de los componentes en unidades de transmisión podría verse influida por la sincronización necesaria para distribuir las diferentes señales de componentes a las localizaciones de los espectadores, a las horas deseadas, u otras consideraciones en tiempo real.
El componente de información de los programas de aplicación interactiva está compuesto por uno o más códigos módulos de códigos (que contienen el código ejecutable), posiblemente uno o más módulos de datos, y un módulo de directorios que incluye los datos que describen los módulos de códigos y datos que constituyen el componente de los programas de aplicación interactiva. Estos módulos se repiten continuamente en el flujo de componentes de datos del programa de aplicación. Los módulos se identifican cada uno de una forma exclusiva, y son transportados por unidades de transmisión, como se ha descrito anteriormente, en las que el paquete de cabecera contiene el identificador del módulo y la localización dentro de ese módulo al que pertenecen los datos en los siguientes paquetes de datos. El componente de información de los programas de aplicación interactiva incluye también una señal especial para controlar la ejecución del programa de aplicación AVI. Por ejemplo, una señal puede indicar a un pro de aplicación AVI, que se ejecuta en ese momento, que suspenda la ejecución; otro podría indicar a un pro de aplicación AVI, actualmente suspendido, que reanude la ejecución; y otro podría indicar al programa de aplicación de AVI, ejecutándose en ese momento, que termine la ejecución. Estas señales podrían incorporarse a los paquetes de señales dentro del servicio de paquetes de componentes del programa AVI.
Un procesador en un receptor AVI, bajo el control del cargador del sistema, extrae primero el módulo del directorio del flujo de datos y utiliza la información incluida en el directorio para determinar qué módulo de código hay que ejecutar primero. Ese módulo de código, denominado módulo de autoarranque, se extrae posteriormente del flujo de datos y se carga en la memoria. Cuando el módulo de autoarranque se ha cargado completamente en la memoria, el procesador comienza a ejecutar ese módulo de código. Durante el curso de su ejecución, dicho módulo de código podría solicitar datos de los módulos de datos identificados en el módulo del directorio. Esos módulos de datos se extraerán entonces y se cargarán en la memoria. Cuando el módulo se ha cargado completamente en la memoria, se informa al módulo de código solicitante, y prosigue la ejecución para procesar esos datos. Es posible también que el módulo de código se encadene a un módulo posterior. En ese caso, el módulo de código actual solicita encadenarse a un nuevo módulo de código listado en el módulo del directorio, y se libera su espacio de memoria. El módulo de código solicitado se extrae entonces del flujo de datos y se carga en la memoria. Una vez cargado completamente en la memoria, se ejecuta. Hay otras funciones posibles que se describirán más adelante.
A diferencia de otros sistemas informáticos distribuidos, el componente del programa AVI que está siendo recibido por el receptor AVI podría cambiar en cualquier momento. Por ejemplo, el programa AVI podría interrumpirse por un anuncio AVI o no AVI que lógicamente incluye un programa AVI diferente. O un espectador podría cambiar los canales de un programa AVI a otro programa AVI. Es necesario mantener la sincronización correcta entre el código ejecutable AVI y el sonido y los gráficos que se están generando por dicho código y los componentes de audio y vídeo que se están recibiendo.
De acuerdo con un aspecto de la presente invención, se suministra un método para controlar la ejecución de un programa interactivo de audio y vídeo (AVI) en un receptor AVI que reciba un flujo de paquetes, que incluya un programa AVI y señales de ejecución, incorporando el receptor un controlador de ejecución (410) para controlar la ejecución del programa AVI, y estando el método caracterizado por las etapas siguientes: en el controlador de ejecución: cargar el programa AVI en una memoria (412) en respuesta a la presencia del programa AVI en el flujo de paquetes; enviar un mensaje de activar la alternación al programa AVI en respuesta a una entrada del usuario; enviar un mensaje de salida al programa AVI en respuesta a una señal de finalización de ejecución en el flujo de paquetes; enviar un mensaje de suspensión al programa AVI en respuesta a una señal de ejecución de suspensión en el flujo de paquetes; y enviar un mensaje de continuación al programa AVI en respuesta a una señal de ejecución de continuación en el flujo de paquetes; y en el programa AVI, ejecución de lo siguiente: un estado inactivo (61), en el que el programa AVI está inactivo; un estado activo (63), en el que el programa AVI se está ejecutando; y un estado suspendido (65), en el que se suspende la ejecución del programa AVI; entrar al estado inactivo, en respuesta a la caga del programa AVI en la memoria; detener la ejecución, y descargar el programa AVI de la memoria en respuesta al mensaje de salida; cuando se encuentra en el estado inactivo, adoptarse el estado activo en respuesta a un mensaje de activar la alternación; cuando se encuentra en el estado activo, adoptarse el estado inactivo en respuesta a un mensaje de activar la alternación; y adoptarse el estado suspendido en respuesta a un mensaje de suspensión; y cuando se encuentre en el estado suspendido: adoptarse el estado activo en respuesta a un mensaje de continuación; y adoptarse el estado inactivo en respuesta a un mensaje de activar la alternación.
De acuerdo con un segundo aspecto de la invención, se proporciona un método para controlar la ejecución de un programa interactivo de audio y vídeo (AVI) en un receptor AVI que reciba de forma selectiva uno de los muchos flujos de paquetes bajo el control de un usuario, incluyendo cada flujo de paquetes un programa AVI con un identificador, y señales de ejecución, incorporando el receptor un controlador de ejecución (410) para controlar la ejecución del programa AVI, y caracterizándose el método por las etapas siguientes: en el controlador de ejecución: cargar el programa AVI en una memoria (412) en respuesta a la presencia del programa AVI en el flujo de paquetes seleccionado de entre otros muchos, almacenar el identificador del programa de aplicación cargado en un lugar correspondiente en la memoria y buscar bloques almacenados previamente en la memoria que contengan identificadores de programas AVI minimizados y si un identificador contenido en un bloque coincide con el identificador del programa AVI cargado en la memoria, ajustar el estado y el entorno de ejecución del programa AVI recién cargado a un estado y entorno de ejecución incluido en el bloque coincidente; enviar un mensaje de activar la alternación al programa AVI en respuesta a una entrada del usuario; enviar un mensaje de salida al programa AVI en respuesta a una señal de finalizar ejecución en el flujo de paquetes seleccionado de entre otros muchos; enviar un mensaje de suspensión al programa AVI en respuesta a una señal de ejecución de suspensión en el flujo de paquetes seleccionado; y enviar un mensaje de continuación al programa AVI en respuesta a una señal de ejecución de continuación en el flujo de paquetes seleccionado; enviar un mensaje de minimizar al programa AVI en respuesta a la presencia de un programa AVI en el flujo de datos que contenga un identificador diferente al identificador en el lugar respectivo de la memoria, y en el programa AVI, ejecución de lo siguiente: un estado inactivo (61), en el que el programa AVI está inactivo; un estado activo (63), en el que el programa AVI se está ejecutando; un estado suspendido (65), en el que se suspende la ejecución del programa AVI; y un estado minimizado (67), incluyendo las etapas siguientes: detención de la ejecución del programa AVI; almacenamiento del identificador del programa AVI y el estado y entorno de ejecución del programa AVI en un bloque de memoria; a continuación, descarga del programa AVI de la memoria; adoptarse el estado inactivo, como respuesta a la carga del programa AVI en la memoria; detención de la ejecución, y descarga del programa AVI desde la memoria como respuesta al mensaje de salida; cuando se encuentre en el estado inactivo, adoptarse el estado activo como respuesta a un mensaje de activar la alternación; y adoptarse el estado suspendido como respuesta a un mensaje de suspensión; y cuando se encuentre en el estado suspendido: adoptarse el estado activo en respuesta a un mensaje de continuación; adoptarse el estado inactivo como respuesta a un mensaje de activar la alternación; y adoptarse el estado minimizado en respuesta al mensaje de minimización.
En los dibujos:
la figura 1 es un diagrama de bloque de una porción de decodificador de señal AVI que incorpora la presente invención;
la figura 2 es un diagrama de estructura del programa para la ejecución del software por parte de la unidad de procesamiento 40 representada en la
\hbox{figura 1;}
la figura 3 muestra los diagramas de flujo y los de distribución de la memoria útil para comprender la extracción de los módulos de los componentes de datos en un programa AVI;
la figura 4 es un diagrama, parcialmente en forma de bloque y parcialmente en forma de distribución de la memoria útil también para comprender la extracción de los módulos de los componentes de datos en un programa AVI;
la figura 5 es un diagrama de flujo que muestra la función de inicialización del cargador del sistema; y
la figura 6 es un diagrama de transición de estado que muestra la función de control del flujo de datos del cargador del sistema.
La figura 1 es un diagrama de bloque de una porción de decodificador de señal AVI que incorpora la presente invención. En cada localización del espectador que desee participar en los programas AVI, se ha incorporado un decodificador, tal y como se muestra en la figura 1. En dicha figura 1, un mecanismo de transporte (no representado) está conectado al terminal de entrada 5 del decodificador. Un terminal de entrada 5 está conectado a un terminal de entrada de un sintonizador 10. Un terminal de salida del sintonizador 10 está conectado al terminal de entrada de datos de un detector 30 de componentes del programa AVI. Un terminal de salida de datos del detector 30 de componentes del programa está conectado a un bus 416 del sistema de una unidad de procesamiento 40. La unidad de procesamiento 40 incluye una unidad de procesamiento central (CPU) 410, una memoria de lectura y escritura (RAM) 412 y una memoria de sólo lectura (ROM) 414 interconectadas de un modo conocido por medio del bus 416 del sistema. Un adaptador 408 de entrada/salida de flujo está conectado bidireccionalmente entre el bus 416 del sistema y un terminal de control del detector 30 de componente del programa.
Un procesador 418 de audio, conectado al bus 416 del sistema, proporciona una señal de audio al terminal 25 de salida de audio de AVI, y un procesador 420 de vídeo, conectado también al bus 416 del sistema, proporciona una señal de vídeo al terminal 15 de salida de vídeo de AVI. Se suministran más salidas y entradas por el puerto 422 de entrada/salida, conectado a un procesador local colocado (no representado) por medio de un terminal bidireccional 45; un adaptador 424 de entrada/salida del usuario, para recibir los datos de éste a través de un terminal de entrada 35; y un módem 426 conectado a un ordenador externo (no representado) por medio de un terminal bidireccional 55; todo ello conectado de un modo conocido también al bus 416 del sistema. Otro equipamiento, por ejemplo procesadores matemáticos, otros adaptadores de entrada/salida, etc. podrían estar conectados al bus 416 del sistema de un modo conocido. Además, podría incluirse un alargador de bus para conectarlo a otros equipos en cajas externas a la caja de
\hbox{decodificador.}
En funcionamiento, el mecanismo de transporte, que, por ejemplo, podría ser un enlace directo de RF por satélite, una alimentación del sistema de cables o un enlace de fibra óptica al codificador, transporta una serie de señales AVI, cualquiera de las cuales podría ser seleccionada por el usuario para su visualización. En un enlace directo por satélite, por ejemplo, una serie de flujos de datos AVI podría ser multiplexada en frecuencia en el mecanismo de transporte modulando las señales del respectivo transportador de RF. Cada señal del transportador de RF ese reemitida desde el respectivo repetidor en el satélite al lugar del espectador. El sintonizador 10 seleccionado de un modo conocido una señal modulada de RF deseada, bajo el control del procesador 40. Por ejemplo, en el sistema directo del satélite, la señal modulada de RF que contiene los servicios por paquetes y que transporta los componentes de la señal del programa AVI deseada es sintonizada por un sintonizador de RF conocido. La salida del sintonizador 10 es un flujo de datos empaquetados digitales de banda base que contiene esos servicios de paquetes.
La CPU 410 solicita los servicios de los paquetes deseados desde el detector 30 de componente del programa escribiendo los identificadores de servicios deseados y los lugares del búfer de la RAM 412 en registros de control apropiados de identificador de componente de servicio (SCID) y un controlador (DMA) de acceso de memoria directo en el detector 30 de componente del programa a través del adaptador 408 de entrada/salida del flujo. El detector 30 de componente del programa controla entonces el flujo de datos empaquetados para los servicios deseados del paquete. Cuando se reciben los paquetes de cabecera de cualquiera de los servicios de paquetes deseados, se almacenan en un búfer de paquetes de cabecera predeterminado en la RAM 412 por medio de técnicas de escritura de DMA conocidas, y se genera así una interrupción de los paquetes de cabecera. Cuando se reciben los paquetes de datos de cualquiera de los servicios de paquetes deseados, se almacenan en los lugares de búfer especificados previamente en la RAM 412, utilizando también técnicas de escritura de DMA conocidas. Cuando se han recibido todos los paquetes de datos en una unidad de transmisión, se genera una interrupción completa de los datos. La recepción de paquetes de datos y/ de cabecera desde un servicio de paquetes puede activarse y desactivarse bajo el control de la CPU 410. Véase la solicitud de patente de invención estadounidense nº 232.787, CIRCUITOS DE DIRECCIÓN DE MEMORIA DEL PROCESADOR DE TRANSPORTE INVERSO DE SEÑALES DE PAQUETES DE VÍDEO, a nombre de K.E. Bridgewater et al., Presentada el 22.04.1994 para una descripción más detallada del detector 30 de componente de programa.
Por ejemplo, cuando el sintonizador 10 sintoniza una nueva señal de RF modulada, la CPU 410 solicita el paquete de servicio que contiene la guía de programas proporcionando el identificador fijo de servicio guía de programa a un registro de identificador de servicio en el detector 30 de componente del programa. Cuando se han recibido los datos en los paquetes de guía de programas y se han almacenado en la memoria, esos datos permiten a la CPU solicitar los servicios del paquete de datos para el programa AVI deseado.
Después de recibir los paquetes en el servicio de paquetes suministrado por el detector 30 de componente del programa, y se hayan escrito por medio del DMA en los lugares de búfer previamente especificados en la RAM 412, los procesadores 420 de vídeo y 418 de audio leen los datos de los lugares de búfer de la RAM 412 asociados con sus respectivos servicios de paquetes, utilizando técnicas de lectura de DMA conocidas, bajo el control del detector 30 de componente del programa. El procesador de vídeo 420 y el de audio 418 decodifican entonces los datos comprimidos y codificados para producir una señal de vídeo AVI en el terminal 15 de salida, y la señal de audio AVI en el terminal 25 de salida, respectivamente. Es posible también que la CPU 410 coopere con el procesador 420 de vídeo y el 418 de audio en el proceso de decodificación. Los paquetes de servicios del paquete de componentes de datos son procesados bajo el control de la CPU 410 de la manera que se describe a continuación.
Como se ha indicado anteriormente, siempre que el detector 30 de componente del programa recibe un paquete de cabecera de un servicio de paquetes solicitado, se almacena en un lugar predeterminado de la RAM 412 para ese servicio de paquetes, y se genera una señal de interrupción del paquete de cabecera para la CPU 410. Como respuesta a esta señal de interrupción del paquete de cabecera, se ejecuta una rutina de interrupción que analiza los contenidos del paquete de cabecera y actualiza correctamente los lugares de búfer de la RAM 412 en los registros de DMA en el detector 30 de componente del programa y activa la transferencia de DMA, o desactiva la transferencia de DMA si la unidad de transmisión no es la deseada. Una vez que se ha activado la transferencia de DMA, los datos de los paquetes de datos se cargan en la RAM 412 bajo el control del DMA. Cuando la carga de los paquetes de datos ha finalizado, el detector 30 de componente del programa genera una interrupción completa de los datos. En respuesta a esta señal de interrupción completa de los datos, se ejecuta una rutina de interrupción para realizar funciones de "limpieza" y preparar el siguiente paquete de cabecera.
La figura 2 es un diagrama de estructura del software 200 ejecutado por la unidad de procesamiento 40 representada en la figura 1. La figura 2 muestra los componentes principales de software que forman el sistema operativo multitarea de procesamiento de AVI. En la figura 2, todos los componentes se almacenan en la ROM 414, excepto el programa de aplicación, indicado en la zona sombreada. El programa de aplicación es transportado por los componentes de datos de la señal AVI, es recibido desde el lugar del a emisión y almacenado en la RAM 412. Los componentes de software representados en la figura 2 representan el código ejecutable y los datos constantes asociados. Cuando se ejecuta el código, puede generar y acceder a datos variables, que se almacenan en la RAM 412.
En el sistema de emisión AVI propuesto, diferentes decodificadores pueden emplear CPUs que utilicen paquetes de instrucciones distintos, por ejemplo de distintos fabricantes. En este sistema, el programa de aplicación es un código intermedio independiente del procesador. El software de cada decodificador incluye un componente que interpreta el código de aplicación intermedio (Intérprete). Esto permite la ejecución del programa de aplicación de la emisión en decodificadores que contengan cualquier tipo de CPU 410. Este intérprete leerá las instrucciones de los componentes de datos de AVI en un código intermedio desde la RAM 412, manipularán la memoria e interactuarán con el hardware a través de otros componentes de software por medio de una interfaz de programación de la aplicación (API). Esta API, que es básicamente una lista de subrutinas disponibles para un programa de aplicación y la información necesaria para llamarlas, es publicada y puede ser utilizada por el programador de la aplicación para acceder a los elementos del decodificador.
Una biblioteca matemática realiza todas las funciones necesarias para implementar la aritmética de números enteros y de coma flotante. Un sistema de operación de flujo maneja todos los controladores necesarios para vigilar el componente de datos de la señal AVI, y los módulos solicitados del proceso, según se describirá en detalle más adelante. Un componente de manejo de la interfaz de usuario maneja toda la interacción del usuario, y utiliza una librería de gráficos y un gestor de eventos para comunicarse con el usuario. La librería de gráficos realiza toda la creación de imágenes gráficas que se superponen al vídeo AVI recibido, y utiliza una biblioteca matemática para dibujar las curvas complejas.
Los diferentes componentes del programa del software de decodificación se comunican con otros asincrónicamente enviándose mensajes recíprocos. Cada componente del programa dispone de una cola de mensajes y funciona leyendo repetidamente el mensaje siguiente de la cola, procesando ese mensaje, enviando posiblemente un mensaje a otro componente del programa y, si no hay más mensajes pendientes, esperando al mensaje siguiente. El gestor de eventos dirige la comunicación de esos mensajes entre otros componentes de software encaminando correctamente los mensajes y manteniendo las colas de mensajes.
Cada adaptador de software incluye de igual modo un controlador de software asociado. Este controlador realiza la interacción real entre la CPU 410 y los registros en el adaptador de hardware asociado por medio del bus 416 del sistema. Por ejemplo, hay controladores para el módem 426, el puerto externo 422 de entrada/salida, el adaptador 408 de entrada/salida de flujo y la entrada/salida 424 del usuario. Además, los controladores separados mantienen un temporizador de software y activan el panel frontal del decodificador. Estos controladores dependen en gran medida del gestor de eventos. Todos los componentes anteriores utilizan funciones comunes proporcionadas por un kernel (núcleo) multitarea. Por ejemplo, el kernel mantiene las prioridades del proceso, las colas de tareas activas, señales, semáforos, marcas horarias de cambio de tarea preferente, interrupciones (hardware y software) y pilas de procesos. Asimismo, el kernel proporciona la inicialización del hardware e iniciación de la primera tarea del sistema, que es un cargador del sistema.
Al comienzo, el cargador del sistema ejecuta llamadas de API al sistema operativo de flujo, que a su vez llama al controlador de flujo para enviar los datos adecuados al detector 30 de componentes del programa por medio del adaptador 408 de entrada/salida del flujo. Estas llamadas de API desde el cargador del sistema inician un rastreo del servicio de paquetes de los componentes de datos para el módulo de directorio de un modo que se describe en detalle más adelante. Cuando se encuentra el módulo del directorio, se carga en la RAM 412 y se comprueba para ver si están disponibles todos los recursos necesarios para ejecutar ese programa. En caso afirmativo, el cargador del sistema inicia un rastreo de los componentes de datos de AVI para el primer módulo, denominado módulo de autoarranque, que iniciará el programa AVI. Cuando se localiza el módulo de autoarranque, se extrae del servicio de paquetes de los componentes de datos y se carga en la RAM 412. Este módulo de autoarranque se encuentra en forma de código intermedio, y se ejecuta por medio de la explicación del intérprete. El módulo de autoarranque realiza el resto de la inicialización y comienza la ejecución del programa AVI. Este programa puede cargar posiblemente otro módulo de datos y códigos y encadenarlo a otro módulo de código, todo ello por medio de llamadas de API. De este modo, el cargador del sistema funciona del mismo modo que un entorno UNIX® clásico.
Asimismo, el cargador del sistema continúa rastreando el servicio de paquetes de los componentes de datos comparando los módulos de directorios transmitidos con el módulo de directorio actual en la RAM 412. Si el módulo de directorio transmitido es diferente del almacenado en la RAM 412, indica que el servicio de paquetes de componentes de datos ha cambiado, por ejemplo, cuando un espectador cambia de canal o se está emitiendo un anuncio interactivo. En este caso, se envía un mensaje al programa de aplicación por medio del gestor de eventos a través de la API. En respuesta a este mensaje, el programa de aplicación retira la asignación a todos sus recursos y mantiene solamente una presencia mínima en el elemento 40 de procesamiento. Por ejemplo, puede liberarse la memoria utilizada para almacenar todos los modelos de códigos y datos y mantener solamente el estado de ejecución de la aplicación en la RAM 412. Cuando ha finalizado la minimización del programa de aplicación, se envía un mensaje al cargador del sistema.
El cargador del sistema asigna entonces los recursos necesarios para ejecutar el programa AVI representado por el nuevo módulo de directorio. Cuando se detecta un nuevo módulo de directorio en el servicio de paquetes de los componentes de datos de AVI, se busca una lista de aplicaciones previamente minimizadas, y si está presente la aplicación representada por el nuevo directorio, se reanuda esa aplicación recargando los módulos de códigos y datos necesarios desde el flujo de componentes de datos, y reanudando la ejecución desde donde se ha detenido previamente. Esto podría suceder al final de un anuncio interactivo de un intermedio. Este proceso podría ser recursivo, cuando pudiera, por sí mismo, interrumpirse un segundo programa AVI por un tercer programa AVI, y reactivarse posteriormente.
La figura 3 muestra diagramas de flujo y diagramas de distribución de memoria y la figura 4 es un diagrama de bloque más detallado del detector 30 de componentes del programa (de la figura 1) y un diagrama de distribución de memoria más detallado útil para comprender la extracción de módulos del componente de datos de un programa AVI. En la figura 4, un flujo de paquetes digitales de banda base desde el sintonizador 10 (de la figura 1) está conectado a los respectivos terminales de entrada de datos de un controlador 32 de DMA de datos y un controlador 34 de DMA de paquetes de cabecera dentro del detector 30 de componentes del programa. Los respectivos terminales de salida de datos del controlador 32 de DMA y el controlador 34 de DMA de paquetes de cabecera están conectados al bus 416 del sistema de la unidad de procesamiento 40. El adaptador 408 de entrada/salida de flujo está conectado entre el bus 416 del sistema y los respectivos terminales de entrada de control del controlador 32 de DMA de datos y el controlador 34 de DMA de paquetes de cabecera. En funcionamiento, el adaptador 408 de entrada/salida de flujo proporciona información de control, por ejemplo direcciones de inicio y final del lugar del búfer, direcciones de lectura y escritura y cuentas de transferencia, de un modo conocido de la CPU 410 (de la figura 1) al controlador 32 de DMA de datos y el controlador 34 de DMA de paquetes de cabecera. El adaptador 408 de entrada y salida de flujo puede entonces activar el controlador 32 de DMA de datos y el controlador 34 de DMA de paquetes de cabecera para transferir datos o paquetes de cabecera, respectivamente, desde el flujo de paquetes al búfer de un modo conocido, o desactivar dichas transferencias, bajo el control de la CPU 410. Cuando el controlador 32 de DMA de datos finaliza una transferencia de datos, genera una interrupción completa de datos para la CPU 410. Cuando el controlador 34 de DMA de paquetes de cabecera finaliza la carga de paquetes de cabecera, genera una interrupción de dichos paquetes para la CPU 410.
También en la figura 4, la RAM 412 está representada por un bloque grande, y las estructuras de datos por bloques pequeños dentro de un bloque grande. Los bloques de la figura 4 son solamente esquemáticos, y no pretenden representar lugares absolutos o relativos o tamaños asignados en la RAM 412 para estructuras de datos. En 412, se muestran estructuras de datos de una cola 322 de petición de módulos, un búfer 324 de paquetes de cabecera, un búfer 326 de módulos de directorio y un búfer 328 de módulos. Los campos de información dentro de las estructuras de datos se muestran como secciones horizontales que incluyen el nombre del tipo de información contenido en ese campo. Esto se explicará en detalle más adelante.
La figura 3 muestra el método utilizado en la extracción de un módulo del servicio de paquetes de los componentes de datos y su almacenamiento en un búfer de la RAM 412. Se utilizan métodos similares para el procesamiento de otros módulos, como se describirá más adelante. En la figura 3, las acciones tomadas en un programa de aplicación (o el cargador del sistema) se muestran en la columna de la izquierda bajo el título "PROG. DE APLIC.". En el bloque 302, el programa de aplicación, por medio de la API, solicita al sistema operativo de flujo cargar un módulo que tenga un identificador ID del servicio de paquetes de los componentes del programa AVI. Como se ha descrito anteriormente, las llamadas de API son básicamente llamadas de subrutina a las funciones del sistema operativo. La ejecución del programa se transfiere así al sistema operativo de flujo (FOS). Las acciones tomadas por el FOS se muestran en la siguiente columna a la derecha, bajo el título "FOS". Puesto que la petición implica la carga de un módulo, en el bloque 312, el FOS solicita una asignación de memoria al gestor de memoria con un tamaño suficiente para incluir el módulo. Por ejemplo, si el módulo solicitado es de códigos o datos, el módulo 326 de directorio (de la figura 4) almacenado previamente incluye un campo con la longitud (LONGITUD) del módulo ID. En este caso, un gestor de memoria asigna un búfer de memoria al módulo (328 de la figura 4) que tenga una dirección de arranque INICIO y una dirección de término FIN. A continuación, en el bloque 314, la información que describe la petición, por ejemplo el identificador ID del módulo, el tipo de petición PETICIÓN (en este caso, una petición para extraer y cargar un módulo) y la dirección INICIO de activación del búfer asignado, y la dirección FIN de terminación, se almacenan en la entrada de la cola solicitada (COLA) 322. El controlador 34 de DMA de paquetes de cabecera se activa entonces para cargar paquetes de cabecear en la RAM 412, cuando suceden en el flujo de paquetes.
Si la petición es para el módulo del directorio, no se conoce su longitud a priori. En este caso, se solicita una asignación de memoria relativamente grande. Si esta asignación resulta ser demasiado pequeña, la petición se repite, tras solicitar una asignación de memoria más grande, hasta que el módulo del directorio se cargue o se determine que la memoria es insuficiente para cargarlo, en cuyo caso se renuncia a intentar ejecutar el programa AVI.
El FOS vuelve inmediatamente al programa de aplicación de llamada. El programa de aplicación se activa entonces para realizar otro proceso, por ejemplo, emitir peticiones para otros módulos, otras inicializaciones, etc. Cuando se requiera el acceso al módulo solicitado, el programa de aplicación, en el bloque 304, podría emitir una llamada de API para una función de espera en el kernel. Esta función suspende la ejecución del programa de aplicación hasta que ese programa de aplicación reciba un mensaje que indique que el módulo solicitado se ha cargado satisfactoriamente. Cuando se recibe dicho mensaje, el programa de aplicación se reactiva para procesarlo. De forma alternativa, el programa de aplicación podría permanecer activo, por ejemplo con el fin de responder más rápidamente a las entradas de los usuarios, y sondear periódicamente su cola de mensajes para encontrar el mensaje que indica la carga satisfactoria del módulo solicitado, y procesar el mensaje cuando se reciba.
Como se ha descrito anteriormente, el controlador 34 de DMA de paquetes de cabecera los carga en un búfer 324 de paquetes de cabecera (PAQ. CAB.) (de la figura 4) en la RAM 412 previamente asignada por el gestor de memoria, y emite una interrupción de los paquetes de cabecera a la CPU 410. Una parte del proceso realizado por la rutina de interrupción de cabecera en el kernel se muestra en la columna denominada "INTERR. CABECERA" de la figura 3. En el bloque 332, el identificador del módulo que se está transportando en la unidad de transmisión para el cual éste es el paquete de cabecera, se recupera de un lugar conocido, ID, en el búfer 324 de paquetes de cabecera. En el bloque 334, la cola de petición 322 será examinada para determinar si existe una solicitud pendiente para ese módulo.
Si existe una petición pendiente para ese módulo, entonces, en el bloque 336, el controlador 32 de DMA de paquetes de datos del detector 30 de componentes del programa se inicializa con: la dirección INICIO de arranque del búfer 328 del búfer del módulo y la dirección FIN de finalización desde la cola de peticiones 322; una dirección de escritura que es la suma de la dirección INICIO de arranque del búfer 328 del módulo y la desviación DESVIACIÓN de datos de la unidad de transmisión (es decir, INICIO + DESVIACIÓN); y la última dirección de escritura que es INICIO + DESVIACIÓN + TAMAÑO (o de modo alternativo, una cuenta de carga que es el tamaño TAMAÑO desde el búfer 324 de paquetes de cabecera en lugar de la última dirección de escritura). El controlador 32 de DMA de paquetes de datos se activará entonces.
En el bloque 338, si éste es el primer paquete de cabecera recibido después de realizar la solicitud de carga, se inicializa un puntero hacia la primera dirección de escritura, PRIMERA, almacenada en la cola de petición 322, para la dirección de escritura de la primera unidad de transmisión (es decir, PRIMERA = INICIO + DESVIACIÓN). Asimismo, se inicializa también un puntero para la dirección de escritura que se espera a continuación, SIGUIENTE, también almacenada en la cola de petición 322 para la dirección de escritura de la primera unidad de transmisión (es decir, SIGUIENTE = INICIO + DESVIACIÓN). Tiene lugar entonces otro proceso en el bloque 338, que se describirá más detalladamente a continuación. Por ejemplo, un puntero especial para el lugar en la cola de petición 322 de la petición que se está procesando en este momento. PET. ACTUAL, se almacena en un lugar predeterminado (no representado) en la RAM 412. Entonces, en el bloque 339, vuelve la rutina de interrupción (339).
El controlador 32 de DMA de paquetes de datos inicializa un puntero de escritura (PE) para la dirección de escritura recibida previamente (INICIO + DESVIACIÓN) y carga los datos de los paquetes de datos siguientes en el servicio de paquetes de componentes del programa AVI en lugares secuenciales del búfer 328 del módulo en la RAM 412. Cuando todos los datos de la unidad de transmisión se han cargado en la RAM 412, se genera una interrupción completa de los datos. Una parte del proceso realizado por la rutina de interrupción completa de los datos en el kernel se muestra en la columna de la derecha con el título "INTERR.COMPL.DE DATOS" de la figura 3.
En el bloque 342, se ejecutan las funciones de limpieza relacionadas con el estado actual de la transferencia de DMA. El puntero de solicitud actual (PET. ACTUAL), previamente determinado en la rutina de interrupción de paquetes de cabecera, apunta a la entrada en la cola de petición 322 para el cual acaba de finalizar la carga de una unidad de transmisión. El puntero de dirección de escritura que se espera a continuación, SIGUIENTE, en la petición actual se incrementa por el TAMAÑO del valor desde el búfer 324 de paquetes de cabecera, y apunta ahora a la dirección de escritura esperada para la siguiente unidad de transmisión. Si el nuevo valor del puntero de la dirección de escritura que se espera a continuación, SIGUIENTE, es igual a la dirección final, FIN, del búfer 328 del módulo, se reajusta a la dirección de inicio, INICIO, del módulo 328 del búfer del módulo, de un modo envolvente.
En el bloque 344, se determina si se ha cargado en la memoria todo el módulo solicitado. El valor del puntero de dirección de escritura que se espera a continuación, SIGUIENTE, se compara con el valor de la dirección que se cargó primero, INICIO. Si son iguales, entonces se ha cargado todo el módulo. En el bloque 346, se envía un mensaje, por medio del gestor de eventos, al programa de aplicación solicitante para indicar que el módulo solicitado se ha recuperado en su totalidad, indicado con una línea discontinua en la figura 3. Además, la petición se elimina de la cola de peticiones 322. Si el valor de la dirección de escritura que se espera a continuación SIGUIENTE no es el mismo que la dirección que se cargó primero, INICIO, vuelve la rutina de interrupción completa de datos (349), y se procesará la unidad de transmisión siguiente que contenga datos para el módulo solicitado, tal y como se ha descrito anteriormente. En cualquier caso, se limpia el puntero de petición actual (PET. ACTUAL).
Si alguna parte de la unidad de transmisión no es recibida correctamente por el detector 30 de componentes de programas, se recibirá entonces un paquete de cabecera posterior antes de la señal de interrupción completa de datos desde el paquete de cabecera anterior que se ha generado por el circuito de DMA en el detector 30 de componentes del programa. Éste, a su vez, genera una señal de interrupción del paquete de cabecera posterior antes de que pueda generarse la señal de interrupción completa de los datos anteriores. El proceso en el administrador de interrupciones de paquetes de cabecera y el administrador de interrupción completa de datos pueden cooperar para identificar esta situación y solucionar el error.
En la rutina de interrupción de paquetes de cabecera, este proceso se realiza en el bloque 338 (de la figura 3), después de activar el controlador de DMA de paquetes de datos para recibir la unidad de transmisión siguiente. Para cada paquete de cabecera recibido, la dirección de escritura que se espera a continuación, SIGUIENTE, en la entrada de cola de petición actual, actualizada previamente por la rutina de interrupción completa de datos, se compara con la dirección de escritura (INICIO + DESVIACIÓN) para el paquete de cabecera recién recibido. Si son iguales, la unidad de transmisión previa se ha recibido satisfactoriamente. No obstante, si la última dirección de finalización no es la misma que la nueva desviación, eso significa que la transferencia de DMA de la unidad de transmisión anterior no se ha completado satisfactoriamente. En ese caso, tanto la primera dirección de escritura, PRIMERA, como la dirección de escritura que se espera a continuación, SIGUIENTE, se actualizan a la dirección de escritura actual (INICIO + DESVIACIÓN). Esto es, las unidades de transmisión cargadas previamente son esencialmente descartadas, y se reinicia la carga del módulo con la unidad de transmisión actual. Esta forma de recuperación desde un tipo de error de pérdida de datos podría llevar más tiempo, puesto que la unidad de transmisión que se ha cargado previamente de forma satisfactoria podría producir un error al recargarse. Sin embargo, utilizando esa forma de recuperación, las tareas realizadas por la rutina de interrupción de los paquetes de cabecera y la rutina de interrupción completas de datos se minimizan y sólo se necesitan dos punteros en la memoria.
Como parte de la administración de mensajes completos del módulo, el gestor de eventos realiza una comprobación de error en el módulo recibido. Por ejemplo, un código de comprobación de redundancia cíclica (CRC) se transmite a una parte acoplada del módulo. El gestor de eventos calcula un CRC por el módulo recibido en el búfer 328 del módulo en la RAM 412, y lo compara con el CRC acoplado. Si el CRC recién calculado es igual al CRC acoplado, entonces el módulo se recibió correctamente o, de lo contrario, sucedió un error y el módulo se recarga tal y como se ha indicado anteriormente.
Cuando el módulo solicitado se ha cargado completamente en la memoria, puede continuar el proceso por parte del módulo de aplicación, representado en la figura 3 por inferencia, como una línea desde la parte inferior de la llamada de API a la función 304 de espera. Sin embargo, podría activarse una tarea independiente en el programa de aplicación en respuesta a la recepción del mensaje desde la cola de mensajes del programa de aplicación.
El API mencionado incluye funciones para acceder al flujo de datos por medio del programa de aplicación, del intérprete o del cargador del sistema. Un programador de aplicaciones utilizará la descripción de API publicada para formular una llamada de API con el fin de acceder a la función del flujo de datos deseada. Un primer grupo de funciones está relacionado con el directorio de módulos. Una primera función, DIR_NEW, es una solicitud para un nuevo directorio. Como se ha descrito anteriormente, en respuesta a esta función de API, se realiza una asignación de memoria, y se pone a la cola una petición para la carga del siguiente módulo de directorio en el flujo de datos, y entonces vuelve la función de API. Cuando el directorio se ha cargado, se envía un mensaje al programa solicitante. Otra función, DIR_FREE, libera espacio de la memoria tomado por el directorio actual. La función DIR_SELECT indica qué módulo del directorio se utilizará en llamadas de API posteriores. La función DIR_CURRENT devuelve una administración al directorio seleccionado actualmente.
Las funciones DIR_SPY y DIR_STOP_SPY son similares a la función DIR_NEW. En respuesta a una llamada de API DIR_SPY, se pone a la cola una petición en la cola de peticiones para un módulo de directorio, pero en lugar de cargar un módulo de directorio y enviar un mensaje cuando se ha cargado, esta función envía un mensaje siempre que se detecte un módulo de directorio en el flujo de datos (el módulo de directorio no está cargado). Asimismo, la petición permanece en la cola de peticiones hasta que se realice una llamada de API DIR_STOP_SPY. Cuando se realiza esta llamada DYR-STOP-SPY, se busca la cola de peticiones para la solicitud de observación del directorio, y se elimina esa entrada. Estas funciones son útiles para observar cualquier cambio desde el directorio actual en el flujo de datos. Por último, existen llamadas de API para extraer información sobre el directorio actual: DIR_IDENTIFIER, DIR_REQUIREMENT y DIR_NB_MODULES.
Por causa del código CRC acoplado en el módulo, cualquier solicitud de asignación de memoria para cargar un módulo debe tener en cuenta este código. Para manejar esto, se suministran tres llamadas de API. La función MODULE_ALLOC toma un identificador de un módulo como un argumento y solicita una asignación de la cantidad correcta de memoria para cargar el módulo, teniendo en cuenta cualquier CRC u otros requisitos de memoria. La función MODULE_FREE libera la memoria tomada por un módulo. MODULE_CHECK realiza una comprobación de CRC de un módulo cargado y devuelve el resultado. Esto puede realizarse en cualquier momento puesto que el CRC está acoplado en el módulo cuando se carga en la memoria.
Otro grupo de llamadas de API organiza los módulos, utilizando el directorio seleccionado actualmente para identificarlos. Existen llamadas de API para extraer información sobre un módulo: MODULE_REQUIREMENT, MODULE_SIZE y MODULE_FLAGS. Éstas permiten al sistema determinar si un módulo puede cargarse y ejecutarse. La función MODULE_RUN se utiliza para cargar un módulo ejecutable, como se ha descrito anteriormente, crear un nuevo proceso y comenzar la ejecución en el punto de entrada del módulo. Esta función es utilizada por el cargador del sistema para iniciar la ejecución de un programa AVI. La función MODULE_CHAIN se utiliza para cargar un módulo ejecutable posterior, finalizar la ejecución del módulo actual y comenzar la ejecución de un módulo recién cargado en su punto de entrada. En este caso, no se crea un nuevo proceso. La función MODULE_LOAD se utiliza para cargar un módulo, pero no para iniciar la ejecución. Como ya se ha descrito, se envía un mensaje al programa solicitante cuando la carga del módulo ha finalizado. La función MODULE_EXEC se utiliza para crear un nuevo proceso y comenzar la ejecución de un módulo, que fue cargado previamente por la llamada de API MODULE_LOAD, en su punto de entrada.
La función MODULE_LINK ejecuta un nuevo módulo utilizando el proceso actual, los recursos y las variables. Permite llamadas de tipo subrutina desde dentro de un módulo proporcionando un enlace dinámico al módulo nuevo. Esto permite dividir los programas AVI en módulos más pequeños que podrían vincularse dinámicamente sólo cuando fuera necesario. La función MODULE_LINK mantiene la reubicación y las tablas de salto. Las funciones MODULE_SPY y MODULE_STOP_SPY funcionan de forma similar a DIRECTORY_SPY y DIRECTORY_STOP_SPY pero con respecto a módulos identificados. La llamada de API MODULE_SPY introduce una entrada en una cola de peticiones incluido el identificador del módulo. Siempre que se detecte un módulo de cabecera con el mismo identificador en el flujo de datos, se envía un mensaje al programa solicitante. Esto continúa hasta que se realiza una llamada de API MODULE_STOP_SPY. En respuesta a la llamada de API MODULE_STOP_SPY, la entrada que contiene la petición de observación para el módulo identificado se elimina de la cola de peticiones. La función MODULE_STOP_LOAD detiene cualquier petición de carga módulo actualmente en curso y elimina la entrada de petición de carga de la cola de peticiones. Las funciones FLOW_MESSAGE y FLOW_STOP_MESSAGE, respectivamente, generan y eliminan una solicitud para un mensaje cuando se produce un paquete de señales especiales, relativo al flujo de datos, como flujo de datos suspendido o el final de un flujo de datos. Cuando esto tiene lugar, se envía un mensaje al programa solicitante.
Como se ha descrito anteriormente, el cargador del sistema realiza la inicialización del sistema y controla el flujo de datos para garantizar que la ejecución del programa de aplicación está en sincronismo con los componentes de audio y vídeo recibidos. La figura 5 es un diagrama de flujo que muestra la función de inicialización del cargador del sistema. En el bloque 52 de la figura 5, están inicializados varios componentes de hardware y software del decodificador (de 17). Además, los lugares de la RAM 412 están asignados e inicializados para varias estructuras de datos. Estas funciones de inicialización son bien conocidas, y dependen de los componentes de software del decodificador. Un programador del sistema entenderá qué inicializaciones de hardware y software y estructuras de datos se necesitan y cómo realizar las inicializaciones. De este modo, este bloque no se describirá más en detalle más adelante.
En el bloque 54, se realiza una llamada de API DIR_NEW, descrita anteriormente. Esta llamada de API carga el siguiente módulo de directorio que aparece en el servicio de paquetes de componentes del programa AVI en un búfer asignado en la RAM 412. Esta llamada de API vuelve inmediatamente al cargador del sistema, aunque el directorio puede no cargarse en la RAM 412 hasta más tarde. El cargador del sistema realiza otras funciones y entonces, si fuera necesario, una llamada API de espera (no representada) hasta que se reciba el mensaje, por medio del gestor de eventos indicando que el módulo del directorio ha sido cargado. En el bloque 56, los recursos disponibles en el decodificador (de la figura 1) se comparan con los datos que indican los recursos necesarios en el módulo del directorio. Si el decodificador dispone de suficientes recursos para ejecutar el programa AVI, se realiza una llamada de API MODULE_RUN para cargar el módulo de códigos de autoarranque, identificado en el módulo del directorio previamente cargado, como se ha descrito anteriormente. De nuevo, la llamada de API vuelve inmediatamente, pero es posible que el módulo de códigos no se cargue completamente desde el flujo de datos hasta más tarde. Después de que el módulo de códigos de autoarranque esté totalmente cargado, se crea otra tarea de un modo conocido utilizando el kernel multitarea para ejecutar el programa AVI por medio del intérprete.
En el bloque 58, el cargador del sistema comienza a controlar el componente del programa AVI para la ejecución de señales, y el directorio cambia y controla la ejecución del programa AVI enviando mensajes al programa AVI como se describirá más adelante. La figura 6 es un diagrama de transición de estado que muestra la función de control del cargador del sistema. Si se detecta un directorio en un servicio de paquetes de componentes del programa AVI, entonces el programa que el espectador ha seleccionado es un programa interactivo. Una vez que el directorio se ha cargado en la RAM 412 y el módulo de códigos de autoarranque ha sido solicitado desde el servicio de paquetes de componentes de AVI, el programa AVI, bajo el control del cargador del sistema, entra en el estado INACTIVO 61. En este estado INACTIVO 61, todos los recursos para arrancar la aplicación han sido asignados y la aplicación puede cargarse parcial o totalmente, pero no existe interacción con el espectador. Por ejemplo, mientras el módulo de autoarranque se está cargando, el programa AVI permanece en el estado INACTIVO 61. Asimismo, incluso después de haber cargado el módulo de autoarranque, el espectador podría estar simplemente cambiando de canal a través del canal que lleva el programa AVI y no tenga intención de interactuar con el programa AVI. O puede que el espectador sólo desee examinar el programa AVI antes de tomar la decisión de unirse a la interacción. En todos esos casos, es importante que el mando a distancia actúe en un modo normal de cambio de canal y no en un modo interactivo. Este es el objetivo del estado INACTIVO 61. Con el fin de notificar al espectador que el canal que está viendo está emitiendo un programa interactivo, se superpondrá un logotipo o icono interactivo especial en el vídeo AVI.
Para que el espectador comience realmente a interactuar con el programa AVI, se incorpora una tecla especial, denominada "TECLA ACTIVAR" más adelante, en el mando a distancia. Cuando se muestra un logotipo o icono de un programa interactivo, el espectador puede pulsar la TECLA ACTIVAR. Como respuesta a la pulsación de la TECLA ACTIVAR, el cargador del sistema envía un mensaje ACTIVAR al programa AVI que entra entonces en el estado ACTIVO 63. En este estado ACTIVO 63, el intérprete comienza realmente a ejecutar el programa AVI cargado previamente en el punto de entrada. Cuando el módulo de autoarranque del programa AVI comienza la ejecución, asigna e inicializa sus propias estructuras de datos en la RAM 412, carga otros módulos de códigos y datos y controla todas las acciones del usuario desde el mando a distancia y el panel de control frontal.
Puesto que el programa AVI controla toda la interacción del usuario, puede evitar que éste cambie de canal o realice otras funciones normales con el mando a distancia. Para volver a las funciones normales del mando a distancia, el espectador debe detener primero el programa AVI actual. El espectador pulsa la TECLA ACTIVAR de nuevo para desactivar el programa. Como respuesta a la pulsación de esta tecla, el cargador del sistema envía un mensaje DESACTIVAR al programa AVI en ejecución que abandona entonces el estado ACTIVO 63 y vuelve al estado INACTIVO 61. De nuevo, se muestra un logotipo o icono interactivo del programa, indicando que el programa AVI está cargado pero no es está ejecutando. El espectador puede entonces cambiar de canal o realizar funciones normales con el mando a distancia o puede reactivar el programa AVI pulsando de nuevo la TECLA ACTIVAR. Esta TECLA ACTIVAR actúa como un conmutador que cuando se pulsa alterna entre el estado ACTIVO 63 y el estado INACTIVO 61. Los mensajes ACTIVAR y DESACTIVAR pueden considerarse también como mensajes de ALTERNANCIA DE ACTIVACIÓN, cuyo significado (ACTIVAR o DESACTIVAR) depende del estado del programa AVI (INACTIVO o ACTIVO, respectivamente) cuando se pulsa la TECLA ACTIVAR.
Cuando se está ejecutando el programa AVI en el estado ACTIVO 63, hay momentos en los que se desea suspender la ejecución. Por ejemplo, cuando se va a transmitir un anuncio no interactivo, el audio y vídeo transmitido no coincidirá con el sonido y los gráficos que está generando el decodificador 10 (de la figura 1), y se desea permitir al espectador que utilice el mando a distancia en un modo normal. El programador de la aplicación, sin embargo, no puede conocer de antemano cuándo se necesitarán dichas suspensiones. Así, en este caso, el emisor, independientemente del programa AVI, puede incluir repetitivamente paquetes de señales especiales (como se ha descrito anteriormente), denominados paquetes de señales suspendidas, en el servicio de paquetes de componentes del programa AVI. Cada paquete contiene datos que indican que el programa AVI ejecutado en ese momento va a suspender la ejecución.
El cargador del sistema, por medio de la llamada API FLOW_MESSAGE, recibe un mensaje siempre que dichos paquetes son reconocidos en el servicio de paquetes de componentes del programa AVI. Por ejemplo, cuando se recibe un paquete de señales suspendido, el cargador del sistema recibe un mensaje de señal suspendida, y en respuesta al primer mensaje de señal suspendida, envía un mensaje de SUSPENDER al programa AVI que, a su vez, suspende la ejecución entrando en el estado SUSPENDIDO 65. En este estado SUSPENDIDO 65, la ejecución del programa AVI se detiene de modo que pueda iniciarse desde el punto en el que se suspendió. Esto es, todos los recursos necesarios para ejecutar el programa AVI permanecen asignados, y el estado de ejecución del programa AVI se almacena en un lugar de la RAM 412. Además, se superpone en la imagen de vídeo actual un segundo logotipo o icono, indicando que se ha suspendido un programa interactivo que se estaba ejecutando previamente, pero que está preparado para reanudarse cuando pueda.
Cuando termina la interrupción (por ejemplo, un anuncio no interactivo), el emisor se detiene, incluidos los paquetes de señales suspendidas en el servicio de paquetes de componentes del programa AVI. El cargador del sistema, después de un periodo de tiempo predeterminado sin recibir un mensaje de señal suspendida, envía un mensaje de CONTINUAR al programa AVI que, a su vez, reanuda la ejecución desde donde la suspendió previamente, entrando en el estado ACTIVO 63, descrito anteriormente.
Una realización alternativa de la disposición de señales SUSPENDER/ CONTINUAR, descrita anteriormente, es que el emisor incluya un único paquete de señales suspendidas en el servicio de paquetes de componentes del programa AVI cuando se desea suspender la ejecución del programa AVI. El emisor incluye entonces otro paquete de señales especial, denominado paquete de señales continuo, en el servicio de paquetes de componentes del programa AVI cuando se desea reanudar la ejecución de dicho programa AVI. Este paquete contiene datos que indican al programa AVI suspendido actualmente que reanude la ejecución. El cargador del sistema reconoce el paquete de señales continuo, y envía un mensaje CONTINUAR al programa AVI, que reanuda la ejecución y entra en el estado ACTIVO 63, descrito anteriormente.
El espectador también puede detener la ejecución de un programa AVI suspendido. Cuando se muestra un logotipo o icono suspendido del programa, el espectador puede pulsar la TECLA ACTIVAR. El cargador del sistema, que responde a la pulsación de esta tecla, envía un mensaje de DESACTIVAR al programa AVI suspendido que, a su vez, entra en el estado INACTIVO 61, ya descrito. Desde este estado INACTIVO 61, el programa sólo puede reanudar la ejecución cuando el espectador pulsa la TECLA ACTIVAR, lo que provoca que el cargador del sistema envíe un mensaje de ACTIVAR al programa AVI, que entrará entonces en el estado ACTIVO 63. Si el cargador del sistema aún está recibiendo paquetes de señales suspendidas, se envía inmediatamente otro mensaje de SUSPENDER al programa AVI, que de nuevo entra en el estado SUSPENDIDO 65. El estado INACTIVO 61, el ACTIVO 63 y el SUSPENDIDO 65 son estados entre los que puede cambiar el programa AVI como respuesta a los mensajes que se le envían desde el cargador del sistema. Sin embargo, existen otros dos estados a los que se accede bajo el control directo del cargador del sistema.
Un programa AVI puede alcanzar el fin de su ejecución. Por ejemplo, el emisor puede incluir otro paquete de señales especial, denominado paquete de señales de ejecución de terminación, en el servicio de paquetes de componentes del programa AVI. El cargador del sistema recibe un mensaje de ejecución de terminación cuando se reconoce un paquete de señales de ejecución final de terminación en el servicio de paquetes de componentes del programa AVI, por medio de la llamada de API FLOW_MESSAGE. Como respuesta al mensaje de ejecución final, el cargador del sistema envía un mensaje SALIR al programa AVI. Independientemente del estado en el que se encuentre el programa AVI, INACTIVO 61, ACTIVO 63 o SUSPENDIDO 65, el programa AVI responde al mensaje SALIR, eliminando la asignación de todos sus recursos, y eliminando también del decodificador 10 (de la figura 1) todos los registros. Se considera que este programa ha entrado en el estado DETENIDO 69, y desaparece del decodificador 10. En algunos casos, el programa puede reconocer que su ejecución ha llegado a su fin, por medio de una orden del usuario, o por su propia ejecución. Cuando el programa AVI reconoce que su ejecución ha terminado, realiza el mismo proceso que habría realizado si hubiera recibido un mensaje SALIR, y entra en el estado DETENIDO 69 por su propia cuenta.
Cuando un programa AVI se encuentra en estado SUSPENDIDO, es posible que se reciba un programa AVI interactivo diferente en el flujo de datos de componentes del programa AVI. Por ejemplo, si el programa AVI se suspendió para un anuncio, ese anuncio puede ser él mismo un programa interactivo, o el usuario podría haber cambiado de canal a otro que emita un programa AVI diferente. En ambos casos, el nuevo programa AVI incluirá un módulo de directorio, que es distinto del programa AVI suspendido.
El cargador del sistema, por medio de la llamada de API DIR_SPY, recibe un mensaje siempre que se detecta un directorio en el servicio de paquetes de componentes del programa AVI. El cargador del sistema compara el directorio activo actual con el directorio recién detectado. Cuando el cargador del sistema reconoce que un directorio diferente está presente en el servicio de paquetes de componentes del programa AVI, comienza a cargar el programa AVI representado por ese directorio.
En primer lugar, se envía un mensaje al programa AVI suspendido actualmente para indicar que el servicio de paquetes de componentes del programa dejará de emitirse, o que ese programa ha "perdido el flujo". Este mensaje es una petición para que el programa que se está ejecutando en ese momento se minimice, es decir, en un mensaje MINIMIZAR. Como respuesta al mensaje MINIMIZAR, el programa AVI entonces suspendido primero almacena su estado y entorno de ejecución actual en un bloque pequeño de la RAM 412 que contiene la identificación de la aplicación AVI, y un tiempo de duración, que se describirá más adelante. El programa AVI entonces comienza a eliminar las asignaciones de sus recursos. Un programa AVI minimizado no incluye ningún código por lo que no puede cambiar los estados en respuesta a los mensajes, o restaurarse por sí mismo.
El cargador del sistema carga entonces el directorio recién detectado y el módulo de autoarranque y coloca el nuevo programa AVI en el estado INACTIVO 61 mostrando el logotipo o icono del programa interactivo, como se ha descrito anteriormente. El espectador puede entonces iniciar y detener la interacción con su nuevo programa AVI pulsando la TECLA ACTIVAR, y el programa puede él mismo suspenderse o continuar.
El proceso de minimización es un proceso recursivo. Por ejemplo, este nuevo programa AVI, si se suspende, puede también minimizarse si se ha detectado ya otro programa AVI en el servicio de paquetes de componentes del programa AVI. En este caso, se asigna otro bloque de memoria, y el estado y entorno de ejecución de este programa AVI, junto con su identificador y el tiempo de duración se almacenan en este bloque de memoria. A continuación, se carga el programa AVI recién detectado, como ya se ha descrito. El número de programas que pueden minimizarse simultáneamente está limitado solamente por la cantidad de memoria necesaria para almacenar todos los bloques de memoria que contengan estados y entornos de ejecución de los programas minimizados.
Si no hay suficiente espacio de memoria disponible para cargar el nuevo módulo de directorio, o ejecutar el programa representado por un módulo de directorio previamente cargado, y si hay bloques de memoria asignados representando programas minimizados, el cargador del sistema puede eliminar automáticamente la asignación de algunos o todos los bloques de memoria de acuerdo con un algoritmo (como eliminar primero la asignación del bloque de memoria más antiguo, o primero de los bloques de memoria marcados como desechables por la aplicación originaria) en un intento de conseguir suficiente espacio en la memoria. De forma alternativa, el cargador del sistema podría presentar una lista de aplicaciones minimizadas al espectador, y permitir que sea él el que seleccione alguna o todas para borrarlas. A los bloques que representan aplicaciones minimizadas seleccionadas se les retira entonces la asignación para conseguir suficiente espacio en la memoria.
Mientras tanto, los bloques de memoria que contengan los estados y entornos de ejecución de los programas AVI previamente minimizados permanecen asignados en la memoria. Como ya se ha descrito, hay un tiempo de duración en cada bloque de memoria. Si se supera el tiempo de duración de un bloque, el programa AVI minimizado previamente se interrumpe. En este caso, se considera que ese programa ha entrado en el estado DETENIDO 69, y a su bloque de memoria que contiene el estado y entorno de ejecución se le elimina la asignación, y todos los registros que ese programa AVI minimizado previamente se pierden.
Sin embargo, es posible que el decodificador 10 reciba de nuevo un componente del programa AVI, que contenga el directorio, el código y los módulos de datos de un programa AVI minimizado previamente, o que ese programa AVI "obtenga de nuevo el flujo". Por ejemplo, puede que haya terminado el anuncio interactivo, entrando en el estado DETENIDO 69, o que el espectador haya vuelto a este canal. El cargador del sistema comienza a cargar el "nuevo" directorio en el servicio de paquetes de componentes del programa AVI. Siempre que se carga un nuevo directorio, el identificador de la aplicación se compara con los identificadores en todos los bloques que contengan el estado y los entornos de ejecución actualmente almacenados en la RAM 412. Si se encuentra un bloque coincidente, entonces se cargan los módulos de datos y códigos, y el programa AVI ubicado en el estado INACTIVO 61, pero su estado de ejecución se actualiza a donde estaba justo antes de minimizarse. Cuando el espectador pulsa la TECLA ACTIVAR, el programa AVI entra en el estado ACTIVO 63, y comienza la ejecución donde se abandonó previamente. De este modo, un programa AVI puede detenerse temporalmente para ejecutar otro programa AVI, y luego reanudarse, sin necesitar recursos suficientes para que ambos programas permanezcan en la memoria de forma simultánea.

Claims (7)

1. Método para controlar la ejecución de un programa interactivo de audio y vídeo (AVI) en un receptor AVI que recibe un flujo de paquetes incluido un programa AVI y señales de ejecución, incluyendo el receptor un controlador de ejecución (410) para controlar la ejecución del programa AVI; estando dicho método caracterizado por las etapas siguientes:
en el controlador de ejecución:
cargar el programa AVI en una memoria (412) como respuesta a la presencia del programa AVI en el flujo de paquetes;
enviar un mensaje de activar la alternación al programa AVI como respuesta a una entrada del usuario;
enviar un mensaje de salida al programa AVI como respuesta a una señal de ejecución de finalización en el flujo de paquetes;
enviar un mensaje de suspensión al programa AVI como respuesta a una señal de ejecución de suspensión en el flujo de paquetes; y
enviar un mensaje de continuar al programa AVI como respuesta a una señal de ejecución de continuación en el flujo de paquetes; y
en el programa AVI:
ejecución de uno de los siguientes:
un estado inactivo (61), en el que el programa AVI está inactivo;
un estado activo (63), en el que el programa AVI se está ejecutando; y
un estado suspendido (65), en el que el programa AVI está suspendido;
adoptarse el estado inactivo, como respuesta a la carga de un programa AVI en la memoria;
detener la ejecución, y descargar un programa AVI de la memoria como respuesta al mensaje de salida;
cuando se encuentra en el estado inactivo, adoptarse el estado activo como respuesta a un mensaje de activar la alternación;
cuando se encuentra en el estado activo:
adoptarse el estado inactivo, como respuesta a un mensaje de activar la alternación; y
adoptarse el estado suspendido, como respuesta a un mensaje de suspensión; y
cuando se encuentra en el estado suspendido:
adoptarse el estado activo, como respuesta a un mensaje de continuación; y
adoptarse el estado inactivo, como respuesta a un mensaje de activar la alternación.
2. Método según la reivindicación 1, caracterizado porque:
la señal de ejecución de suspensión del flujo de paquetes está representada por paquetes de señales de ejecución de suspensión repetitivas durante el intervalo de tiempo de suspensión, y la señal de ejecución de continuación está representada por paquetes de señales de ejecución de suspensión; y
la etapa de enviar un mensaje de suspensión en el controlador de ejecución incluye la etapa de enviar el mensaje de suspensión en respuesta a un primer paquete de señales de ejecución de suspensión; y
la etapa de enviar un mensaje de continuación en el controlador de ejecución incluye la etapa de enviar el mensaje de continuación tras un periodo de tiempo predeterminado en el que no se reciban paquetes de señales de ejecución de suspensión.
3. Método según la reivindicación 1, caracterizado porque:
la señal de ejecución de suspensión del flujo de paquetes está representada por paquetes de señales de ejecución de suspensión y la señal de ejecución de continuación está representada por un paquete de señales de ejecución de continuación; y
la etapa de enviar un mensaje de suspensión en el controlador de ejecución incluye la etapa de enviar el mensaje de suspensión en respuesta a un paquete de señales de ejecución de suspensión; y
la etapa de enviar un mensaje de continuación en el controlador de ejecución incluye la etapa de enviar el mensaje de continuación en respuesta a un paquete de señales de ejecución de continuación.
4. Método para controlar la ejecución de un programa interactivo de audio y vídeo (AVI) en un receptor de AVI que reciba de forma selectiva una serie de flujos de paquetes bajo el control del usuario, incluyendo cada paquete un programa AVI con un identificador, y señales de ejecución, en el que el receptor incluye un controlador de ejecución (410) para controlar la ejecución del programa AVI, estando dicho método caracterizado por las etapas siguientes:
en el controlador de ejecución:
cargar el programa AVI en una memoria (412) como respuesta a la presencia del programa AVI en el flujo de paquetes seleccionado de entre varios; almacenar el identificador del programa de aplicación cargado en un lugar respectivo de la memoria y buscar bloques previamente almacenados en la memoria que contengan identificadores de programas AVI minimizados y si un identificador contenido en un bloque coincide con el identificador del programa AVI cargado en la memoria, ajustar el estado y el entorno de ejecución del programa AVI recién cargado a un estado y entorno de ejecución contenido en el bloque coincidente;
enviar un mensaje de activar la alternación al programa AVI como respuesta a una entrada del usuario;
enviar un mensaje de salida al programa AVI como respuesta a una señal de ejecución de finalización en el flujo de paquetes seleccionado de entre varios;
enviar un mensaje de suspensión al programa AVI como respuesta a una señal de ejecución de suspensión en el flujo de paquetes seleccionado de entre varios;
enviar un mensaje de continuación al programa AVI como respuesta a una señal de ejecución de continuación en el flujo de paquetes seleccionado de entre varios;
enviar un mensaje de minimizar al programa AVI como respuesta a la presencia de un programa AVI en el flujo de datos con un identificador diferente que el respectivo identificador de la memoria; y
en el programa AVI:
ejecución de uno de los siguientes:
un estado inactivo (61), en el que el programa AVI está inactivo;
un estado activo (63), en el que el programa AVI se está ejecutando;
un estado suspendido (65), en el que el programa AVI está suspendido; y
un estado minimizado (67), incluyendo las etapas siguientes:
detención de la ejecución del programa AVI; a continuación almacenamiento del identificador del programa AVI y el estado y entorno de ejecución del mismo en un bloque de la memoria; y descarga del programa AVI desde ésta;
adoptarse el estado inactivo, como respuesta a la carga de un programa AVI en la memoria;
detener la ejecución, y descargar un programa AVI de la memoria como respuesta al mensaje de salida;
cuando se encuentra en el estado inactivo, adoptarse el estado activo como respuesta a un mensaje alternante de activación;
cuando se encuentra en el estado activo:
adoptarse el estado inactivo, como respuesta a un mensaje de activar la alternación; y
adoptarse el estado suspendido, como respuesta a un mensaje de suspensión; y
cuando se encuentra en el estado suspendido:
adoptarse el estado activo, como respuesta a un mensaje de continuación;
adoptarse el estado inactivo, como respuesta a un mensaje de activar la alternación; y
adoptarse el estado minimizado como respuesta al mensaje de minimización.
5. Método según la reivindicación 4, caracterizado porque en la etapa de almacenamiento, en la etapa de ejecución, en un estado minimizado, en el estado de aplicación, incluye además la etapa siguiente:
almacenar un tiempo de duración en el bloque de memoria, indicando el periodo de tiempo durante el cual los datos almacenados en el bloque de memoria permanecerán en la memoria y, después de que ese periodo de tiempo haya expirado, eliminar los datos almacenados en el bloque de memoria.
6. Método según la reivindicación 4, caracterizado porque:
la señal de ejecución de suspensión en el flujo de paquetes seleccionado de entre varios está representada por paquetes de señales de ejecución de suspensión repetitivas durante un intervalo de tiempo de suspensión, y la señal de ejecución de continuación no está representada por ningún paquete de señales de ejecución de suspensión repetitivo; y
la etapa de enviar un mensaje de suspensión en el controlador de ejecución incluye la etapa de enviar el mensaje de suspensión en respuesta a un primer paquete de señales de ejecución de suspensión; y
la etapa de enviar un mensaje de continuación en el controlador de ejecución incluye la etapa de enviar el mensaje de continuación después de un periodo de tiempo predeterminado en el que no se reciba ningún paquete de señales de ejecución de suspensión.
7. Método según la reivindicación 4, caracterizado porque:
la señal de ejecución de suspensión está representada por un paquete de señales de ejecución de suspensión y la señal de ejecución de continuación está representada por un paquete de señales de ejecución de continuación; y
la etapa de enviar un mensaje de suspensión en el controlador de ejecución incluye la etapa de enviar el mensaje de suspensión en respuesta a un paquete de señales de ejecución de suspensión; y
la etapa de enviar un mensaje de continuación en el controlador de ejecución incluye la etapa de enviar el mensaje de continuación en respuesta a un paquete de señales de ejecución de continuación.
ES99115043T 1994-04-28 1995-04-19 Metodo para controlar la ejecucion de un programa de audio y video interactivo. Expired - Lifetime ES2147719T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US234146 1994-04-28
US08/234,146 US5563648A (en) 1994-04-28 1994-04-28 Method for controlling execution of an audio video interactive program

Publications (2)

Publication Number Publication Date
ES2147719T1 ES2147719T1 (es) 2000-10-01
ES2147719T3 true ES2147719T3 (es) 2004-05-01

Family

ID=22880139

Family Applications (2)

Application Number Title Priority Date Filing Date
ES99115043T Expired - Lifetime ES2147719T3 (es) 1994-04-28 1995-04-19 Metodo para controlar la ejecucion de un programa de audio y video interactivo.
ES95105800T Expired - Lifetime ES2142966T3 (es) 1994-04-28 1995-04-19 Metodo para controlar la ejecucion de un programa de audio/video interactivo.

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES95105800T Expired - Lifetime ES2142966T3 (es) 1994-04-28 1995-04-19 Metodo para controlar la ejecucion de un programa de audio/video interactivo.

Country Status (11)

Country Link
US (1) US5563648A (es)
EP (2) EP0949816B1 (es)
JP (1) JP4011128B2 (es)
KR (1) KR100334086B1 (es)
CN (1) CN1097386C (es)
CA (1) CA2145898C (es)
DE (3) DE949816T1 (es)
ES (2) ES2147719T3 (es)
PT (1) PT949816E (es)
RU (1) RU95106670A (es)
TW (1) TW357534B (es)

Families Citing this family (119)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9400101D0 (en) * 1994-01-05 1994-03-02 Thomson Consumer Electronics Consumer interface for a satellite television system
US8793738B2 (en) * 1994-05-04 2014-07-29 Starsight Telecast Incorporated Television system with downloadable features
US5666293A (en) * 1994-05-27 1997-09-09 Bell Atlantic Network Services, Inc. Downloading operating system software through a broadcast channel
US5768539A (en) * 1994-05-27 1998-06-16 Bell Atlantic Network Services, Inc. Downloading applications software through a broadcast channel
US5614940A (en) * 1994-10-21 1997-03-25 Intel Corporation Method and apparatus for providing broadcast information with indexing
US6064378A (en) * 1994-12-23 2000-05-16 Thomson Consumer Electronics, Inc. Program guide in a digital video system
US5778406A (en) * 1995-06-30 1998-07-07 Thomson Consumer Electronics, Inc. Apparatus for delivering CPU independent data for little and big endian machines
US5920572A (en) * 1995-06-30 1999-07-06 Divicom Inc. Transport stream decoder/demultiplexer for hierarchically organized audio-video streams
US5826166A (en) * 1995-07-06 1998-10-20 Bell Atlantic Network Services, Inc. Digital entertainment terminal providing dynamic execution in video dial tone networks
US5835717A (en) * 1995-12-13 1998-11-10 Silicon Graphics, Inc. System and method for saving state information in an interactive television system
US6044396A (en) * 1995-12-14 2000-03-28 Time Warner Cable, A Division Of Time Warner Entertainment Company, L.P. Method and apparatus for utilizing the available bit rate in a constrained variable bit rate channel
US5729292A (en) * 1995-12-21 1998-03-17 Thomson Multimedia, S.A. Optimizing performance in a packet slot priority packet transport system
US5835493A (en) * 1996-01-02 1998-11-10 Divicom, Inc. MPEG transport stream remultiplexer
US6101546A (en) * 1996-03-11 2000-08-08 Microsoft Corporation Method and system for providing data files that are partitioned by delivery time and data type
US6240555B1 (en) * 1996-03-29 2001-05-29 Microsoft Corporation Interactive entertainment system for presenting supplemental interactive content together with continuous video programs
US5918012A (en) * 1996-03-29 1999-06-29 British Telecommunications Public Limited Company Hyperlinking time-based data files
US6025837A (en) 1996-03-29 2000-02-15 Micrsoft Corporation Electronic program guide with hyperlinks to target resources
US6225993B1 (en) * 1996-04-22 2001-05-01 Sun Microsystems, Inc. Video on demand applet method and apparatus for inclusion of motion video in multimedia documents
EP0810789B1 (en) * 1996-05-30 2004-07-14 Matsushita Electric Industrial Co., Ltd. Data transmitting apparatus, data receiving apparatus and method and communication system
EP1513348A1 (en) * 1996-09-11 2005-03-09 Matsushita Electric Industrial Co., Ltd. Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution
JP3434653B2 (ja) * 1996-12-05 2003-08-11 富士通株式会社 マルチメディアデータ蓄積伝送方法及び装置
US5850218A (en) 1997-02-19 1998-12-15 Time Warner Entertainment Company L.P. Inter-active program guide with default selection control
GB2325537B8 (en) * 1997-03-31 2000-01-31 Microsoft Corp Query-based electronic program guide
CA2257578C (en) * 1997-04-07 2003-01-21 At&T Corp. System and method for processing object-based audiovisual information
EP0909509B1 (en) * 1997-04-07 2007-05-30 AT & T Corporation System and method for generation and interfacing of bitstreams representing mpeg-coded audiovisual objects
JP4726097B2 (ja) * 1997-04-07 2011-07-20 エイ・ティ・アンド・ティ・コーポレーション 適応制御を行うことができるmpegコード化オーディオ・ビジュアル対象物をインターフェースで連結するためのシステムおよび方法
US5818440A (en) * 1997-04-15 1998-10-06 Time Warner Entertainment Co. L.P. Automatic execution of application on interactive television
US6801575B1 (en) * 1997-06-09 2004-10-05 Sharp Laboratories Of America, Inc. Audio/video system with auxiliary data
JPH1127641A (ja) * 1997-07-07 1999-01-29 Toshiba Corp テレビジョン受信機
EP0907285A1 (en) * 1997-10-03 1999-04-07 CANAL+ Société Anonyme Downloading data
WO1999019864A2 (en) 1997-10-15 1999-04-22 At & T Corp. Improved system and method for processing object-based audiovisual information
US6351471B1 (en) * 1998-01-14 2002-02-26 Skystream Networks Inc. Brandwidth optimization of video program bearing transport streams
US6195368B1 (en) 1998-01-14 2001-02-27 Skystream Corporation Re-timing of video program bearing streams transmitted by an asynchronous communication link
US6246701B1 (en) 1998-01-14 2001-06-12 Skystream Corporation Reference time clock locking in a remultiplexer for video program bearing transport streams
US6292490B1 (en) 1998-01-14 2001-09-18 Skystream Corporation Receipts and dispatch timing of transport packets in a video program bearing stream remultiplexer
US6351474B1 (en) 1998-01-14 2002-02-26 Skystream Networks Inc. Network distributed remultiplexer for video program bearing transport streams
US6654931B1 (en) 1998-01-27 2003-11-25 At&T Corp. Systems and methods for playing, browsing and interacting with MPEG-4 coded audio-visual objects
US7032236B1 (en) * 1998-02-20 2006-04-18 Thomson Licensing Multimedia system for processing program guides and associated multimedia objects
EP1057339B1 (en) * 1998-02-20 2003-07-09 Thomson Consumer Electronics, Inc. A multimedia system for processing program guides and associated multimedia objects
US6609144B1 (en) 1998-05-04 2003-08-19 Matsushita Electric Industrial Co., Ltd. Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution
WO1999066679A1 (en) * 1998-06-19 1999-12-23 Matsushita Electric Industrial Co., Ltd. Data transmitting/receiving method and device, and program recorded medium
US6442755B1 (en) 1998-07-07 2002-08-27 United Video Properties, Inc. Electronic program guide using markup language
US6311221B1 (en) * 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
JP2000092118A (ja) * 1998-09-08 2000-03-31 Hitachi Ltd プログラマブルネットワーク
FR2784474A1 (fr) * 1998-10-08 2000-04-14 Thomson Multimedia Sa Gestionnaire d'applications avec jeu d'instructions de gestion variable
US7487534B1 (en) * 1998-11-12 2009-02-03 General Instrument Corporation Application programming interface (API) for accessing and managing resources in digital television receiver
US7877290B1 (en) 1999-03-29 2011-01-25 The Directv Group, Inc. System and method for transmitting, receiving and displaying advertisements
US7552458B1 (en) * 1999-03-29 2009-06-23 The Directv Group, Inc. Method and apparatus for transmission receipt and display of advertisements
AU4182400A (en) 1999-03-30 2000-10-16 Diva Systems Corporation User access to secondary content associated with a primary content
US7222155B1 (en) 1999-06-15 2007-05-22 Wink Communications, Inc. Synchronous updating of dynamic interactive applications
US7069571B1 (en) 1999-06-15 2006-06-27 Wink Communications, Inc. Automated retirement of interactive applications using retirement instructions for events and program states
US7634787B1 (en) 1999-06-15 2009-12-15 Wink Communications, Inc. Automatic control of broadcast and execution of interactive applications to maintain synchronous operation with broadcast programs
US7325245B1 (en) * 1999-09-30 2008-01-29 Intel Corporation Linking to video information
US8250617B2 (en) 1999-10-29 2012-08-21 Opentv, Inc. System and method for providing multi-perspective instant replay
US6970641B1 (en) * 2000-09-15 2005-11-29 Opentv, Inc. Playback of interactive programs
AU770707B2 (en) * 1999-10-29 2004-02-26 Opentv, Corp. Playback of interactive programs
US7000245B1 (en) 1999-10-29 2006-02-14 Opentv, Inc. System and method for recording pushed data
EP1224806B1 (en) * 1999-10-29 2003-11-19 OpenTV, Corp. System and method for recording pushed data
US6530084B1 (en) * 1999-11-01 2003-03-04 Wink Communications, Inc. Automated control of interactive application execution using defined time periods
US8291444B1 (en) 1999-12-30 2012-10-16 Intel Corporation System for controlling use of broadcast content
FR2803472B1 (fr) * 2000-01-03 2003-05-16 Nptv Procede informatique pour l'exploitation d'une emission de television numerique interactive
US7631338B2 (en) * 2000-02-02 2009-12-08 Wink Communications, Inc. Interactive content delivery methods and apparatus
US7028327B1 (en) 2000-02-02 2006-04-11 Wink Communication Using the electronic program guide to synchronize interactivity with broadcast programs
US7367042B1 (en) 2000-02-29 2008-04-29 Goldpocket Interactive, Inc. Method and apparatus for hyperlinking in a television broadcast
US7343617B1 (en) 2000-02-29 2008-03-11 Goldpocket Interactive, Inc. Method and apparatus for interaction with hyperlinks in a television broadcast
FR2807265B1 (fr) * 2000-04-03 2003-01-24 Sagem Dispositif de reception et de restitution de sequences audio et video
US7702995B2 (en) * 2000-04-24 2010-04-20 TVWorks, LLC. Method and system for transforming content for execution on multiple platforms
US8936101B2 (en) * 2008-07-17 2015-01-20 Halliburton Energy Services, Inc. Interventionless set packer and setting method for same
US9788058B2 (en) 2000-04-24 2017-10-10 Comcast Cable Communications Management, Llc Method and system for automatic insertion of interactive TV triggers into a broadcast data stream
US7360231B2 (en) * 2000-05-01 2008-04-15 The Directv Group, Inc. System for obtaining data regarding customer use of interactive television
WO2001084824A2 (en) * 2000-05-03 2001-11-08 Worldgate Service, Inc. Television terminal for processing and controlling memory resources for plural applications
US6629227B1 (en) * 2000-05-04 2003-09-30 Scientific-Atlanta, Inc. System and method for a communication terminal to manage memory and maintain a current application version for multiple applications
GB0016062D0 (en) * 2000-06-30 2000-08-23 Koninkl Philips Electronics Nv Playback of applications with non-linear time
JP4543513B2 (ja) * 2000-07-17 2010-09-15 ソニー株式会社 双方向通信システム、表示装置、ベース装置および双方向通信方法
JP4501243B2 (ja) * 2000-07-24 2010-07-14 ソニー株式会社 テレビジョン受像機およびプログラム実行方法
US6704926B1 (en) * 2000-09-28 2004-03-09 International Business Machines Corporation Bimodal Java just-in-time complier
US6889384B1 (en) * 2000-11-08 2005-05-03 The Directv Group, Inc. Simplified interactive user interface for multi-video channel navigation
US6917627B1 (en) 2000-11-21 2005-07-12 The Directv Group, Inc. Hybrid satellite communications system
US20020152467A1 (en) * 2001-02-12 2002-10-17 Rosario Fiallos Automated generation of conditional access packets for IRD upgrades via radio frequency software download in satellite television systems
US20020178455A1 (en) * 2001-03-14 2002-11-28 General Instrument Corporation Dynamic movement of the control channel for broadband communication devices
US7313824B1 (en) * 2001-07-13 2007-12-25 Liquid Machines, Inc. Method for protecting digital content from unauthorized use by automatically and dynamically integrating a content-protection agent
US7154916B2 (en) * 2001-07-26 2006-12-26 The Directv Group, Inc. Method for real-time insertion of auxiliary data packets into DSS bitstream in the presence of one or more service channels
WO2003015394A2 (en) * 2001-08-06 2003-02-20 Digeo, Inc. System and method to provide local content and corresponding applications via carousel transmission
US6996564B2 (en) * 2001-08-13 2006-02-07 The Directv Group, Inc. Proactive internet searching tool
US8880709B2 (en) * 2001-09-12 2014-11-04 Ericsson Television Inc. Method and system for scheduled streaming of best effort data
GB0122585D0 (en) 2001-09-19 2001-11-07 Koninl Philips Electronics Nv Control of an interactive application
GB0122669D0 (en) * 2001-09-20 2001-11-14 Koninl Philips Electronics Nv Processing of a broadcast signal
US20030093515A1 (en) * 2001-11-14 2003-05-15 Kauffman Marc W. Quality of service control of streamed content delivery
US20030099364A1 (en) * 2001-11-28 2003-05-29 Thompson Mark R. Playback manipulation of HTTP streamed content objects
US7844994B2 (en) * 2002-03-22 2010-11-30 The Directv Group, Inc. System and method for persistent storage of common user information for interactive television using a centrally located repository
US20040210947A1 (en) 2003-04-15 2004-10-21 Shusman Chad W. Method and apparatus for interactive video on demand
US20030196206A1 (en) 2002-04-15 2003-10-16 Shusman Chad W. Method and apparatus for internet-based interactive programming
US20040032486A1 (en) 2002-08-16 2004-02-19 Shusman Chad W. Method and apparatus for interactive programming using captioning
EP1377034A1 (en) * 2002-06-27 2004-01-02 Thomson Licensing S.A. Data processing device and method for interactive television
US20040031052A1 (en) * 2002-08-12 2004-02-12 Liberate Technologies Information platform
AU2003268273B2 (en) * 2002-08-30 2007-07-26 Opentv, Inc Carousel proxy
US20040194153A1 (en) * 2003-03-24 2004-09-30 Sony Corporation And Sony Electronics Inc. Conservation of system resources by efficiently activating/de-activating applications
US7076616B2 (en) * 2003-03-24 2006-07-11 Sony Corporation Application pre-launch to reduce user interface latency
US7693222B2 (en) * 2003-08-13 2010-04-06 Ericsson Television Inc. Method and system for re-multiplexing of content-modified MPEG-2 transport streams using PCR interpolation
US7870352B2 (en) * 2003-11-13 2011-01-11 Stalker Altan J State-based memory unloading
PL367409A1 (en) * 2004-04-20 2005-10-31 Advanced Digital Broadcast Ltd. Tv analogue and digital signal receiver and method for receiving analogue and digital signals
WO2006049185A1 (ja) * 2004-11-02 2006-05-11 Matsushita Electric Industrial Co., Ltd. アプリケーションプログラム実行装置
US20060225107A1 (en) * 2005-04-01 2006-10-05 Microsoft Corporation System for running applications in a resource-constrained set-top box environment
US7870562B1 (en) * 2005-06-24 2011-01-11 Apple Inc. Media rendering hierarchy
US8776078B2 (en) * 2008-05-20 2014-07-08 International Business Machines Corporation Method for dynamically freeing computer resources
US7991801B2 (en) * 2008-06-10 2011-08-02 International Business Machines Corporation Real-time dynamic and synchronized captioning system and method for use in the streaming of multimedia data
US8566481B2 (en) * 2009-06-10 2013-10-22 Cisco Technology, Inc. Managing configuration data
US20110154420A1 (en) * 2009-12-17 2011-06-23 Level 3 Communications, Llc Data Feed Resource Reservation System
US20120050619A1 (en) 2010-08-30 2012-03-01 Sony Corporation Reception apparatus, reception method, transmission apparatus, transmission method, program, and broadcasting system
KR20120055779A (ko) * 2010-11-23 2012-06-01 한국전자통신연구원 지그비 기반의 음성 데이터 송수신 시스템 및 그의 음성 데이터 송수신 방법
US8935719B2 (en) 2011-08-25 2015-01-13 Comcast Cable Communications, Llc Application triggering
JP5957204B2 (ja) * 2011-11-01 2016-07-27 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
US8687947B2 (en) 2012-02-20 2014-04-01 Rr Donnelley & Sons Company Systems and methods for variable video production, distribution and presentation
US9880776B1 (en) 2013-02-22 2018-01-30 Veritas Technologies Llc Content-driven data protection method for multiple storage devices
US9414114B2 (en) 2013-03-13 2016-08-09 Comcast Cable Holdings, Llc Selective interactivity
US11076205B2 (en) 2014-03-07 2021-07-27 Comcast Cable Communications, Llc Retrieving supplemental content
US10114661B2 (en) * 2014-11-07 2018-10-30 Roku, Inc. System and method for fast starting an application
US9948962B2 (en) 2014-11-13 2018-04-17 Time Warner Cable Enterprises Llc Apparatus and methods for efficient delivery of electronic program guide data
US11650562B2 (en) 2019-08-26 2023-05-16 Toyota Motor Engineering & Manufacturing North America, Inc. Interface assemblies for manufacturing components

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3803491A (en) * 1971-05-26 1974-04-09 Tocom Communications system
US3891792A (en) * 1974-06-25 1975-06-24 Asahi Broadcasting Television character crawl display method and apparatus
US4528589A (en) * 1977-02-14 1985-07-09 Telease, Inc. Method and system for subscription television billing and access
US4264925A (en) * 1979-08-13 1981-04-28 Michael J. Freeman Interactive cable television system
US4323922A (en) * 1979-12-17 1982-04-06 Oak Industries Inc. Television coding system with channel level identification
US4965825A (en) * 1981-11-03 1990-10-23 The Personalized Mass Media Corporation Signal processing apparatus and methods
US5191573A (en) * 1988-06-13 1993-03-02 Hair Arthur R Method for transmitting a desired digital video or audio signal
US5003591A (en) * 1989-05-25 1991-03-26 General Instrument Corporation Functionally modifiable cable television converter system
WO1991003112A1 (en) * 1989-08-23 1991-03-07 Delta Beta Pty. Ltd. Program transmission optimisation
US5132992A (en) * 1991-01-07 1992-07-21 Paul Yurt Audio and video transmission and receiving system
US5168356A (en) * 1991-02-27 1992-12-01 General Electric Company Apparatus for segmenting encoded video signal for transmission
EP0514819B1 (en) * 1991-05-23 1996-05-01 Hitachi, Ltd. Wide-screen television receiver with aspect ratio conversion function and method of displaying a magnified range
US5289276A (en) * 1992-06-19 1994-02-22 General Electric Company Method and apparatus for conveying compressed video data over a noisy communication channel
US5418559A (en) * 1992-10-23 1995-05-23 At&T Corp. Multi-channel television converter for conventional and interactive signals
US5440632A (en) * 1992-12-02 1995-08-08 Scientific-Atlanta, Inc. Reprogrammable subscriber terminal

Also Published As

Publication number Publication date
EP0680213B1 (en) 2000-02-16
KR100334086B1 (ko) 2002-09-05
PT949816E (pt) 2003-12-31
DE949816T1 (de) 2001-01-25
EP0949816A3 (en) 2000-06-14
CN1112333A (zh) 1995-11-22
DE69515076T2 (de) 2000-07-13
DE69531561T2 (de) 2004-06-17
RU95106670A (ru) 1997-01-20
JP4011128B2 (ja) 2007-11-21
CN1097386C (zh) 2002-12-25
CA2145898C (en) 2004-10-26
US5563648A (en) 1996-10-08
ES2147719T1 (es) 2000-10-01
CA2145898A1 (en) 1995-10-29
DE69531561D1 (de) 2003-09-25
EP0680213A3 (en) 1996-05-08
ES2142966T3 (es) 2000-05-01
JPH0851596A (ja) 1996-02-20
KR950035418A (ko) 1995-12-30
EP0949816A2 (en) 1999-10-13
EP0680213A2 (en) 1995-11-02
TW357534B (en) 1999-05-01
DE69515076D1 (de) 2000-03-23
EP0949816B1 (en) 2003-08-20

Similar Documents

Publication Publication Date Title
ES2147719T3 (es) Metodo para controlar la ejecucion de un programa de audio y video interactivo.
JP3781454B2 (ja) オーディオ・ビデオ対話信号を処理する方法と装置
ES2201511T3 (es) Tratamiento de un flujo de transporte digital.
ES2206957T3 (es) Actuador para dispositivo de caja de adaptacion multimedios para norma ieee1394.
JP4283877B2 (ja) プログラム受信実行装置及びそのためのプログラム送信装置
EP0909094A1 (en) Multithread data processor
CA2585255C (en) System and method for reserve allocation of event data
CN114765691B (zh) 视频直播的功能组件加载方法、数据处理方法及设备
US20050278721A1 (en) Applications manager with variable management instruction set
CN112653915A (zh) 一种基于电视的传感赋能方法、装置、电视及存储介质
US6439999B1 (en) Method for controlling execution of processing in video game, storage medium storing processing execution control program, and game apparatus
JP2002513253A (ja) レシーバ/デコーダおよびビデオデータの処理方法
JP2001518217A (ja) コンピュータ・メモリ構成
JP4303884B2 (ja) モデム制御
KR100604211B1 (ko) 리시버/디코더 및 이를 구비한 방송 시스템
CN117667420A (zh) 资源调度方法、设备及存储介质
JP2003015889A (ja) 情報処理装置
MXPA00009426A (es) Administracion de memoria en un receptor/descodificador
JPH07231323A (ja) コンピュータ装置
MXPA00000776A (es) Controlador de dispositivo de caja superior ieee