MXPA03007574A - Interfase de programacion de aplicacion de desmultiplexor. - Google Patents

Interfase de programacion de aplicacion de desmultiplexor.

Info

Publication number
MXPA03007574A
MXPA03007574A MXPA03007574A MXPA03007574A MXPA03007574A MX PA03007574 A MXPA03007574 A MX PA03007574A MX PA03007574 A MXPA03007574 A MX PA03007574A MX PA03007574 A MXPA03007574 A MX PA03007574A MX PA03007574 A MXPA03007574 A MX PA03007574A
Authority
MX
Mexico
Prior art keywords
demultiplexer
readable medium
presentation
data
descriptor
Prior art date
Application number
MXPA03007574A
Other languages
English (en)
Inventor
T Dunbar Geoffrey
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of MXPA03007574A publication Critical patent/MXPA03007574A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/434Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Television Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Television Signal Processing For Recording (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Se presenta un grupo de interfases y estructuras de datos (es decir, API de desmultiplexor) para representar un desmultiplexor de datos multimedia. La estructura de datos utiliza un numero de campos, cada uno conteniendo un elemento de un comando. En una modalidad, por lo menos siete comandos se forman para la operacion apropiada del desmultiplexor, incluyendo Inicializar, Descriptor de Presentacion de Fijacion, Descriptor de Presentacion de Obtencion, Descriptor de Presentacion de Obtencion Pendiente, Entrada de Procedimiento, Salida de Procedimiento y comandos de Vaciado. La API de desmultiplexor permite que el consumidor utilice datos en corriente multiplexados, tales como DV en una manera uniforme para generara datos en corriente elementales tales como de audio y video (comprimidos y no comprimidos) y permite la utilizacion de desmultiplexores como un componente independiente.

Description

INTERFASE DE PROGRAMACION DE APLICACION DE DESMULTIPLEXOR CAMPO DE LA INVENCION Esta invención se refiere en general al procesamiento de datos electrónico y, más particularmente, se refiere al manejo de datos multimedia en un ambiente de computación.
ANTECEDENTES DE LA INVENCION La multimedia con base en la forma digital, la combinación de video y audio en un formato digital para la observación en un dispositivo digital está rápidamente creciendo en capacidad y proliferación. Aproximadamente cada computadora personal fabricada hoy en día incluye alguna forma de multimedia. Las ventas de productos digitales tales como cámaras, grabadoras de video, teléfonos y televisiones se están incrementando regularmente. La multimedia también se está convirtiendo aceleradamente predominante en el área del Internet mientras el crecimiento del Internet continúe a velocidad constante y aceleradamente. Junto con este crecimiento ha venido el crecimiento de expectaciones de funcionamiento a través de usuarios de dicho equipo de computación. Estas expectaciones incrementadas del usuario no son solamente hacia la capacidad del hardware, sino a la capacidad de procesamiento de los datos mismos. Una técnica conocida como multimedia simultánea ha sido desarrollada para aplicaciones de multimedia que satisfacen estas expectaciones incrementadas. La multimedia simultánea permite que los datos sean transferidos de tal forma que pueden ser procesados como una corriente estable y continua. Esto tiene el beneficio de que los datos pueden ser desplegados o escuchados antes de que archivo completo sea transmitido, una condición necesaria para grandes archivos multimedia. Inicialmente, el marco de trabajo de multimedia simultánea consiste de una cadena de módulos de procesamiento de datos (por ejemplo, filtros de captura, filtros de transformación, y filtros de interpretación) con muy poca inteligencia a partir del administrador de la cadena. Los módulos de procesamiento de datos, también llamados filtros, toman las decisiones en cómo conectarse, que formatos de datos utilizar, y cómo controlarse unos a otros. Durante la conexión de los filtros en una cadena, los protocolos definen una secuencia fija predefinida de flujo de datos y negociaciones de conexión de control. Una secuencia de negociación típica es negociar lo siguiente en orden: la interfase, el medio, el formato de datos, colocadores, y el reloj maestro. La cadena de procesamiento de datos proporciona una solución de extremo a extremo dentro de un sistema de computadora. Mientras la complejidad de la multimedia simultánea se incrementa, la industria reconoce que se vuelve necesario optimizar las cadenas de procesamiento que estuvieron procesando datos con restricciones en tiempo real tales como cadenas de procesamiento de audio y de video. Una solución es DirectShow® de Microsoft® Corporation, la cual provee la reproducción de corrientes de multimedia de archivos locales o de servidores del Internet, captura las corrientes de multimedia de los dispositivos, y la conversión del formato de las corrientes multimedia. DirectShow® permite la reproducción de contenido de audio y de video de tipos de archivos tales como Windows Media Audio, Windows Media Video, MPEG, Apple® QuickTime®, Audio-Video Interleaved (AVI), y WAV (Windows Wave). DirectShow® incluye un sistema de componentes de filtro enchufables. Los filtros son objetos que soportan las interfases de DirectShow® y que son capaces de operar en corrientes de datos a través de la lectura, copiado, modificación y escritura de datos a un archivo. Los tipos básicos de filtros incluyen un filtro de origen, el cual toma los datos de alguna fuente, tal como un archivo en disco, una alimentación de satélite, un servidor de Internet, o una VCR, y lo introduce en la gráfica del filtro, la cual es una conexión de los filtros. Los filtros en una gráfica de filtro incluyen un filtro de transformación, el cual convierte el formato de los datos, un filtro de sincronización y de origen que recibe los datos y transmite los datos; y un filtro de interpretación, el cual interpreta los datos, tales como la interpretación de los datos a un dispositivo de pantalla. Los datos pueden ser interpretados a cualquier ubicación que acepte medios de comunicación de comunicación. Otros tipos de filtros incluidos en DirectShow® incluyen filtros de efectos, que agregan efectos si cambiar el tipo de datos, y filtros analizadores, que entienden el formato de los datos de origen y saben cómo leer los bytes correctamente, crean sellos de tiempo, y ejecutan búsquedas. Durante la operación, todos los datos pasan de un filtro a otro junto con una gran cantidad de información de control. Cada filtro contiene objetos llamados "pines" (agujas o terminales, conductor macho en un enchufe de conexión) que se utilizan para conectarse con otros filtros. Cuando los filtros están conectados utilizando pines, se crea una gráfica de filtro. Observar que hay una distinción entre una "gráfica de filtro" que es el concepto de un grupo de filtros conectados, y una "Gráfica de Filtro" que es el objeto que se creo en DirectShow® que controla el grupo de filtros conectados, la "gráfica de filtro". La "Gráfica de Filtro" es más correctamente llamada un administrador de gráfica de filtro. Para control del flujo de datos y conexiones en una gráfica de filtro, DirectShow® incluye un administrador de gráfica de filtro. El administrador de gráfica de filtro asiste en el aseguramiento de que los filtros estén conectados en el orden apropiado. Sin embargo, los datos y mucho del control no pasan a través del administrador de la gráfica de filtro. Los filtros deben estar enlazados apropiadamente. Por ejemplo, el administrador de gráfica de filtro puede buscar una configuración de interpretación, determinar los tipos de filtros disponibles, enlazar los filtros en un orden apropiado para un tipo de datos dados y proporcionar un filtro de interpretación apropiado.
Mientras que los filtros permiten una gran oportunidad para reutilizar los programas, el uso de esos filtros también crea algunos problemas no anticipados. Uno de los problemas creados por los filtros es el gran número de APIs para los filtros sobrevengan. Cada filtro esencialmente tiene un API separado. Como un resultado, un filtro dado debe ser capaz de interrelacionarse con el API para cada filtro con el cual se podría unir. También, el uso de filtros crea el problema de desconectar un filtro dado problemático. Cuando un filtro dado en una gráfica es desconectado, cualquier filtro que se intercomunique con el filtro desconectado requiere una interfase asociada diferente. En general, la programación de un filtro para airosamente manejar la pérdida de una interfase es difícil, según el estado del filtro puede ser desconocido cuando se pierde la interfase. La pérdida de interfases, por lo tanto, tiende a dirigir un comportamiento impredecible en los filtros y finalmente programas que se comportan de manera enfermiza. La interfase entre los controles de filtros del flujo de datos mientras el administrador de filtro controla el soporte y remoción de los filtros. La distribución del control en esta forma hace difícil el diseño del software, ya que existen inevitablemente algunas funciones de control que cruzan el límite entre los bloques. Otro problema con DirectShow es que los filtros llevan en hombros la responsabilidad de la funcionalidad de negociación del formato de los medios de comunicación de comunicación y administración de la memoria intermedia. Los filtros se comunican con otros filtros para lograr esta tarea. La dependencia en los filtros causa que la construcción de aplicaciones en DirectShow sea susceptible a fallas e ineficiencias que pueden ser programadas en un filtro. De esta forma un filtro mal escrito puede fácilmente bajar la gráfica de filtro y una aplicación asociada con la gráfica de filtro. Existe una necesidad de mejorar la arquitectura de DirectShow®. Más particularmente, existe una necesidad de mejorar el control del procesamiento de medios de comunicación multimedia.
COMPENDIO DE LA INVENCION La invención incluye un grupo de interfases, estructuras de datos y eventos para representar un desmultiplexor de datos de multimedia. La estructura de datos utiliza un número de campos, cada uno conteniendo un elemento de un comando. En una modalidad, por lo menos 7 comandos se forman para la operación apropiada del desmultiplexor, incluyendo los comandos Iniciar, FijarDescriptorPresentación, Obten erD es criptorP resentación , ObteberDescriptorPresentaciónPendiente, EntradaProceso, SalidaProceso y Limpiar. Las interfases son colectivamente conocidas como la Inferíase de Programación de Aplicación de Desmultiplexor (API Demux). La API Demux permite al cliente utilizar datos de corriente sucios tales como DV en una forma uniforme para generar datos de corriente elementales tales como audio y video (comprimidos o descomprimidos).
El método Iniciar se utiliza para iniciar y configurar el objeto de desmultiplexor y tiene parámetros que se utilizan para configurar el desmultiplexor. Los parámetros incluyen un objeto descriptor de corriente sucia que describe la corriente sucia, un tipo de medio seleccionado para el descriptor de corriente sucia, un arreglo de tipos mayores de corrientes elementales que el usuario está interesado en recuperar como una salida del desmultiplexor, y un conteo de tipos mayores en el arreglo de tipos mayores. El método de FijarDescriptorPresentación se utiliza para dinámicamente fijar el descriptor de presentación activo en el objeto del desmultiplexor. El método de FijarDescriptorPresentación incluye un apuntador a un objeto de descriptor de presentación. El método de EntradaProceso se utiliza para proporcionar una nueva corriente sucia de entrada al objeto del desmultiplexor e incluye un apuntador a un objeto muestra. El método de EntradaProceso tiene un valor de retorno que tiene una nueva bandera de presentación. Si la nueva bandera de presentación tiene un valor VERDADERO, la presentación ha cambiado con base en el descriptor de presentación en la muestra sucia. El usuario debe llamar al método ObtenerDescriptorPresentaciónPendiente para recuperar la siguiente presentación pendiente, seleccionar corrientes deseadas, y llamar el método FijarDescriptorPresentación para habilitar el procesamiento de muestras de la cola de espera de entradas del desmultiplexor. El método de SalidaProceso se utiliza para recuperar por lo menos una corriente elemental de un presentación activa. El método de SalidaProceso incluye un identificador de corriente y un apuntador para apuntar a un objeto de muestra. El proceso de SalidaProceso además incluye un valor de retorno de salida. El valor de retorno de salida incluye un código de error del extremo final de la corriente y un código de error de no más datos. El método de Limpiar se utiliza para limpiar muestras de entrada y salida actualmente en cola de espera. No se necesitan parámetros para el método de Limpiar. El método ObtenerDescriptorPresentación se utiliza para recuperar un clon de un descriptor de presentación actualmente activa en el objeto del desmultiplexor. El método ObtenerDescriptorPresentación incluye un descriptor de presentación. El método ObtenerDescriptorPresentaciónPendiente se utiliza para recuperar la siguiente presentación pendiente. El método ObtenerDescriptorPresentaciónPendiente incluye un descriptor de presentación pendiente. Los aspectos y ventajas adicionales de la invención se harán aparentes a partir de la siguiente descripción detallada de las modalidades ilustrativas que proceden con referencia a las figuras que las acompañan.
BREVE DESCRIPCION DE LOS DIBUJOS Ya que las reivindicaciones anexas establecen las características de la presente invención con particularidad, la invención, junto con estos objetos y ventajas, puede ser mejor entendida a partir de la siguiente descripción detallada tomada en conjunción con los dibujos que la acompañan, en donde: La Figura 1 es un diagrama de bloque ilustrando en general un sistema de computadora ilustrativo en el cual reside la presente invención ; La Figura 2 es un diagrama de bloque ilustrando en general un ambiente de computadora ilustrativo en donde opera la presente invención; La Figura 3 es un diagrama de bloque ilustrando un desmultiplexor de acuerdo con las enseñanzas de la presente invención; La Figura 4 es un diagrama de transición de estado de desmultiplexor de la presente invención; La Figura 5 es un diagrama de estructura de datos ilustrando el modelo de estructura de datos que permite la construcción de llamadas de la presente invención; La Figura 6 es un diagrama de estructura de datos simplificado ilustrando la construcción de un mensaje ilustrativo de la presente invención; y La Figura 7 es un diagrama de flujo ilustrando los pasos tomados para cargar y operar el desmultiplexor de acuerdo con las enseñanzas de la presente invención cuando una aplicación no negocia una pila de multimedia.
DESCRIPCION DETALLADA DE LA INVENCION La invención proporciona un grupo de interfases, estructuras de datos y eventos para representar un desmultiplexor de datos de multimedia que son colectivamente llamados una API de desmultiplexor. La API permite al consumidor utilizar datos de corriente sucios tales como DV, MPEG2, ASF, etc., en una forma uniforme para generar datos de corriente elementales tales como audio y video (comprimidos o no comprimidos). El API del desmultiplexor soporta la generación dinámica de descriptores de corriente nueva con base en la iniciación de los datos de la corriente sucia y soporta la generación dinámica de descriptores de nueva corriente con base en las muestras de corriente sucia. Adicionalmente, la API de desmultiplexor soporta ya sea la iniciación fuera de banda a través de metadatos a través de la corriente sucia o iniciación en banda a través de muestras de corriente sucia y soporta la generación de muestras desmultiplexadas que pueden extender múltiples memorias intermedias. En el contexto de la arquitectura de la Fundación de Medios de comunicación de Microsoft® Corporation, la API del desmultiplexor está principalmente controlada por, y suministrada a, un procesador de medios de comunicación como se describe aquí más adelante. La API del desmultiplexor está diseñada de tal manera que cualquier arquitectura de multimedia podría ser capaz de utilizar un desmultiplexor en un forma bien definida.
Volviendo a los dibujos, en donde números de referencia similares se refieren a elementos similares, la invención se ilustra como estando implementada en un ambiente de computación adecuado. Aunque no se requiere, la invención será descrita en el contexto general de instrucciones ejecutables por computadora, tales como módulos de programa, siendo ejecutados por una computadora personal. Generalmente, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc., que llevan a cabo tareas particulares o implementan tipos de datos abstractos particulares. Además, aquellos con experiencia en la técnica apreciarán que la invención puede ser practicada con otras configuraciones de sistemas de computación, incluyendo dispositivos portátiles, sistemas de multi-procesador, electrónicos de consumidor basados en microprocesadores o programables, redes de PCs, minicomputadoras, computadoras de marco principal, y similares. La invención también puede ser practicada en ambientes de computación distribuidos en donde las tareas son realizadas por dispositivos de procesamiento remoto que están enlazadas a través de redes de comunicaciones. En un ambiente de computación distribuido, los módulos de programas pueden estar localizados tanto en dispositivos de almacenamiento locales como remotos. La Figura 1 ilustra un ejemplo de un ambiente de sistema de computadora 100 adecuado, en el cual la invención puede ser implementada. El ambiente del sistema de computadora 100 es solamente un ejemplo de un ambiente de computación adecuado y no pretende sugerir ninguna limitación al alcance del uso o funcionalidad de la invención. Tampoco el ambiente de computación 100 debe ser interpretado como teniendo cualquier dependencia o requerimiento relacionado con cualquiera o una combinación de componentes ilustrados en el ambiente operativo ilustrativo 100. La invención es operacional con otros numerosos propósitos generales o ambientes o configuraciones de ambientes de sistema de computación de propósito especial. Ejemplos de sistemas de computación bien conocidos, ambientes y/o configuraciones que pueden ser adecuados para uso con la invención incluyen, pero no se limitan a: computadoras personales, computadoras servidor, dispositivos portátiles, dispositivos de tablilla, sistemas de multiprocesador, sistemas con base en microprocesadores, cajas configuradas para la parte superior, electrónicos de consumidor programables, redes de PCs, minicomputadoras, computadoras principales, ambientes de computación distribuidos que incluyen cualquiera de los sistemas o dispositivos anteriores, y similares. La invención puede ser descrita en el contexto general de instrucciones ejecutables por computadora, tales como módulos de programa, siendo ejecutados por una computadora. En general, los módulos de programa incluyen rutinas, programas, objetos, componentes, estructuras de datos, etc., que llevan a cabo tareas particulares o implementan tipos de datos abstractos particulares. La invención también puede ser practicada en ambientes de computación distribuidos en donde las tareas son realizadas por dispositivos de procesamiento remotos que están enlazados a través de una red de comunicaciones. En un ambiente de computación distribuido, los módulos de programas pueden estar localizados en un medio de almacenamiento de computadora local y/o remota incluyendo dispositivos de almacenamiento de memoria. Con referencia a la Figura 1, un sistema ilustrativo para implementar la invención incluye un dispositivo de computación de propósito general en la forma de una computadora 110. Los componentes de la computadora 110 pueden incluir, pero no se limitan a, una unidad de procesamiento 120, una memoria de sistema 130, una barra colectora de sistema 121 que acopla carios componentes del sistema, incluyendo la memoria del sistema a la unidad de procesamiento 120. La barra colectora de sistema 121 puede ser cualquier de varios tipos de estructuras de barras colectoras incluyendo una barra colectora de memoria o controlador de memoria, una barra colectora periférica, y una barra colectora utilizando cualquiera de una variedad de arquitecturas de barra colectora. A manera de ejemplo, y no limitación, dichas arquitecturas incluyen la barra colectora de la Arquitectura Estándar de la Industria (ISA), barra colectora de la Arquitectura de Micro Canal (MCA), barra colectora ISA Mejorada (EISA), barra colectora local de la Asociación de Estándares Electrónicos de Video (VESA), y la barra colectora Interconexión del Componente Periférico (PCI) también conocido como barra colectora Mezanine. La computadora 110 típicamente incluye una variedad de medios de comunicación legibles por computadora. Los medios de comunicación legibles por computadora pueden ser cualquier medio disponible que puede ser accesado por la computadora 110 e incluye ambos medios de comunicación, volátiles y no volátiles, y medios de comunicación removibles y no removibles. A manera de ejemplo, y no limitación, los medios de comunicación legibles por computadora pueden comprender medios de comunicación de almacenamiento por computadora y medios de comunicación de comunicación. Los medios de comunicación de almacenamiento por computadora incluyen medios de comunicación volátiles y no volátiles, removibles y no removibles implementados en cualquier método o tecnología para almacenar información tal como instrucciones legibles por computadora, estructuras de datos, módulos de programas, u otros datos. El medio de almacenamiento por computadora incluye, pero no se limita a, RAM, ROM, EEPROM, memoria no volátil, u otra tecnología de memoria, CD-ROM, discos versátiles digitales (DVD) u otro medio de almacenamiento óptico, casetes magnéticos, cinta magnética, almacenamiento en disco magnético u otros dispositivos de almacenamiento magnético, o cualquier otro medio que pueda ser utilizado para almacenar la información deseada y la cual puede ser accesada a través de la computadora 110. Los medios de comunicación de comunicación típicamente contienen instrucciones legibles por computadora, estructuras de datos, módulos de programas u otros datos en una señal digital modulada tal como una onda portadora y otro mecanismo de transporte e incluyen cualquier medio de suministro de información. El término "señal de datos modulada" significa una señal que tiene una o más de sus características fijas o cambiadas en dicha manera para así codificar información en la señal. A manera de ejemplo, y no limitación, los medios de comunicación de comunicación incluyen medios de comunicación cableados tales como una red cableada o conexión cableada directa, y medios de comunicación inalámbricos tales como medios de comunicación acústicos, RF, infrarrojos y otros medios de comunicación inalámbricos. Las combinaciones de cualquiera de los anteriores también se debe incluir dentro del alcance de los medios de comunicación legibles por computadora. El sistema de memoria 130 incluye medios de comunicación de almacenamiento por computadora en la forma de memoria volátil y/o no volátil tal como memoria de solo lectura (ROM) 131 y memoria de acceso aleatorio (RAM) 132. Un sistema de entrada/salida básico 133 (BIOS), conteniendo las rutinas básicas que ayudan a transferir información entre elementos dentro de la computadora 110, tal como durante el arranque, es típicamente almacenado en ROM 131. RAM 132 típicamente contiene módulos de datos y/o programas que son inmediatamente accesibles para y/o actualmente ser operados en la unidad de procesamiento 120. A manera de ejemplo, y no limitación, la Figura 1 ilustra el sistema operativo 134, programas de aplicación 135, otros módulos de programa 136, y datos de programa 137. La computadora 110 también puede incluir otros medios de comunicación de almacenamiento por computadora removibles/no removibles, volátiles/no volátiles. A manera de ejemplo solamente, la Figura 1 ilustra una unidad de disco duro 141 que lee de o escribe en medios de comunicación magnéticos no removibles, no volátiles, una unidad de disco magnético 151 que lee de o escribe a un disco magnético 152 removible, no volátil, y una unidad de disco óptico 155 que lee de o escribe a una unidad óptica 156 removible, no volátil tal como un CD ROM u otro medio óptico. Otros medios de comunicación de almacenamiento por computadora removibles/no removibles, volátiles/no volátiles que pueden ser utilizados en el ambiente operativo ilustrativo incluyen, pero no se limitan a, casetes de cinta magnética, tarjetas de memoria simultánea, discos versátiles digitales, cinta de video digital, RAM de estado sólido, ROM de estado sólido y similares. La unidad de disco duro 141 está típicamente conectada a la barra colectora del sistema 121 a través de la interfase de memoria no removible tal como la interfase 140, y la unidad de disco magnético 151 y la unidad de disco óptico 155 están típicamente conectadas a la barra colectora del sistema 121 a través de una interfase de memoria removible, tal como la interfase 150. Los controladores y sus medios de comunicación de almacenamiento por computadora asociados, discutidos anteriormente e ilustrados en la Figura 1, proporcionan instrucciones legibles por computadora, estructuras de datos, módulos de programas y otros datos para la computadora 110. En la Figura 1, por ejemplo, la unidad de disco duro 141 se ilustra como el sistema operativo de almacenamiento 144, los programas de aplicación 145, otros módulos de programa 146, y datos de programa 147. Observar que estos componentes pueden ya sea ser los mismos que o diferentes del sistema operativo 134, programas de aplicación 135, otros módulos de programas 136, y datos de programa 137. Al sistema operativo 144, programas de aplicación 145, otros módulos de programa 146 y datos de programa 147 se les han dado números diferentes aquí para ilustrar que, a un mínimo, son copias diferentes. Un usuario puede capturar comandos e información en la computadora 110 a través de dispositivos de entrada tales como un teclado 162, un dispositivo de apuntamiento 161, comúnmente referido como un ratón, seguibola o almohadilla sensible al tacto, un micrófono 163, y una tableta o digitalizador electrónico 164. Otros dispositivos de entrada (no mostrados) pueden incluir una palanca de mandos, almohadilla de juegos, antena parabólica, escáner, o similares. Estos y otros dispositivos de entrada por lo general están conectados a la unidad de procesamiento 120 a través de una inferíase de entrada de usuario 160 que está acoplada a la barra colectora del sistema, pero pueden estar conectados a través de otras interfases o estructuras de barra colectora, tales como un puerto paralelo, un puerto de juegos o una barra colectora serial universal (USB). Un monitor 191 u otro tipo de dispositivo de pantalla también está conectado a la barra colectora de sistema 121 a través de una ¡nterfase, tal como una interfase de video 190. El monitor 191 también puede estar integrado con un panel de pantalla sensible al tacto o similar. Observar que el monitor y/o panel de pantalla sensible al tacto pueden estar físicamente acoplados a un alojamiento en donde el dispositivo de computación 110 está incorporado, tal como una computadora personal de tipo tablilla. Además, las computadoras tales como el dispositivo de computación 110 también pueden incluir otros dispositivos de salida periféricos tales como altoparlantes 197, e impresora 196, las cuales pueden conectarse a través de una interfase periférica de salida 194 o similar. La computadora 110 puede operar en un ambiente conectado en red utilizando conexiones lógicas a una o más computadoras remotas, tales como una computadora remota 180. La computadora remota 180 puede ser una computadora personal, un servidor, un direccionador, una PC en red, un dispositivo par, u otro nodo en red común, y típicamente incluyen muchos o todos los elementos descritos anteriormente con relación a la computadora 110, aunque solamente un dispositivo de almacenamiento de memoria 181 ha sido ilustrado en la Figura 1. Las conexiones lógicas descritas en la Figura 1 incluyen un red de área local (LAN) 171, y un red de área amplia (WAN) 173, pero también pueden incluir otras redes. Dichos ambientes conectados en red son lugares comunes en oficinas, redes de computadora amplias de empresas, intranets y el Internet. Por ejemplo, el sistema de computadora 110 puede comprender la máquina de origen a partir de la cual los datos están siendo migrados, y la computadora remota 180 puede comprender la máquina de destino. Observar, sin embargo, que las máquinas de origen y el destino necesitan estar conectadas a través de una red u otros medios de comunicación, pero en su lugar, los datos pueden ser migrados a través de cualquier medio capaz de ser escrito a través de la plataforma de origen y leídos a través de la plataforma o plataformas de destino. Cuando se utiliza en un ambiente conectado en red LAN, la computadora 110 está conectada a la LAN 171 a través de una interfase de red o adaptador 170. Cuando se utiliza en un ambiente conectado en red WAN, la computadora 110 típicamente incluye un módem 172, u otros medios de comunicación para establecer comunicaciones a través de la WAN 173, tal como el Internet. El módem 172, el cual puede ser interno o externo, puede estar conectado a la barra colectora del sistema 121 a través de la interfase de entrada de usuario 160, y otro mecanismo apropiado. En un ambiente conectado en red, los módulos de programa descritos con relación a la computadora 110, o porciones de la misma, pueden ser almacenados en el dispositivo de almacenamiento de memoria remota. A manera de ejemplo, y no limitación, la Figura 1 ilustra programas de aplicación remotos 185 como residentes en el dispositivo de memoria 181. Se apreciará que las conexiones en red mostradas son ilustrativas y otros medios de comunicación para establecer un enlace de comunicación entre las computadoras puede ser utilizado. En la descripción siguiente, la invención será descrita con referencia a acciones y representaciones simbólicas de operaciones que son ejecutadas por una o más computadoras, a menos que se indique otra cosa. Como tal, se entenderá que dichas acciones y operaciones, las cuales a veces se denominan como siendo ejecutadas por computadora, incluyen la manipulación a través de la unidad de procesamiento de la computadora de señales eléctricas representando datos en una forma estructurada. Esta manipulación transforma los datos o mantiene sus ubicaciones en el sistema de memoria de la computadora, lo cual reconfigura o de otra manera alerta la operación de la computadora en una forma bien entendida por aquellos con experiencia en la técnica. Las estructuras de datos en donde los datos son mantenidos como ubicaciones físicas de la memoria que tienen propiedades particulares definidas a través del formato de los datos. Sin embargo, ya que la invención está siendo descrita en el contexto previo, no significa que sea una limitante como apreciarán aquellos con experiencia en la técnica que varias de las acciones y operaciones serán descritas de aquí en adelante pueden también ser ¡mplementadas en hardware. Cambiando ahora a la Figura 2, el desmultiplexor de la presente invención puede operar en la arquitectura de la Fundación de Medios de comunicación, la cual es una implementación de una de las arquitecturas de multimedia de Microsoft. Ya que la Figura 2 muestra el desmultiplexor en la arquitectura de Fundación de Medios de comunicación, se reconocerá que el API del desmultiplexor de la invención es utilizable en otras arquitecturas de multimedia. Antes de describir el desmultiplexor, la Fundación de Medios de comunicación deberá ser descrita. La Fundación de Medios de comunicación es una arquitectura formada por componentes. Como se muestra, la Fundación de Medios de comunicación incluye los componentes de la capa de núcleo 211 que son responsables de alguna unidad básica de funcionalidad en la Fundación de Medios de comunicación, y componentes de la capa de Control 201, responsables de la ejecución de tareas más generales utilizando el componente de Núcleo subyacente. Los componentes de la capa de Núcleo 211 incluyen fuente de medios de comunicación 210 y fuentes de corrientes 214, las cuales proporcionan datos de multimedia a través de una interfase genérica, bien definida. Las fuentes de medios de comunicación 210 describen la presentación, incluyendo corrientes que van a ser acezadas. Existen muchas implementaciones de fuentes de medios de comunicación, para proporcionar datos de medios de comunicación de multimedia de diferentes tipos de archivos multimedia o dispositivos. La capa de Núcleo 211 además incluye las transformaciones mostradas en el bloque 208, el cual ejecuta algún tipo de operación de transformación en datos multimedia a través de una interfase genérica, bien definida. Los ejemplos de transformación son los codificadores/descodificadores, reclasificadotes, re-demostradores, procesadores estadísticos, redemostradores de color, y otros. El desmultiplexor de la presente invención, el cual toma datos de multimedia intercalados como una entrada, y separa los datos en corrientes de medios de comunicación individualmente útiles de datos multimedia es una transformación en la arquitectura de la Figura 2. El bloque 208 además incluye multiplexores, que tomas corrientes de medios de comunicación individuales y los combina en datos de multimedia intercalados. Los multiplexores comparten una interfase común, bien definida, y existen muchas implementaciones para la multiplexión en diferentes tipos de datos multimedia. La capa de Núcleo 211 además incluye pilas de corrientes 212 y pilas de medios de comunicación 230. Las Pilas de medios de comunicación 230 aceptan datos multimedia como entradas a través de una interfase genérica, bien definida. Existen muchas implementaciones de pilas de medios de comunicación para ejecutar diferentes funciones con datos multimedia. Por ejemplo, escribir los datos multimedia a un tipo de archivo dado, o desplegar los datos multimedia en un monitor utilizando una tarjeta de video. Los componentes de la capa de control 210 utilizan los componentes de la capa de núcleo 211 para ejecutar tareas de nivel más alto en una forma más simple. Típicamente un componte de capa de control utilizará muchos componentes de capa de núcleo diferentes para una tarea dada. Por ejemplo', al reproducir un archivo multimedia involucrará una fuente de medios de comunicación para leer eí* archivo del disco y analizar los datos, una o más transformaciones para descomprimir los datos multimedia comprimidos, y una o más pilas de medios de comunicación para desplegar los datos multimedia. La capa de control 201 incluye el motor de medios de comunicación 260, el cual interactúa con la aplicación 202 para recibir y enviar corrientes de medios de comunicación, sesión de medios de comunicación 240, procesador de medios de comunicación 220 y cargador de topología 250, mostrados dentro de la sesión de medios de comunicación 240. El cargador de topología 250 es un componente de la capa de control responsable de la descripción del flujo de datos entre los componentes de la capa de núcleo. Un componente de la capa de control puede ser configurado para evitar el acceso de componentes a nivel núcleo más primitivos utilizados por la capa de control. Los datos fluyen a través de sistema empezando con una fuente de medios de comunicación 210 fluyendo a través de la sesión de medios de comunicación 240 al procesador de medios de comunicación 220 y una salida en la pila de medio 230. El procesador de medios de comunicación 220 opera un trayecto de fuentes de medios de comunicación y otros componentes en la topología. La sesión de medios de comunicación 240 guía cuando ocurren evento en la topología, y el cargador de topología 250 se asegura que ocurran los eventos prescritos en una topología. La sesión de medios de comunicación 240 también configura el procesador de medios de comunicación 220 y consume las muestras devueltas por el procesador de medios de comunicación 210. Hace esto en el contexto del motor de medios de comunicación 260 y envía las muestras desde el procesador de medios de comunicación 220 a las pilas de medios de comunicación que ha negociado con el llamador del motor de medios de comunicación 260 (por ejemplo, la aplicación 202). Los componentes en una topología incluyen los componentes de fuentes de medios de comunicación 210 y los componentes de la pila de medios de comunicación 230 así como otros nodos. El sistema de fundación de medios de comunicación 200 proporciona interfases y un diseño para conectar objetos de medios de comunicación de corriente. El sistema permite a un usuario especificar conexiones entre fuentes genéricas o especificadas, transformaciones, y objetos de pila a través de una abstracción simbólica utilizando un concepto de topología. Cambiando ahora la Figura 3, se describirá una vista global del desmultiplexor 300. En la descripción siguiente, los comandos serán referenciados en la descripción. Estos comandos se describen aquí a continuación. La API del desmultiplexor separa el formato de los datos de la fuente de los datos. La API del desmultiplexor toma los datos multiplexados como una memoria intermedia en la memoria de los datos, y ejecuta la operación de desmultiplexión. Esto tiene el efecto deseado que muchas diferentes fuentes de datos pueden utilizar la misma ¡mplementación del desmultiplexor para ejecutar sus operaciones. Por ejemplo, los datos DV pueden venir directamente de una cámara DV, pero también pueden ser almacenados como un archivo en el disco duro. En este caso, existen dos piezas de código para generar los datos DV multiplexados (por ejemplo, una que habla a la cámara, otra que habla al sistema de archivos), pero la misma ¡mplementación del desmultiplexor puede ser utilizada. El desmultiplexor 300 soporta la interfase IMFDesmultiplexor y es responsable de la división de la corriente sucia en sus partes de corriente elementales. El desmultiplexor 300 opera en un modo sincrónico (similar a un DMO), y puede manejar cambios dinámicos en las corrientes elementales disponibles originadas por los cambios en la corriente sucia. Este acepta y genera muestras que son expresadas a través de la interfase IMFMuestra y acomoda las muestras generadas que se extienden a múltiples memorias intermedias. Una corriente sucia 302 es una corriente individual que contiene más de una corriente elemental. Una corriente elemental 304, 306 es una corriente de elementos similares (por ejemplo, audio, video, etc.). No es necesario ningún tipo de correspondencia de uno a uno entre las muestras sucias 308 y las muestras elementales 310, 312. Por ejemplo, puede haber o no haber una muestra elemental completa para cada corriente elemental en cada muestra sucia. Adicionalmente, no existen requerimientos particulares de que las muestras elementales estén en el orden correcto en la muestra sucia tampoco. Las muestras elementales que salen de la corriente pueden no compartir las mismas marcas de tiempo. Una corriente elemental puede se una compensación de otra. Algunas muestras sucias pueden contener solamente un grupo individual de corrientes elementales para la duración de la corriente. Algunas corrientes sucias pueden tener diferentes juegos de corrientes elementales a diferentes tiempos. Cada juego de corrientes elementales coordenadas es llamado una presentación 320. Cada juego tiene un descriptor de presentación 322 correspondiente. Este descriptor de presentación 322 tiene dos propósitos principales. Primero, describe los tipos de medios de comunicación de cada corriente elemental. Segundo, proporciona un mecanismo para seleccionar cual de las corrientes disponibles será extraída a través del desmultiplexor 300. La Presentación Actual 324 siempre describe las corrientes seleccionadas y los tipos de datos de las corrientes de salida actuales. Antes de que la muestra pueda ser procesada mediante el desmultiplexor 300, un algoritmo de división utilizado para transformar muestras multiplexadas a muestras elementales es necesario para conocer que corrientes van a ser extraídas. Esta información está contenida en el descriptor de presentación 322. Antes de que las corrientes se seleccionen, el descriptor de presentación está "pendiente". Una vez que la corriente es seleccionada, el descriptor de presentación está "activo". Para hacer una presentación activa, ésta es recuperada de la cola de espera de presentación pendiente 326 llamando a ObtenerDescriptorPresentaciónPendiente. Las corrientes apropiadas se seleccionan y después el llamador invoca el método FijarDescriptorPresentación. En este punto (si se logran ciertas condiciones), la presentación se convierte en presentación activa 324 y se remueve de la cola de espera de presentación pendiente 326. Una presentación pendiente solamente se puede convertir en activa si todas las salidas de presentaciones activas previas ha sido servidas. El desmultiplexor 300 contiene por los menos dos juegos de colas de espera. Las colas de espera con colas de espera de entrada 330 y colas de espera de salida 340, 342. Cuando EntradaProceso () es llamado en el desmultiplexor 300, la entrada puede ser inmediatamente procesada o puesta en la cola de espera de entradas 330. Una vez que los datos son procesados, se ponen en una cofa de espera de salida 340, 342. Los tipos de datos y corrientes disponibles en las colas de espera de salida corresponden a la presentación activa actual 324. Ahora que la descripción global del desmultiplexor 300 ha sido descrita, los estados y transiciones del desmultiplexor 300 deberán ser descritos. En la descripción que sigue, los comandos serán referenciados en la descripción. Estos comandos se describen aquí más adelante. Cambiando ahora a la Figura 4, el desmultiplexor 300 está en el estado no iniciado 400 cuando el desmultiplexor 300 ha sido creado pero la Iniciación no ha sido llamada. La iniciación es la única operación válida en el objeto del desmultiplexor 300 en este estado. Al llamar a la lniciación() transformará al desmultiplexor 300 al estado de pendiente 402. El estado pendiente 402 indica que no existe una presentación activa válida. Las llamadas de SalidaProceso fallarán. Para fijar la presentación activa, el procesador de medios de comunicación 220 llama a ObtenerDescriptorPresentaciónPendiente (), selecciona la corriente apropiada y llama a ObtenerDescriptorPresentaciónPendiente (). Si la llamada de ObtenerDescriptorPresentaciónPendiente () falla, entonces se llama a EntradaProceso. Entonces ObtenerDescriptorPresentaciónPendiente () es llamado otra vez hasta se pueda obtener un descriptor de presentación 322. Una vez que DescriptorPresentación ha sido configurado en el desmultiplexor 300, lo pasará al estado Neutral 404. La llamada de Limpiar () descartará todos los datos de entrada y salida en la cola de espera y la transformación del desmultiplexor 300 al estado de pendiente 402.
En el estado Neutral 404, todas las llamadas de función (excepto iniciar) son válidas. Cuando no hay una nueva presentación descubierta en la llamada de EntradaProceso y la última muestra de la presentación actual es servida desde la cola de espera de salida, el desmultiplexor 300 se transformará al estado de pendiente 402. Algunas corrientes tienen duraciones fijas y finitas que pueden ser detectadas con base en el contenido de la corriente. Cuando esta condición es detectada y todas las salidas han sido servidas, el desmultiplexor pasa al estado de final_de_corriente 406. Todas las llamadas futuras regresarán un código de error apropiado. Cuando un error irrecuperable ocurre en el desmultiplexor 300, pasará al estado de error 408. El estado de error 408 puede ser logrado desde cualquier otro estado. Cuando el desmultiplexor 300 no es removido, LiberarQ es llamado y el desmultiplexor 300 pasa al estado final 410 antes de que el desmultiplexor 300 sea removido del sistema. Cuando la última referencia del desmultiplexor 300 es liberada, entonces el desmultiplexor 300 es removido de la memoria sin respetar en qué estado está el desmultiplexor 300. Liberar() puede ser llamada desde cualquier estado, incluyendo el estado de no iniciado. Ahora que los estados y transiciones del desmultiplexor 300 han sido descritos, los comandos que han sido referenciados anteriormente serán descritos. Estos comandos incluyen lniciar(), FijarDescriptorPresentación (), ObtenerDescriptorPresentación(), ObtenerDesciptorPresentaciónPendiente (), EntradaProceso (), SalidaProceso (), y Limpiar() . En la Figura 5 se ilustra un diagrama de una estructura de datos ilustrativa que ilustra la estructura de datos de mensaje básica 460 utilizada para construir los siete mensajes de la API del desmultiplexor de la presente invención. Como se puede ver, la estructura de datos de mensaje 460 comprende un número de campos 4621-N. En una modalidad preferida, el primer campo 462^ está reservado para el Encabezado. Los campos restantes son parámetros. De acuerdo con la estructura de datos de la presente invención, se construye el comando de Iniciar. Como se puede ver a partir del diagrama de la estructura de datos de la Figura 6, el comando Iniciar 480 está construido a partir de un número de campos 482-490. Estos campos con el campo del encabezado 482, un campo de objeto de descriptor de corriente 484, un campo de tipo de medios de comunicación 486, un campo de contador de tipo principal 488, y un campo de arreglo de tipo principal 490. Cada uno de los diferentes comandos son construidos en una forma similar como se ¡lustra en la Figura 5, y las descripciones de cada uno serán provistas a continuación. El método lniciar() configura e inicia el objeto del desmultiplexor 300. El descriptor de corriente sucia puede contener metadatos apropiados para iniciar el estado del desmultiplexor (incluyendo cualquier dato de encabezado, etc.). La sintaxis del comando es: HRESULTADO lnic¡ar( IMFCorr i ente Descriptor* p De scriptorCor ríen te Sucia, IMFTipo Medio* pTipoMedia Seleccionado, DWORD cTiposPrincipales, GUID* aTiposPrincipales, ); El parámetro pDescriptorCorrienteSucia es un parámetro de entrada y es un apuntador a un objeto de Descriptor de Corriente que describe las corriente sucia. El propósito principal para este parámetro es permitir a cualquier metadato que pueda estar en el descriptor de corriente sea utilizado por el desmultiplexor 300. El parámetro pTipoMedioSeleccionado es un parámetro de entrada que especifica el tipo de medios de comunicación seleccionado para el pDescriptorCorrienteSucia. Este es el tipo de medios de comunicación correspondiente a las muestras que se pasan al multiplexor 300 en las llamadas a EntradaProceso (). El parámetro cTiposPrincipales es un parámetro de entrada que es el conteo de tipos principales en el arreglo aTipoPrincipal. Este parámetro puede ser cero. El parámetro aTiposPrincipales es un parámetro de entrada y está en un arreglo de tipos principales de las corrientes elementales que el llamador está interesado en recuperar como salida del desmultiplexor 300. Este parámetro puede ser NULO si cTiposPrincipales es igual a cero. La corriente por omisión de cada tipo principal encontrado en el arreglo será seleccionada en el descriptor de presentación que es devuelto de ObtenerDescriptorPresentaciónPendiente (). El método devuelve un valor S_OK si el método es exitoso. Si el método falla, regresa un código de error. Si una presentación está disponible, entonces puede ser recuperada a través del método ObtenerDescriptorPresentaciónPendiente. Si la presentación no está disponible después de la iniciación, después de que los datos han sido alimentados al desmultiplexor a través de EntradaProceso, una presentación se puede convertir en disponible. El método de FijarDescripíorPresentación fija el descriptor de presentación activo en el desmultiplexor 300 indicando la nueva selección de corriente en la que el llamador está interesado. El descriptor de presentación puede ser un descriptor generado a través del método ObtenerDescriptorPresentación o el método ObtenerDescriptorPresentaciónPendiente. La sintaxis para el comando es: HRESULTADO FijarDescriptorPresentación( IMFPresentación Descriptor* p Descriptor Presentación ); El parámetro pDescriptorPresentación es un apuntador a un objeto de descriptor de presentación. Si el método es exitoso, regresa S_OK. Puede fallar con MF_E_INVALIDO_PRESENTACION si el descriptor de presentación es una presentación pendiente y aún existen salidas pendientes de la presentación activa actual. El FijarDescriptorPresentación() no puede ser llamado con una presentación pendiente si existen salidas pendientes de la presentación activa actual. FijarDescriptorPresentaciónQ puede ser llamado con la presentación activa para seleccionar o deseleccionar corrientes. Si una corriente es deseleccionada, entonces todas las muestras de la corriente que están en la cola de espera de salida se pierden. Si una nueva corriente es seleccionada, entonces las muestras de esa corriente se convertirán en disponibles en un tiempo futuro. Debido a que la diferentes corrientes tienen diferentes requerimiento de memoria intermedia de entrada y de salida, dependerá del desmultiplexor individual en qué punto las muestras de la nueva corriente estarán disponibles. El método ObtenerDescriptorPresentación recupera un clon del descriptor de la presentación activa actual en el desmultiplexor 300. La sintaxis del comando es: HRESULTDO Obten erDescriptorP resé n tac ión( IMFPresentaciónDescriptor* ppDescriptorPresentación ); El ppDescriptorPresentación es un apuntador que apunta a un objeto de descriptor de presentación. Si el método es exitoso, devuelve un S_OK. Si falla, regresa un código de error. Si existen salidas pendientes entonces ObtenerDescriptorPresentación regresa el descriptor de presentación que corresponde a esa salida. El método ObtenrDescriptorPresentaciónPendiente recupera la siguiente presentación pendiente. La sintaxis del comando es: HRESULTDO Obtener Descri ptorPresentación Pendiente( I FPresentaciónDescriptor* ppDescriptorPresentaciónPendiente ); El parámetro ppDescriptorPresentaciónPendiente es un apuntador que apunta a un objeto de presentación pendiente. Si el método es exitoso, regresa un S_OK. Si no existen presentaciones pendientes, entonces el método regresa MF_E_ RESENTACION_ O_DISPON IBLE. Si se llama EntradaProceso varias veces, deben existir varias presentaciones pendientes en la cola de espera. Este método solamente regresará la siguiente presentación pendiente. Una vez que todas las presentaciones, activas actuales han sido procesadas, entonces la presentación pendiente se hace activa llamado a FijarPresentacion. El método EntradaProceso permite a la persona que llama a proporcionar una nueva muestra de corriente sucia de entrada al desmultiplexor. Si el desmultiplexor detecta la presencia de nuevas corrientes en la presentación, entonces el *pfNuevaPresentaciónDisponible será fijada en VERDADERO, y el llamador puede recuperar el descriptor de presentación pendiente a través de: : :ObtenerDescriptorPresentaciónPendiente. La sintaxis del comando es: HRESULTDO EntradaProceso( IMFMuestra BOOL* pf Nueva Presentación Disponible ); El parámetro pMuestra es un apuntador a un objeto de muestra. Si el método es exitoso, devuelve S_OK. Si el parámetro pfNuevaPresentaciónDisponible regresa VERDADERO cuando se llama EntradaProceso da como resultado un nuevo descriptor de presentación siendo agregado a la cola de espera de presentación pendiente. La operación de desmultiplexión puede ser hecha a través del desmultiplexor, ya sea llamando a EntradaProceso o SalidaProceso. En cualquier caso, los datos serán puestos en cola de espera en la llamada de EntradaProceso hasta que el usuario llama a SalidaProceso o los datos son descartados con una llamada a Limpiar(). Solamente una presentación puede estar activa a la vez. Cuando una nueva presentación está disponible, el llamador debe limpiar todas las salidas pendientes llamando a SalidaProceso, recuperar la nueva presentación llamando a ObtenerDescriptorPresentaciónPendiente y después fijar la presentación activa llamando FijarPresentación. El meto de EntradaProceso permite al llamador recuperar una corriente o corrientes elementales de la presentación activa. La sintaxis del comando es: HRESULTDO SalidaProceso( WORD dwldentficadorCorriente, IMF Muestra* ppMuestra ); El parámetro dwldentficadorCorriente es un valor de 32 bits conteniendo el identificador de corriente de la presentación activa para la muestra solicitada. El parámetro ppMuestra es un apuntador a un apuntador a un objeto de muestra. Si el método es exitoso, devuelve S_OK. Si falla, regresa un código de error. Si el final de la corriente ha sido alcanzado, entonces el código de error MF_E_FI NALD ECO RRI ENTE será devuelto. Si E_NO_MAS_DATOS es devuelto, no existen datos disponibles para procesar. AI llamar EntradaProceso() con otra muestra de datos multiplexados puede aliviar el error. Cuando el procesamiento de los datos disponibles es bloqueado debido a que la presentación activa ya no es válida, el método regresará MF_E_NUEVA_PRESENTACION. Cuando la presentación cambia, existe un nuevo grupo de corrientes disponibles. El usuario debe indicar al desmultiplexor 300 que corrientes serán extraídas. Al llamar ObtenerDescriptorPresentaciónPendiente, seleccionando las corrientes deseadas, y llamando FijarDescriptorPresentación() habilitará el procesamiento de más muestras para la cola de espera de entrada. El objeto del desmultiplexor 300 asignará espacio para las muestras si es requerido. La operación de desmultiplexión puede ser hecha a través del desmultiplexor ya sea llamando a EntradaProceso o SalidaProceso. En cualquier caso, los datos serán puestos en cola de espera en la llamada de EntradaProceso hasta que el usuario llame a SalidaProceso o los datos sean descartados con una llamada a Limpiar(). El método Limpiar permite al llamador limpiar todas las muestras de entrada y salida en cola de espera actuales en el desmultiplexor 300. Limpiar también elimina el DescriptorPresentación Activa . Esto puede ser hecho cuando los datos de flujo ascendente son buscados a una nueva ubicación o el llamador simplemente quiere descartar todos los datos en la memoria intermedia. La sintaxis del comando es: HRESULTADO LimpiarQ; No existen parámetros para el comando Limpiar. Si el método es exitoso, devuelve S_OK. Si falla, regresa un código de error. Al llamar a Limpiar se eliminan todos los datos en la cola de espera de desmultiplexor 300 así como se elimina el descriptor de presentación activa. Dependiendo del desmultiplexor específico, una presentación pendiente puede estar inmediatamente disponible a través de la llamada a ObtenerPresentaciónPendiente o el llamador puede necesitar repetidamente llamar EntradaProceso hasta que la presentación pendiente se vuelve disponible.
Ahora que los comandos del desmultiplexor 300 han sido descritos, se debe describir una operación típica en donde la fuente (por ejemplo, aplicación 202) no negocie una pila que acepte la corriente sucia. Cambiando ahora a la Figura 7, la fuente expone la corriente sucia para la selección a través de la aplicación (por ejemplo, la fuente de captura de video expone DV o la fuente de TV expone una corriente de programa MPEG2) (paso 500). La capa de control 201 determina si la aplicación ha negociado una pila para la corriente sucia (paso 502). Si la aplicación 202 no negocia una pila para la corriente sucia, la sesión de medios de comunicación 240 carga el desmultiplexor apropiado e lo inicia con un descriptor de corriente sucia (paso 504). Si la presentación está disponible a partir del desmultiplexor (paso 506), la sesión de medios de comunicación 240 trata de renegociar utilizando los descriptores de corriente elemental (paso 508). El resto de la topología se construye (paso 510). Las corrientes elementales expuestas son procesadas mediante el procesador de medios de comunicación 220 utilizando DMOs (por ejemplo, descodificadores). Si una presentación no está disponible, entonces la sesión de medios de comunicación utiliza una pila de medios NULOS para terminar la topología para la corriente sucia hasta que esté más información disponible (paso 512). En cualquier momento que la sesión inicie y las muestras estén fluyendo, el desmultiplexor 300 están dando muestras hasta que un descriptor de presentación se convierte en disponible (paso 514). Esto es hecho a través de la llamada a IMFMedioCorriente::lvluestraProceso se llama en el nodo del procesador de medios de comunicación que representa la corriente sucia. El procesador de medios 220 llama IMFMedioCorriente::MuestraProceso en la corriente sucia correspondiente por ejemplo, la fuente AVI exponiendo corriente DV. Cuando la muestra de corriente sucia es recuperada el Procesador de medios de comunicación llama a IMFDesmultiplexor::EntradaProceso en el desmultiplexor 300. Las llamadas a MuestraProceso y EntradaProceso continúan hasta que la bandera de la nueva presentación es VERDADERA en la Devolución desde IMFDesmultiplexor::EntradaProceso. El procesador de medios de comunicación 220 entonces señala la sesión de medios de comunicación 240 a través de un evento que la topología actual necesita actualizar debido al cambio en el desmultiplexor. La sesión de medios de comunicación 240 llama a I FDesmultiplexor::ObtenerPresentaciónActual para obtener acceso a los descriptores de corriente elemental recién disponibles. Cuando el descriptor de presentación se convierte en disponible, la sesión de medios de comunicación puede renegociar utilizando los descriptores de corriente elemental (paso 516). Una API de desmultiplexor para corrientes de datos de multimedia ha sido descrita. La API de desmultiplexor incluye un grupo de interfases, estructuras de datos y eventos para representar un desmultiplexor de datos multimedia. La API permite al consumidor utilizar datos de corriente sucia tales como DV en una forma uniforme para generar datos de corriente elemental tales como audio y video (comprimidos o descomprimidos). La API permite a los desmultiplexores ser utilizados como un componente independiente. Esta API reduce la necesidad de un gran número de APIs para los filtros y un filtro dado ya no necesita ser capaz de interconectarse con la API para cada filtro al cual puede estar unido en sistemas en donde los filtros de herencia no son soportados. También, el desmultiplexor puede ser apagado graciosamente según el procesador de medios de comunicación está controlando al desmultiplexor y no hay filtros en la gráfica de filtros. Todas las referencias citadas aquí, incluyendo patentes, solicitudes de patente, y publicaciones, se incorporan a la presente en su totalidad a través de referencia. En vista de las muchas posibles modalidades a las cuales los principios de esta invención pueden ser aplicados, se debe reconocer que la modalidad descrita aquí con respecto a las figuras dibujadas pretende ser ilustrativa solamente y no debe ser tomada como una limitación al alcance de la invención. Por ejemplo, aquellos con experiencia en la técnica reconocerán que los elementos de la modalidad ilustrada mostrados en software pueden ser implementados y viceversa o que la modalidad ilustrada puede ser modificada en configuración y detalle sin apartarse del espíritu de la invención. Por lo tanto, la invención como se describe aquí contempla todas dichas modalidades como cayendo dentro del

Claims (21)

REIVINDICACIONES
1. Un medio legible por computadora que tiene instrucciones ejecutables por computadora para llevar a cabo el paso de exponer una interfase para proveer comunicación con un objeto de desmultiplexor, la interfase incluye: un método de Iniciar para configurar el objeto de desmultiplexor; un método de FijarDescriptorPresentación para dinámicamente fijar un descriptor de una presentación activa en el objeto del desmultiplexor; un método de EntradaProceso para proporcionar una nueva corriente sucia de entrada al objeto del desmultiplexor; un método de SalidaProceso para recuperar por lo menos una corriente elemental de una presentación activa; y un método de Limpiar para limpiar las muestras de entrada y salida en la cola de espera actual.
2. El medio legible por computadora de acuerdo con la reivindicación 1, en donde la interfase además comprende un método de ObtenerDescriptorPresentacion para recuperar un clon del descriptor de la presentación activa actual en el objeto del desmultiplexor.
3. El medio legible por computadora de acuerdo con la reivindicación 2, en donde el método ObtenerDescriptorPresentacion incluye un descriptor de presentación.
4. El medio legible por computadora de acuerdo con la reivindicación 1, en donde la interfase además comprende un método de ObtenerDescriptorPresentaciónPendiente para recuperar la siguiente presentación pendiente. 5. El medio legible por computadora de acuerdo con la reivindicación 4, en donde el método
ObtenerDescriptorPresentaciónPendiente incluye un descriptor de presentación pendiente.
6. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el método de Iniciar incluye parámetros, los parámetros comprendiendo: un descriptor de corriente sucia; un tipo de medios de comunicación seleccionado para el descriptor de corriente sucia; un arreglo de tipos principales de corrientes elementales; y un conteo de tipos principales en el arreglo de tipos principales.
7. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el método FijarDescriptorPresentación incluye un apuntador a un objeto de descriptor de presentación.
8. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el método EntradaProceso incluye un apuntador a un objeto de muestra.
9. El medio legible por computadora de acuerdo con la reivindicación 8, en donde el método EntradaProceso además incluye un valor de retorno que tiene una bandera de nueva presentación.
10. El medio legible por computadora de acuerdo con la reivindicación 9 que tiene instrucciones ejecutables por computadora adicionales para ejecutar los pasos que comprenden: si la bandera de nueva presentación tiene un valor de VERDADERO: llamar al método de ObtenerDescriptorPresentaciónPendiente para recuperar la siguiente presentación pendiente; seleccionar la corriente deseada; y llamar al método FijarDescriptorPresentación para habilitar el procesamiento de muestras a partir de la cola de espera de entradas del desmultiplexor.
11. El medio legible por computadora de acuerdo con la reivindicación 1, en donde el método de SalidaProceso incluye un identificador de corriente y un apuntador a un apuntador a un objeto de muestra.
12. El medio legible por computadora de acuerdo con la reivindicación 11, en donde el método de SalidaProceso además incluye un valor de retorno de salida.
13. El medio legible por computadora de acuerdo con la reivindicación 12, en donde el valor de retorno de salida incluye uno de un extremo de código de error de la corriente y no más de un código de error de datos.
14. El medio legible por computadora de acuerdo con la reivindicación 1, en donde la interfase toma los datos multiplexados como una memoria intermedia en la memoria de datos.
15. Ei medio legible por computadora de acuerdo con la reivindicación 14, en donde los datos multiplexados tienen un formato comprendiendo por lo menos uno de Video Digital, MPEG2, y ASF.
16. Un medio legible por computadora teniendo almacenado en el mismo una estructura de datos de inicio para uso en el desmultiplexor, que comprende: un primer campo conteniendo un encabezado; un segundo campo conteniendo un descriptor de corriente sucia; un tercer campo conteniendo un tipo de medios de comunicación seleccionado del descriptor de corriente sucia; un cuarto campo conteniendo un arreglo de tipos principales de corrientes elementales; y un quinto campo conteniendo un conteo de tipos principales en el arreglo de tipos principales.
17. Un medio legible por computadora teniendo almacenado en el mismo una estructura de datos de FijarDescriptorPresentación para uso en el desmultiplexor, que comprende: un primer campo conteniendo un encabezado; y un segundo campo conteniendo un descriptor de presentación.
18. Un medio legible por computadora teniendo almacenado en el mismo una estructura de datos de ObtenerDescriptorPresentación para uso en el desmultiplexor, que comprende: un primer campo conteniendo un encabezado; y un segundo campo conteniendo un descriptor de presentación.
19. Un medio legible por computadora teniendo almacenado en el mismo una estructura de datos de ObtenerDescriptorPresentaciónPendiente para uso en el desmultiplexor, que comprende: un primer campo conteniendo un encabezado; y un segundo campo conteniendo un descriptor de presentación pendiente.
20. Un medio legible por computadora teniendo almacenado en el mismo una estructura de datos de EntradaProceso para uso en el desmultiplexor, que comprende: un primer campo conteniendo un encabezado; y un segundo campo conteniendo un apuntador a un objeto muestra.
21. Un medio legible por computadora teniendo almacenado en el mismo una estructura de datos de SalidaProceso para uso en el desmultiplexor, que comprende: un primer campo conteniendo un encabezado; un segundo campo conteniendo un identificador de corriente; y un tercer campo conteniendo un apuntador a un punto a un objeto muestra.
MXPA03007574A 2003-08-06 2003-08-22 Interfase de programacion de aplicacion de desmultiplexor. MXPA03007574A (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/635,730 US7882510B2 (en) 2003-08-06 2003-08-06 Demultiplexer application programming interface

Publications (1)

Publication Number Publication Date
MXPA03007574A true MXPA03007574A (es) 2005-02-09

Family

ID=33552948

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA03007574A MXPA03007574A (es) 2003-08-06 2003-08-22 Interfase de programacion de aplicacion de desmultiplexor.

Country Status (8)

Country Link
US (1) US7882510B2 (es)
EP (1) EP1505501A1 (es)
JP (1) JP4249569B2 (es)
KR (1) KR20050015930A (es)
CN (1) CN1581067B (es)
AU (1) AU2003236379A1 (es)
CA (1) CA2438418A1 (es)
MX (1) MXPA03007574A (es)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7555540B2 (en) * 2003-06-25 2009-06-30 Microsoft Corporation Media foundation media processor
US8165449B2 (en) * 2003-10-01 2012-04-24 Microsoft Corporation DV metadata extraction
US20060197767A1 (en) * 2005-03-07 2006-09-07 Ward Robert G Algorithm to automatically configure a SONET/SDH demultiplexer by pushing a button, and displaying a result and status thereof
US7827554B2 (en) * 2005-06-20 2010-11-02 Microsoft Corporation Multi-thread multimedia processing
JP4828927B2 (ja) * 2005-12-16 2011-11-30 パナソニック株式会社 ストリーム制御装置
US7802005B2 (en) * 2007-03-30 2010-09-21 Motorola, Inc. Method and apparatus for configuring buffers for streaming data transfer
CN108319438B (zh) * 2017-01-16 2019-05-17 视联动力信息技术股份有限公司 一种音频数据采集的方法和装置

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2351002A (en) * 1941-11-18 1944-06-13 Burton Gus Emergency landing runway
US5065396A (en) * 1990-01-02 1991-11-12 At&T Bell Laboratories Inverse multiplexer and demultiplexer techniques
US5455910A (en) * 1993-01-06 1995-10-03 International Business Machines Corporation Method and system for creating a synchronized presentation from different types of media presentations
WO1994018776A2 (en) 1993-02-03 1994-08-18 Novell, Inc. Multimedia distribution system
US5576843A (en) * 1993-10-29 1996-11-19 Time Warner Entertainment Co., L.P. System and method for controlling play of multiple dialog audio tracks of a software carrier
US5583562A (en) * 1993-12-03 1996-12-10 Scientific-Atlanta, Inc. System and method for transmitting a plurality of digital services including imaging services
ATE243880T1 (de) * 1993-12-18 2003-07-15 Sony Corp Datenwiedergabegerät und datenaufzeichnungsmedium
US6334219B1 (en) * 1994-09-26 2001-12-25 Adc Telecommunications Inc. Channel selection for a hybrid fiber coax network
JP3078215B2 (ja) * 1995-01-06 2000-08-21 ミツビシ・エレクトリック・インフォメイション・テクノロジー・センター・アメリカ・インコーポレイテッド ディスプレイ装置
US6345147B1 (en) * 1995-11-24 2002-02-05 Kabushiki Kaisha Toshiba Multi-language recording medium and reproducing device for the same
FR2743245B1 (fr) * 1995-12-29 1998-01-23 Thomson Multimedia Sa Dispositif de demultiplexage
US6172988B1 (en) * 1996-01-31 2001-01-09 Tiernan Communications, Inc. Method for universal messaging and multiplexing of video, audio, and data streams
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US6092107A (en) * 1997-04-07 2000-07-18 At&T Corp System and method for interfacing MPEG-coded audiovisual objects permitting adaptive control
RU2143726C1 (ru) 1997-07-15 1999-12-27 Козлов Михаил Кириллович Формульный процессор с командоподобными логическими управляющими элементами
US6535530B1 (en) * 1997-07-23 2003-03-18 Matsushita Electric Industrial Co., Ltd. Apparatus and method for demultiplexing multiplexed data
US6631403B1 (en) * 1998-05-11 2003-10-07 At&T Corp. Architecture and application programming interfaces for Java-enabled MPEG-4 (MPEG-J) systems
JP3593883B2 (ja) * 1998-05-15 2004-11-24 株式会社日立製作所 映像ストリーム送受信システム
US6636222B1 (en) * 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US7174560B1 (en) * 1999-02-25 2007-02-06 Sharp Laboratories Of America, Inc. Method of synchronizing events with a digital television audio-visual program
JP4362906B2 (ja) 1999-09-21 2009-11-11 ソニー株式会社 情報処理装置および方法、並びに記録媒体
RU2257609C2 (ru) * 1999-10-21 2005-07-27 Мацусита Электрик Индастриал Ко., Лтд. Устройство доступа к полупроводниковой карте памяти, компьютерно-считываемый носитель записи, способ инициализации и полупроводниковая карта памяти
KR100590185B1 (ko) * 1999-11-20 2006-06-14 삼성전자주식회사 부가정보를 포함하는 오디오/비디오데이터의 저장 및검색장치
EP1258145B1 (en) * 1999-12-14 2006-07-05 General Instrument Corporation Mpeg re-multiplexer having multiple inputs and multiple outputs
GB9930787D0 (en) * 1999-12-30 2000-02-16 Koninkl Philips Electronics Nv Method and apparatus for convrerting data streams
GB9930788D0 (en) * 1999-12-30 2000-02-16 Koninkl Philips Electronics Nv Method and apparatus for converting data streams
US7035916B1 (en) 2000-02-16 2006-04-25 Microsoft Corporation Coupling a filter graph space to a network driver space
US6975628B2 (en) * 2000-12-22 2005-12-13 Intel Corporation Method for representing and controlling packet data flow through packet forwarding hardware
US7010004B2 (en) * 2001-08-03 2006-03-07 Optibase Ltd. Method for multiplexing data for packet networks
KR100436759B1 (ko) * 2001-10-16 2004-06-23 삼성전자주식회사 수신된 멀티미디어 데이터를 저장하는 버퍼의 용량을가변할 수 있는 멀티미디어 데이터 복원장치
US7116712B2 (en) * 2001-11-02 2006-10-03 Koninklijke Philips Electronics, N.V. Apparatus and method for parallel multimedia processing
TWI247295B (en) * 2002-03-09 2006-01-11 Samsung Electronics Co Ltd Reproducing method and apparatus for interactive mode using markup documents
US7246318B2 (en) * 2002-06-28 2007-07-17 Microsoft Corporation Application programming interface for utilizing multimedia data
US7269836B2 (en) * 2003-03-24 2007-09-11 International Business Machines Corporation System and method for providing multiplexing and remultiplexing of MPEG-2 streams

Also Published As

Publication number Publication date
AU2003236379A1 (en) 2005-02-24
CN1581067B (zh) 2010-10-06
CA2438418A1 (en) 2005-02-06
CN1581067A (zh) 2005-02-16
EP1505501A1 (en) 2005-02-09
JP2005056364A (ja) 2005-03-03
US7882510B2 (en) 2011-02-01
KR20050015930A (ko) 2005-02-21
US20050030980A1 (en) 2005-02-10
JP4249569B2 (ja) 2009-04-02

Similar Documents

Publication Publication Date Title
RU2487395C2 (ru) Медиа-процессор для организации мультимедийных данных
US20040267778A1 (en) Media foundation topology application programming interface
JP4086529B2 (ja) 画像処理装置及び画像処理方法
WO2006115604A2 (en) Media timeline sorting
US7523457B2 (en) Dynamic reconfiguration of multimedia stream processing modules
US7774375B2 (en) Media foundation topology
MXPA03007574A (es) Interfase de programacion de aplicacion de desmultiplexor.
US7725920B2 (en) Media foundation media sink
US7577940B2 (en) Managing topology changes in media applications
CN108282670A (zh) 用于实时影像合成的代码转换器
CN102036018B (zh) 信息处理装置和方法
RU2351002C2 (ru) Программный интерфейс приложения демультиплексора
JP2004312313A (ja) データ処理装置、データ処理システム、データ処理方法及びプログラム
JP2004318387A (ja) データの保存方法

Legal Events

Date Code Title Description
FC Refusal