RU2351002C2 - Demultiplexer application program interface - Google Patents

Demultiplexer application program interface Download PDF

Info

Publication number
RU2351002C2
RU2351002C2 RU2003125827/09A RU2003125827A RU2351002C2 RU 2351002 C2 RU2351002 C2 RU 2351002C2 RU 2003125827/09 A RU2003125827/09 A RU 2003125827/09A RU 2003125827 A RU2003125827 A RU 2003125827A RU 2351002 C2 RU2351002 C2 RU 2351002C2
Authority
RU
Russia
Prior art keywords
demultiplexer
descriptor
stream
data
storage medium
Prior art date
Application number
RU2003125827/09A
Other languages
Russian (ru)
Other versions
RU2003125827A (en
Inventor
Кёрт ДЕБИК (US)
Кёрт ДЕБИК
Робин К.Б. СПИД (GB)
Робин К.Б. СПИД
К. Элан ЛЮДВИГ (US)
К. Элан ЛЮДВИГ
Джеффри Т. ДАНБАР (US)
Джеффри Т. ДАНБАР
Original Assignee
Майкрософт Корпорейшн
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 Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Priority to RU2003125827/09A priority Critical patent/RU2351002C2/en
Publication of RU2003125827A publication Critical patent/RU2003125827A/en
Application granted granted Critical
Publication of RU2351002C2 publication Critical patent/RU2351002C2/en

Links

Images

Abstract

FIELD: physics; computer engineering.
SUBSTANCE: present invention pertains to processing multimedia data in a computing environment. On the data carrier, there are commands executed by the computer, providing for an interface for communication with the demultiplexer component, dividing the multiplexed multimedia stream into elementary streams. The interface contains commands for initiating the demultiplexer component and its configuration. There is dynamic installation of a descriptor of active presentation with regard to the demultiplexer component. The new input multiplexed stream is transmitted in form of input samples into the demultiplexer component. The above mentioned active presentation is extracted, in accordance with the active presentation descriptor of at least, one elementary stream, and then transmitted in form of output samples. The samples currently in the input and output queues are cleared.
EFFECT: enabling a user to consistently use data of a multiplexed stream, for example DV, for generating elementary stream data, including audio and video (compressed and uncompressed), and provision for use of demultiplexers as independent components.
21 cl, 7 dwg

Description

Область изобретенияField of Invention

Изобретение относится, в общем, к электронной обработке данных, а более конкретно к обработке мультимедийных данных в вычислительной среде.The invention relates, in General, to electronic data processing, and more particularly to processing multimedia data in a computing environment.

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE INVENTION

Широко распространяется и быстро развивается представление мультимедийной информации, основанное на цифровой обработке данных, комбинация видео и аудио в цифровом формате для просмотра на цифровом устройстве. Почти каждый новый персональный компьютер, изготовленный в настоящее время, содержит в некотором виде мультимедийные средства. Постоянно растет объем продаж цифровых продуктов, таких как камеры, видеомагнитофоны, телефоны и телевизоры. Мультимедиа становится все более и более распространенным в области Интернет так же, как продолжается постоянное и быстрое развитие Интернет. Наряду с развитием возросли требования пользователя к эффективности такого компьютерного оборудования. Повышенные требования пользователя распространяются не только на аппаратные возможности, но также на возможности обработки самих данных.The presentation of multimedia information based on digital data processing, a combination of video and audio in digital format for viewing on a digital device is widely distributed and rapidly developing. Almost every new personal computer manufactured at present contains some form of multimedia. The sales of digital products such as cameras, VCRs, telephones and televisions are constantly growing. Multimedia is becoming more and more widespread in the field of the Internet in the same way as the constant and rapid development of the Internet continues. Along with development, user requirements for the effectiveness of such computer equipment have increased. Increased user requirements extend not only to the hardware capabilities, but also to the processing capabilities of the data itself.

Для удовлетворения растущих требований для мультимедийных приложений был разработан способ, известный как потоковая передача данных. Потоковая передача данных обеспечивает такую передачу данных, при которой они могут обрабатываться, как постоянный и непрерывный поток. Это предоставляет то преимущество, особенно для больших мультимедийных файлов, состоящее в том, что данные могут отображаться или прослушиваться до окончания передачи целого файла.To meet the growing demands for multimedia applications, a method known as streaming data has been developed. Stream data transfer provides such a data transfer in which they can be processed as a constant and continuous stream. This provides the advantage, especially for large multimedia files, that the data can be displayed or listened to until the end of the transfer of the whole file.

Первоначально структура потоковой передачи данных состояла из последовательности модулей обработки данных (например, фильтров захвата, преобразующих фильтров и фильтров информационного представления (визуализации)) с очень небольшими интеллектуальными возможностями программы управления последовательностью. Модули обработки данных, также называемые фильтрами, принимают решения по тому, как получить соединение, какие форматы данных использовать и как управлять друг другом. При соединении фильтров в последовательность протоколы определяют предварительно определенную фиксированную последовательность потока данных и управляют согласованиями соединения. Обычная последовательность согласований предназначена для согласования следующих элементов: интерфейса, носителя информации, формата данных, программ распределения и задающего генератора. Последовательность обработки данных обеспечивает комплексное решение внутри компьютерной системы.Initially, the streaming data structure consisted of a sequence of data processing modules (for example, capture filters, transform filters, and information presentation (visualization) filters) with very little intellectual capabilities of the sequence control program. Data processing modules, also called filters, make decisions on how to get a connection, which data formats to use, and how to manage each other. When connecting filters into a sequence, the protocols determine a predefined fixed sequence of the data stream and control the negotiation of the connection. The usual sequence of approvals is designed to coordinate the following elements: interface, storage medium, data format, distribution programs, and master oscillator. A data processing sequence provides a complete solution within a computer system.

С усложнением потоковой обработки данных индустрия признала необходимость оптимизации последовательностей обработки, которые представляли собой обработку данных с ограничениями, накладываемыми интерактивностью, например последовательностей обработки видео и аудио. Одним решением является средство DirectShow® фирмы Microsoft®Corporation, обеспечивающее воспроизведение мультимедийных потоков из локальных файлов или с серверов Интернета, захват мультимедийных потоков с устройств и преобразование формата мультимедийных потоков. DirectShow® обеспечивает возможность воспроизведения видео- и аудиосодержимого таких типов файлов, как: Windows Media Audio, Windows Media Video, MPEG, Apple®QuickTime®, Audio-Video Interleaved (AVI) и WAV (Windows Wave). DirectShow® включает в себя систему сменных подключаемых компонентов фильтров. Фильтры являются объектами, поддерживающими интерфейсы DirectShow®, которые могут оперировать потоками данных посредством считывания, копирования, изменения и записи данных в файл. Основные типы фильтров включают в себя входной фильтр, который берет данные из некоторого источника, например из файла на диске, спутниковой антенны, с сервера Интернет или кассетного видеомагнитофона VCR, и передает их на вход фильтрующей схемы, которая является соединением фильтров. Фильтры в фильтрующей схеме содержат преобразующий фильтр, который осуществляет преобразование формата данных, синхронизирующий и входной фильтр, который принимает данные и передает их; и фильтр визуализации, который формирует изображение данных, например формирует изображение данных на устройстве отображения. Данные могут быть также визуализированы в любом местоположении, которое принимает мультимедиа. Другие типы фильтров, включенных в DirectShow®, включают в себя целевые фильтры, которые добавляют эффекты, не изменяя тип данных, и фильтры синтаксического анализатора, которые “понимают” формат исходных данных и умеют считывать правильные байты, создают временные ярлыки и выполняют поиск.With the increasing complexity of streaming data processing, the industry has recognized the need to optimize processing sequences, which are data processing with constraints imposed by interactivity, such as video and audio processing sequences. One solution is Microsoft® Corporation’s DirectShow®, which enables playback of media streams from local files or Internet servers, capture media streams from devices, and convert media streams. DirectShow® provides the ability to play video and audio content of file types such as: Windows Media Audio, Windows Media Video, MPEG, Apple®QuickTime®, Audio-Video Interleaved (AVI) and WAV (Windows Wave). DirectShow® includes a plug-in filter system. Filters are objects that support DirectShow® interfaces that can handle data streams by reading, copying, modifying, and writing data to a file. The main types of filters include an input filter, which takes data from some source, for example, from a disk file, satellite dish, from an Internet server or VCR tape recorder, and passes them to the input of the filter circuit, which is a filter connection. Filters in the filter circuit contain a conversion filter that performs data format conversion, a synchronization filter and an input filter that receives data and transmits them; and a visualization filter that forms a data image, for example, forms a data image on a display device. Data can also be visualized at any location that accepts multimedia. Other types of filters included with DirectShow® include target filters that add effects without changing the data type, and parser filters that “understand” the source data format and can read the correct bytes, create temporary labels, and perform searches.

Во время работы все данные проходят от фильтра к фильтру совместно с большим количеством информации управления. Каждый фильтр содержит объекты, называемые "выводами (пинами)", которые используются для соединения с другими фильтрами. Когда фильтры соединены, с использованием выводов, образуется фильтрующая схема. Следует отметить, что имеется различие между "фильтрующей схемой", которая является понятием, обозначающим группу соединенных фильтров, и "Фильтрующей Схемой", являющейся объектом, который пользователь создает в DirectShow®, управляющим группой соединенных фильтров, "фильтрующей схемой". "Фильтрующую Схему" более правильно называть администратором фильтрующей схемы. Для управления потоком данных и соединениями в фильтрующей схеме DirectShow® содержит управляющую программу (администратор) фильтрующей схемы. Администратор фильтрующей схемы способствует обеспечению соединения фильтров в соответствующем порядке. Однако данные и большая часть управления не проходят через администратор фильтрующей схемы. Фильтры должны быть связаны соответствующим образом. Например, администратор фильтрующей схемы должен отыскать конфигурацию (структуру) визуализации, определить типы доступных фильтров, связать фильтры в соответствующем для данного типа данных порядке и обеспечить соответствующий фильтр визуализации.During operation, all data passes from filter to filter together with a lot of control information. Each filter contains objects called pins that are used to connect to other filters. When the filters are connected using the leads, a filter circuit is formed. It should be noted that there is a difference between a "filtering scheme", which is a concept designating a group of connected filters, and a "Filtering scheme", which is an object that a user creates in DirectShow®, managing a group of connected filters, a "filtering scheme". The "Filter Schema" is more correctly called the administrator of the filter circuit. To control data flow and connections in the filtering scheme, DirectShow® contains a control program (administrator) for the filtering scheme. The administrator of the filtering scheme helps ensure that the filters are connected in the appropriate order. However, data and most of the control do not pass through the filtering circuit manager. Filters should be linked appropriately. For example, the administrator of the filtering scheme must find the configuration (structure) of the visualization, determine the types of filters available, associate the filters in the appropriate order for the given data type and provide the appropriate visualization filter.

Хотя фильтры обеспечивали возможность многократного использования программ, использование фильтров также создавало некоторые непредвиденные проблемы. Одной из проблем, создаваемой фильтрами, является большое количество программных интерфейсов приложений (API) для созданных фильтров. Каждый фильтр, по существу, имеет отдельный API. В результате данный фильтр должен допускать возможность сопряжения с API для каждого фильтра, к которому он может быть присоединен. Также использование фильтров создает проблему при отключении заданного фильтра. При отключении заданного фильтра в графе любой фильтр, осуществлявший сопряжение с отключенным фильтром, требует другой соответствующий интерфейс. В основном, затруднительно запрограммировать фильтр для корректной обработки потери сопряжения, так как состояние фильтра при потере сопряжения может быть неизвестно. Следовательно, потеря сопряжения имеет тенденцию приводить к непредсказуемому режиму в фильтрах и, в конечном счете, к некорректному выполнению программ. Дополнительно, общее управление в DirectShow® распределено между двумя блоками. Интерфейс между фильтрами управляет потоком данных, в то время как администратор фильтра управляет реализацией и удалением фильтров. Такое распределение управления делает громоздким проектирование программного обеспечения, так как неизбежно имеются некоторые функции управления, которые “пересекают” границу между блоками. Другая проблема с DirectShow® состоит в том, что фильтры берут на себя ответственность за согласование формата мультимедиа и за функциональные возможности организации буферизации данных. Для выполнения этой задачи фильтры взаимодействуют с другими фильтрами. Зависимость от фильтров приводит к восприимчивости приложений, построенных на DirectShow®, к ошибкам и недостаткам, которые могли быть запрограммированы в фильтре. Следовательно, плохо написанный фильтр может легко снизить эффективность фильтрующей схемы и приложения, связанного с фильтрующей схемой.Although filters made it possible to reuse programs, using filters also created some unforeseen problems. One of the problems created by filters is the large number of application programming interfaces (APIs) for the created filters. Each filter essentially has a separate API. As a result, this filter must allow the ability to interface with the API for each filter to which it can be attached. Also, the use of filters creates a problem when the specified filter is disabled. When you turn off a given filter in a graph, any filter that paired with a disabled filter requires another appropriate interface. Basically, it is difficult to program the filter to correctly handle the loss of pairing, since the state of the filter in case of loss of pairing may not be known. Therefore, the loss of pairing tends to lead to an unpredictable mode in the filters and, ultimately, to incorrect execution of programs. Additionally, the overall management in DirectShow® is distributed between two units. The interface between the filters controls the flow of data, while the filter manager controls the implementation and deletion of filters. This distribution of control makes software design cumbersome, as there are inevitably some control functions that “cross” the boundary between blocks. Another problem with DirectShow® is that the filters take responsibility for the coordination of the multimedia format and for the functionality of organizing data buffering. Filters interact with other filters to accomplish this task. Dependence on filters leads to susceptibility of applications built on DirectShow® to errors and shortcomings that could be programmed in the filter. Therefore, a poorly written filter can easily reduce the efficiency of the filter circuit and the application associated with the filter circuit.

Имеется потребность в усовершенствовании архитектуры DirectShow®. Более конкретно, имеется потребность в усовершенствовании управления обработкой мультимедийных данных.There is a need to improve the DirectShow® architecture. More specifically, there is a need for improved multimedia processing control.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

Изобретение включает в себя набор интерфейсов, структур данных и событий для представления демультиплексора (устройства распределения) мультимедийных данных. Структура данных использует ряд полей, каждое из которых содержит элемент команды. В одном варианте осуществления для правильного функционирования демультиплексора формируется по меньшей мере семь команд, включающих команды Initialize (инициализировать), SetPresentationDescriptor (установить дескриптор представления), GetPresentationDescriptor (извлечь дескриптор представления), GetPendingPresentationDescriptor (извлечь дескриптор представления, ждущего обработки), ProcessInput (обработать ввод), ProcessOutput (обработать вывод) и Flush (сбросить). Интерфейсы в совокупности известны как Интерфейс Программирования Приложения Демультиплексора (Demux API). Demux API обеспечивает возможность потребителю единообразно использовать данные мультиплексированного потока, такие как цифровые (DV) видеоданные, для формирования данных элементарного потока, например аудио и видео (сжатого или несжатого).The invention includes a set of interfaces, data structures, and events for representing a demultiplexer (distribution device) of multimedia data. The data structure uses a number of fields, each of which contains a command element. In one embodiment, at least seven commands are generated for the demultiplexer to function correctly, including the Initialize (Set), SetPresentationDescriptor (set the presentation descriptor), GetPresentationDescriptor (retrieve the presentation descriptor), GetPendingPresentationDescriptor (retrieve the presentation descriptor pending processing), ProcessInput (process ), ProcessOutput (process output) and Flush (reset). The interfaces are collectively known as the Demux Multiplexer Application Programming Interface (Demux API). The Demux API enables consumers to uniformly use multiplexed stream data, such as digital (DV) video data , to generate elementary stream data, such as audio and video (compressed or uncompressed).

Способ Initialize используется для инициализации и конфигурирования объекта демультиплексора и имеет параметры, которые используются для конфигурирования демультиплексора. Параметры включают объект дескриптора мультиплексированного потока, который описывает мультиплексированный поток, выбранный тип среды для дескриптора мультиплексированного потока, массив основных типов элементарных потоков, в которых заинтересован пользователь при извлечении их в качестве выходных данных из демультиплексора, и количество основных типов в массиве основных типов.The Initialize method is used to initialize and configure the demultiplexer object and has parameters that are used to configure the demultiplexer. The parameters include a multiplexed stream descriptor object that describes the multiplexed stream, the selected medium type for the multiplexed stream descriptor, an array of the basic types of elementary streams that the user is interested in extracting as output from the demultiplexer, and the number of basic types in the array of basic types.

Метод SetPresentationDescriptor используется для динамической установки дескриптора активного представления об объекте демультиплексора. Метод SetPresentationDescriptor содержит указатель на объект дескриптора представления. Метод ProcessInput используется для обеспечения нового входного мультиплексированного потока для объекта демультиплексора и содержит указатель на объект выборки. Метод ProcessInput имеет возвращаемое значение, которое имеет флажок нового представления. Если флажок нового представления имеет значение TRUE (истина), то в мультиплексированной выборке представление изменилось на основе дескриптора представления. Пользователь должен вызвать метод GetPendingPresentationDescriptor для извлечения следующего представления, ждущего обработки, выбора требуемых потоков и вызвать метод SetPresentationDescriptor, чтобы обеспечить возможность обработки выборок из входной очереди демультиплексора.The SetPresentationDescriptor method is used to dynamically set the descriptor of the active representation of the demultiplexer object. The SetPresentationDescriptor method contains a pointer to a presentation descriptor object. The ProcessInput method is used to provide a new input multiplexed stream for the demultiplexer object and contains a pointer to the sample object. The ProcessInput method has a return value that has a new view flag. If the flag for the new view is set to TRUE, then in the multiplexed selection, the view has changed based on the view descriptor. The user must call the GetPendingPresentationDescriptor method to retrieve the next presentation that is waiting to be processed, select the required streams, and call the SetPresentationDescriptor method to enable processing of samples from the input demultiplexer queue.

Метод ProcessOutput используется для извлечения по меньшей мере одного элементарного потока из активного представления. Метод ProcessOutput содержит идентификатор потока и указатель на указатель на объект выборки. Метод ProcessOutput дополнительно содержит выходное возвращаемое значение. Выходное возвращаемое значение содержит код ошибки конца потока и код ошибки отсутствия следующих данных.The ProcessOutput method is used to extract at least one elementary stream from the active view. The ProcessOutput method contains a thread identifier and a pointer to a pointer to a selection object. The ProcessOutput method additionally contains an output return value. The output return value contains the end-of-stream error code and the following data missing error code.

Метод Flush используется для сброса входных и выходных выборок, находящихся в очереди в текущий момент времени. Для метода Flush параметры не требуются.The Flush method is used to discard the input and output samples currently queued. The Flush method does not require parameters.

Метод GetPresentationDescriptor используется для извлечения клона (абсолютной копии) дескриптора текущего активного представления об объекте демультиплексора. Метод GetPresentationDescriptor содержит дескриптор представления.The GetPresentationDescriptor method is used to retrieve the clone (absolute copy) of the descriptor of the current active representation of the demultiplexer object. The GetPresentationDescriptor method contains a presentation descriptor.

Метод GetPendingPresentationDescriptor используется для извлечения следующего представления, ждущего обработки. Метод GetPendingPresentationDescriptor содержит ждущий обработки дескриптор представления.The GetPendingPresentationDescriptor method is used to retrieve the next pending presentation. The GetPendingPresentationDescriptor method contains a pending presentation descriptor.

Дополнительные возможности и преимущества изобретения будут ясны из последующего подробного описания поясняющих вариантов осуществления, рассматриваемого совместно с приложенными чертежами.Additional features and advantages of the invention will be apparent from the following detailed description of illustrative embodiments, taken in conjunction with the accompanying drawings.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Хотя в приложенной формуле изобретения обстоятельно изложены признаки настоящего изобретения, изобретение, его задачи и преимущества могут стать более понятны из последующего подробного описания, рассматриваемого совместно с приложенными чертежами.Although the appended claims spell out the features of the present invention, the invention, its objectives, and advantages may become more apparent from the following detailed description, taken in conjunction with the accompanying drawings.

Фиг. 1 - структурная схема, в общем иллюстрирующая возможную компьютерную систему, в которой реализуется настоящее изобретение.FIG. 1 is a block diagram generally illustrating a possible computer system in which the present invention is implemented.

Фиг. 2 - структурная схема, по существу, иллюстрирующая возможную компьютерную среду, в которой функционирует настоящее изобретение.FIG. 2 is a block diagram essentially illustrating a possible computer environment in which the present invention operates.

Фиг. 3 - структурная схема, иллюстрирующая демультиплексор, согласно раскрытию настоящего изобретения.FIG. 3 is a block diagram illustrating a demultiplexer according to the disclosure of the present invention.

Фиг. 4 - диаграмма переходов демультиплексора, предусмотренного настоящим изобретением.FIG. 4 is a transition diagram of a demultiplexer provided by the present invention.

Фиг. 5 - диаграмма структуры данных, иллюстрирующая модель структуры данных, обеспечивающей конструирование вызовов, согласно настоящему изобретению.FIG. 5 is a data structure diagram illustrating a data structure model for constructing calls in accordance with the present invention.

Фиг. 6 - упрощенная диаграмма структуры данных, иллюстрирующая структуру возможного сообщения, согласно настоящему изобретению.FIG. 6 is a simplified data structure diagram illustrating a structure of a possible message according to the present invention.

Фиг. 7 - блок-схема, иллюстрирующая этапы, выполняемые для загрузки и функционирования демультиплексора, согласно способам настоящего изобретения, когда приложение не согласует приемник мультимедиа.FIG. 7 is a flowchart illustrating steps taken to download and operate a demultiplexer according to the methods of the present invention when the application does not agree on a multimedia receiver.

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНОГО ВАРИАНТА ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF A PREFERRED EMBODIMENT

Изобретение обеспечивает набор интерфейсов, структур данных и событий для представления демультиплексора мультимедийных данных, которые в совокупности называются API демультиплексора. API обеспечивает потребителю возможность единообразно использовать данные мультиплексированного потока, например DV, MPEG2, ASF и т.д., для формирования данных элементарного потока, например аудио и видео (сжатого или несжатого). API демультиплексора поддерживает динамическое формирование дескрипторов нового потока на основе данных инициализации мультиплексированного потока и поддерживает динамическое формирование дескрипторов нового потока на основе выборок мультиплексированного потока. Дополнительно API демультиплексора поддерживает внешнюю инициализацию посредством метаданных о мультиплексированном потоке и внутреннюю инициализацию посредством выборок мультиплексированного потока и поддерживает формирование демультиплексированных выборок, которые могут занимать несколько буферов. В контексте архитектуры Базовых концепций Мультимедиа Media Foundation Microsoft®Corporation API демультиплексора прежде всего управляется процессором мультимедиа, на который выводит данные, как описано ниже. API демультиплексора разработан так, чтобы хорошо определить использование демультиплексора для любой мультимедийной архитектуры.The invention provides a set of interfaces, data structures, and events for representing a multimedia data demultiplexer, collectively referred to as a demultiplexer API. The API provides the consumer the ability to uniformly use multiplexed stream data, such as DV, MPEG2, ASF, etc., to generate elementary stream data, such as audio and video (compressed or uncompressed). The demultiplexer API supports the dynamic generation of new stream descriptors based on the initialization data of the multiplexed stream and supports the dynamic generation of new stream descriptors based on samples of the multiplexed stream. Additionally, the demultiplexer API supports external initialization through multiplexed stream metadata and internal initialization through multiplexed stream samples and supports the generation of demultiplexed samples that may occupy multiple buffers. In the context of the architecture of the Basic Concepts of Multimedia, the Media Foundation Microsoft® Corporation API of the demultiplexer is primarily controlled by a multimedia processor to which data is output, as described below. The demultiplexer API is designed to well define the use of the demultiplexer for any multimedia architecture.

Согласно чертежам, в которых подобное ссылочные позиции относятся к подобным элементам, иллюстрируется изобретение, реализованное в соответствующей вычислительной среде. Хотя в этом нет необходимости, изобретение будет описано в основном контексте компьютерно-выполнимых команд, например программных модулей, выполняемых персональным компьютером. По существу, программные модули содержат подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют определенные типы абстрактных данных. Кроме того, для специалистов в данной области техники очевидно, что изобретение может быть практически осуществлено с другими конфигурациями вычислительной системы, включая переносные устройства, многопроцессорные системы, программируемую, или основанную на микропроцессорах, бытовую электронику, сетевые персональные компьютеры PC, миникомпьютеры, универсальные вычислительные машины и т.д. Изобретение может быть практически осуществлено также в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки данных, связанными посредством системы связи. В распределенной вычислительной среде программные модули могут быть размещены в локальных и в удаленных запоминающих устройствах.According to the drawings, in which like reference numerals refer to like elements, the invention is implemented in an appropriate computing environment. Although not necessary, the invention will be described in the general context of computer-executable instructions, for example, program modules, executed by a personal computer. Essentially, program modules contain routines, programs, objects, components, data structures, etc. that perform specific tasks or implement certain types of abstract data. In addition, it will be apparent to those skilled in the art that the invention can be practiced with other computer system configurations, including portable devices, multiprocessor systems, programmable, or microprocessor-based, consumer electronics, network PCs, minicomputers, universal computers etc. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communication system. In a distributed computing environment, program modules may be located in local and remote memory storage devices.

Фиг. 1 иллюстрирует возможный вариант соответствующей среды 100 вычислительной системы, в которой может быть реализовано изобретение. Среда 100 вычислительной системы является только одним возможным вариантом соответствующей вычислительной среды и не предназначена для наложения какого-либо ограничения на область использования или функциональные возможности изобретения. Также вычислительная среда 100 не должна интерпретироваться требующей или зависимой от какого-либо компонента, иллюстрируемого возможной средой 100, или их комбинации.FIG. 1 illustrates a possible embodiment of a corresponding computing system environment 100 in which the invention may be implemented. The computing system environment 100 is only one possible variant of the corresponding computing environment and is not intended to impose any limitation on the scope or functionality of the invention. Also, computing environment 100 should not be interpreted as requiring or dependent on any component illustrated by possible environment 100, or a combination thereof.

Изобретение может функционировать совместно со многими другими универсальными или специализированными средами или конфигурациями вычислительной системы. Возможные варианты известных вычислительных систем, сред и/или конфигураций, которые могут соответствовать для использования с изобретением, включают в себя: персональные компьютеры, серверные компьютеры, переносные или портативные устройства, планшетные устройства, многопроцессорные системы, системы, основанные на микропроцессорах, компьютерные приставки к телевизору, программируемую бытовую электронику, сетевые PC, миникомпьютеры, универсальные вычислительные машины, распределенные вычислительные среды, содержащие любые из вышеупомянутых систем или устройств, и т.д.The invention may function in conjunction with many other universal or specialized environments or computer system configurations. Possible variants of known computing systems, environments and / or configurations that may be suitable for use with the invention include: personal computers, server computers, portable or portable devices, tablet devices, multiprocessor systems, microprocessor-based systems, computer consoles to TV, programmable consumer electronics, network PCs, minicomputers, universal computers, distributed computing environments containing any of the above omyanutyh systems or devices, etc.

Изобретение может быть описано в основном контексте компьютерно-выполнимых команд, например программных модулей, выполняемых персональным компьютером. По существу, программные модули содержат подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют определенные типы абстрактных данных. Изобретение может быть осуществлено практически также в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки данных, связанными посредством системы связи. В распределенной вычислительной среде программные модули могут быть размещены в запоминающей среде локального и/или удаленного компьютера, включая запоминающие устройства.The invention may be described in the general context of computer-executable instructions, for example, program modules, executed by a personal computer. Essentially, program modules contain routines, programs, objects, components, data structures, etc. that perform specific tasks or implement certain types of abstract data. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communication system. In a distributed computing environment, program modules may be located in a storage medium of a local and / or remote computer, including storage devices.

Согласно фиг. 1 возможная система для реализации изобретения содержит универсальное вычислительное устройство в виде компьютера 110. Компоненты компьютера 110 могут содержать процессор 120, системную память 130 и системную шину 121, соединяющую различные компоненты системы, в том числе системную память с процессором 120, при этом компоненты не ограничиваются ими. Системная шина 121 может быть любого из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из многих архитектур шины. В качестве возможного варианта такие архитектуры включают шину архитектуры, соответствующей промышленному стандарту (ISA), шину микроканальной архитектуры (MCA), шину расширенной стандартной архитектуры для промышленного применения (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и 32-разрядную системную шину с возможностью расширения до 64 разрядов, взаимодействие через которую происходит без участия центрального процессора (PCI), также известную как шину Mezzanine, и т.д.According to FIG. 1, a possible system for implementing the invention comprises a universal computing device in the form of a computer 110. Components of a computer 110 may include a processor 120, a system memory 130, and a system bus 121 connecting various components of the system, including system memory with a processor 120, the components being not limited by them. The system bus 121 may be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using any of many bus architectures. Optionally, such architectures include an industry standard (ISA) architecture bus, microchannel architecture bus (MCA), an extended standard architecture bus for industrial applications (EISA), a local VESA bus, and 32-bit system bus with the possibility of expanding to 64 bits, the interaction through which occurs without the participation of the central processor (PCI), also known as the Mezzanine bus, etc.

Компьютер 110 обычно содержит несколько носителей информации, считываемых компьютером. Носитель информации, считываемый компьютером, может быть любым доступным носителем информации, к которому может осуществить доступ компьютер 110, и включает в себя энергозависимый и энергонезависимый, съемный и несъемный носитель информации. В качестве возможного варианта носитель информации, считываемый компьютером, может включать в себя запоминающую среду компьютера, средство связи и т.д. Запоминающая среда компьютера включает в себя энергозависимую и энергонезависимую, съемную и несъемную среду, реализованную любым способом или технологией для хранения информации, такими как команды, считываемые компьютером, структуры данных, программные модули или другие данные. Запоминающая среда компьютера включает в себя оперативное запоминающее устройство RAM (ОЗУ), постоянное запоминающее устройство ROM (ПЗУ), EEPROM (СППЗУ), флэш-память или другую технологию памяти, компакт-диск CD-ROM, универсальные цифровые диски DVD (УЦД) или другой оптический накопитель на дисках, магнитные кассеты, магнитную ленту, магнитный накопитель на дисках или другие магнитные запоминающие устройства и т.д. или любую другую среду, которая может использоваться для хранения необходимой информации и к которой может осуществить доступ компьютер 110. Средство связи обычно воплощает команды, считываемые компьютером, структуры данных, программные модули или другие данные в модулированном сигнале данных, например несущей или другом механизме переноса информации, и включает любое средство передачи информации. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или большее количество из набора его характеристик, измененных таким образом, чтобы кодировать информацию в сигнале. В качестве возможного варианта средство связи включает проводное средство, такое как проводная сеть или прямое кабельное соединение, и беспроводное средство, такое как акустическое, радио, инфракрасное и другое беспроводное средство и т.д. Комбинации любых упомянутых выше средств также должны быть включены в контекст носителей информации, считываемых компьютером.Computer 110 typically comprises several storage media readable by a computer. The storage medium readable by a computer can be any available storage medium that can be accessed by computer 110, and includes a volatile and non-volatile, removable and non-removable storage medium. Alternatively, a computer readable medium may include a computer storage medium, a communication medium, etc. The storage medium of a computer includes a volatile and non-volatile, removable and non-removable medium implemented by any method or technology for storing information, such as instructions read by a computer, data structures, program modules or other data. The computer’s storage medium includes random access memory (RAM), read-only memory (ROM), EEPROM (EPROM), flash memory or other memory technology, a CD-ROM, universal digital DVDs (DCD), or other optical disk drive, magnetic tapes, magnetic tape, magnetic disk drive or other magnetic storage devices, etc. or any other medium that can be used to store the necessary information and which can be accessed by computer 110. A communication medium typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal, such as a carrier or other information transfer mechanism , and includes any means of transmitting information. The term "modulated data signal" means a signal that has one or more of a set of its characteristics, modified so as to encode information in the signal. Alternatively, the communication means includes wired means, such as a wired network or a direct cable connection, and wireless means, such as acoustic, radio, infrared and other wireless means, etc. Combinations of any of the means mentioned above should also be included in the context of computer readable media.

Системная память 130 включает в себя запоминающую среду компьютера в виде энергозависимой и/или энергонезависимой памяти, например ПЗУ 131 и ОЗУ 132. Базовая система 133 ввода/вывода BIOS (БИОС), содержащая базовые процедуры, способствующие передаче информации между элементами внутри компьютера 110, такие как используются при запуске, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, к которым можно осуществить доступ немедленно, и/или с которыми в текущее время оперирует процессор 120. В качестве возможного варианта фиг. 1 изображает операционную систему 134, прикладные программы 135, другие программные модули 136 и данные 137 программы.System memory 130 includes a computer storage medium in the form of volatile and / or non-volatile memory, such as ROM 131 and RAM 132. A BIOS BIOS I / O base system 133, containing basic procedures that facilitate the transfer of information between elements within computer 110, such as used at startup, it is usually stored in ROM 131. RAM 132 typically contains data and / or program modules that can be accessed immediately and / or with which processor 120 is currently operating. As a possible option, fi . 1 shows an operating system 134, application programs 135, other program modules 136, and program data 137.

Компьютер 110 также может содержать другие съемные/несъемные, энергозависимые/энергонезависимые варианты запоминающей среды компьютера. Исключительно в качестве возможного варианта фиг. 1 изображает накопитель 141 на жестких дисках, осуществляющий считывание с несъемного, энергонезависимого магнитного носителя информации и запись на него, накопитель 151 на магнитных дисках, который осуществляет считывание с съемного энергонезависимого магнитного диска 152 и запись на него, и накопитель 155 на оптических дисках, который осуществляет считывание с съемного энергонезависимого оптического диска 156, например, компакт-диска CD-ROM или другого оптического носителя информации, и запись на него. Другие съемные/несъемные, энергозависимые/энергонезависимые варианты запоминающей среды компьютера, которые могут быть использованы в возможной операционной среде, включают в себя кассеты на магнитной ленте, карточки флэш-памяти, универсальные цифровые диски, ленту для цифрового видеомагнитофона, твердотельное ОЗУ, твердотельное ПЗУ и т.д. Накопитель 141 на жестких дисках обычно подсоединен к системной шине 121 посредством интерфейса несъемной памяти, например интерфейса 140, а накопитель 151 на магнитных дисках и накопитель 155 на оптических дисках обычно подсоединен к системной шине 121 посредством интерфейса съемной памяти, например интерфейса 150.The computer 110 may also include other removable / non-removable, volatile / non-volatile options for the storage medium of the computer. Exclusively as a possible embodiment of FIG. 1 shows a hard disk drive 141 that reads from and writes to a non-removable, non-volatile magnetic storage medium, a magnetic disk drive 151 that reads from and writes to a removable non-volatile magnetic disk 152, and an optical drive 155 reads from a removable non-volatile optical disk 156, for example, a CD-ROM or other optical information medium, and writes to it. Other removable / non-removable, volatile / non-volatile computer storage media options that can be used in a possible operating environment include magnetic tape, flash memory cards, universal digital disks, tape for digital video recorder, solid state RAM, solid state ROM and etc. A hard disk drive 141 is typically connected to the system bus 121 via a non-removable memory interface, such as interface 140, and a magnetic disk drive 151 and an optical disk drive 155 are usually connected to the system bus 121 via a removable memory interface, such as interface 150.

Накопители на дисках и соответствующие им варианты запоминающей среды компьютера, описанные выше и изображенные на фиг. 1, обеспечивают хранение команд, считываемых компьютером, структур данных, программных модулей и других данных для компьютера 110. Например, на фиг. 1 изображен накопитель 141 на жестких дисках, в котором хранится операционная система 144, прикладные программы 145, другие программные модули 146 и данные 147 программы. Следует отметить, что указанные компоненты могут быть такими же, как операционная система 134, прикладные программы 135, другие программные модули 136 и данные 137 программы, или могут быть отличны от них. Здесь операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программы присвоены другие ссылочные позиции для иллюстрации того, что, как минимум, они являются другими копиями. Пользователь может осуществлять ввод команд и информации в компьютер 110 посредством устройств ввода, таких как клавиатура 162 и указательное устройство 161, обычно определенное как мышь, шаровой указатель или сенсорная панель, микрофон 163, планшет или электронный цифратор 164. Другие устройства ввода (не изображены) могут включать в себя джойстик, игровую панель, спутниковую антенну и т.д. Часто эти и другие устройства ввода соединены с процессором 120 посредством пользовательского интерфейса 160, подсоединенного к системной шине, но они могут быть соединены с процессором посредством другого интерфейса и другими шинными структурами, такими как параллельный порт, игровой порт или универсальная последовательная шина USB. К системной шине 121 также посредством интерфейса, такого как видеоинтерфейс 190, подсоединен монитор 191 или другой тип устройства отображения. Следует отметить, что монитор и/или панель сенсорного экрана могут быть физически соединены с корпусом, в который встроено вычислительное устройство 110, например персональный компьютер планшетного типа. Дополнительно компьютеры, такие как вычислительное устройство 110, могут также содержать другие периферийные устройства вывода, например динамики 197 и принтер 196, которые могут быть подсоединены посредством интерфейса 194 периферийных устройств вывода, и т.д.Disk drives and their corresponding variants of the computer storage medium described above and shown in FIG. 1 provide storage for computer readable instructions, data structures, program modules, and other data for computer 110. For example, in FIG. 1 shows a hard disk drive 141 in which an operating system 144, application programs 145, other program modules 146, and program data 147 are stored. It should be noted that these components may be the same as, or may be different from, the operating system 134, application programs 135, other program modules 136, and program data 137. Here, the operating system 144, application programs 145, other program modules 146, and program data 147 are assigned different reference numbers to illustrate that, at a minimum, they are different copies. The user can enter commands and information into the computer 110 through input devices such as a keyboard 162 and a pointing device 161, usually defined as a mouse, ball pointer or touch pad, microphone 163, tablet or electronic digitizer 164. Other input devices (not shown) may include a joystick, game pad, satellite dish, etc. Often these and other input devices are connected to the processor 120 via a user interface 160 connected to the system bus, but they can be connected to the processor via another interface and other bus structures such as a parallel port, a game port, or a universal USB serial bus. To the system bus 121 also through an interface, such as a video interface 190, a monitor 191 or other type of display device is connected. It should be noted that the monitor and / or the touch screen panel can be physically connected to the housing in which the computing device 110 is integrated, for example, a tablet-type personal computer. Additionally, computers, such as computing device 110, may also include other peripheral output devices, such as speakers 197 and a printer 196, which can be connected via an interface 194 of peripheral output devices, etc.

Компьютер 110 может функционировать в среде с сетевой структурой с использованием логических соединений с одним или большим количеством удаленных компьютеров, например удаленным компьютером 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим узлом общей сети и обычно содержит многие или все элементы, описанные выше в отношении компьютера 110, хотя фиг. 1 изображает только запоминающее устройство 181. Указанные логические соединения, изображенные фиг.1, включают в себя локальную сеть связи (ЛС) 171 и глобальную сеть связи (ГС) 173, но могут также включать в себя другие сети связи. Такие варианты сетевой среды часто используются в офисах, корпоративных вычислительных сетях, сетях интранет (корпоративных локальных сетях повышенной надежности с ограниченным доступом) и в Интернет. Например, вычислительная система 110 может содержать машину-источник информации, из которой переносятся данные, а удаленный компьютер 180 может содержать машину-адресат. Следует, однако, отметить, что соединение машины-источника и машины-адресата посредством сети или любого другого средства не требуется, вместо этого данные могут переноситься через носитель информации, который может быть записан платформой источника и считан платформой или платформами адресата.Computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as remote computer 180. Remote computer 180 may be a personal computer, server, router, network PC, peer-to-peer device, or other host on a shared network, and typically contains many or all of the elements described above with respect to computer 110, although FIG. 1 only depicts a storage device 181. These logical connections depicted in FIG. 1 include a local area network (LAN) 171 and a global network (HS) 173, but may also include other communication networks. Such options for the network environment are often used in offices, corporate computing networks, intranets (corporate local networks of increased reliability with limited access) and the Internet. For example, computing system 110 may comprise a source machine from which data is transferred, and remote computer 180 may comprise a destination machine. However, it should be noted that the connection of the source machine and the destination machine via a network or any other means is not required; instead, data can be transferred through a storage medium that can be recorded by the source platform and read by the destination platform or platforms.

При использовании в сетевой среде ЛС компьютер 110 подсоединяется к ЛС 171 посредством сетевого интерфейса или адаптера 170. При использовании в сетевой среде ГС компьютер 110 обычно содержит модем 172 или другое средство для установления связи через ГС 173, например Интернет. Модем 172, который может быть внутренним или внешним, может быть подсоединен к системной шине 121 посредством пользовательского интерфейса 160 ввода или другого соответствующего механизма. В среде с сетевой структурой программные модули, описанные в отношении компьютера 110, или их части могут храниться в удаленном запоминающем устройстве. В качестве возможного варианта фиг. 1 изображает удаленные прикладные программы 185 как хранящиеся на запоминающем устройстве 181. Ясно, что показанные сетевые соединения являются возможными вариантами, и могут быть использованы другие средства установления линии связи между компьютерами.When used in a LAN network environment, the computer 110 is connected to the LAN 171 via a network interface or adapter 170. When used in a LAN network environment, the computer 110 typically includes a modem 172 or other means for establishing communication via the GS 173, for example, the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via an input user interface 160 or other appropriate mechanism. In an environment with a network structure, program modules described with respect to computer 110, or parts thereof, may be stored in a remote storage device. As a possible embodiment of FIG. 1 depicts remote application programs 185 as stored on a storage device 181. It is clear that the network connections shown are possible options, and other means of establishing a communication link between computers can be used.

В последующем описании изобретение будет описано в отношении действий и символических представлений операций, которые выполняются одним или большим количеством компьютеров, если не указано иначе. Также будет понятно, что такие операции и действия, которые иногда упоминаются как компьютерно-выполнимые, включают в себя осуществляемое процессором компьютера манипулирование электрическими сигналами, представляющими данные в структурном виде. Такое манипулирование преобразует данные или сохраняет их в местоположениях в системе памяти компьютера, что переконфигурирует или изменяет иным образом функционирование компьютера способом, известным специалистам в данной области техники. Структуры данных, где хранятся данные, являются физическими местоположениями памяти, имеющими определенные свойства, определяемые форматом данных. Однако, хотя изобретение описано в определенном выше контексте, не предполагается ограничение изобретения этим контекстом, поскольку для знающих технику очевидно, что разные операции и действия, описанные далее, могут быть реализованы также аппаратно.In the following description, the invention will be described with respect to actions and symbolic representations of operations that are performed by one or more computers, unless otherwise indicated. It will also be understood that such operations and actions, which are sometimes referred to as computer-executable, include the manipulation by an electric processor of a computer of electrical signals representing data in a structural form. Such manipulation converts data or stores it at locations in the computer’s memory system, which reconfigures or otherwise modifies the functioning of the computer in a manner known to those skilled in the art. The data structures where the data is stored are physical memory locations having certain properties defined by the data format. However, although the invention is described in the context defined above, it is not intended to limit the invention to this context, as it is obvious to those skilled in the art that the various operations and actions described below can also be implemented in hardware.

Согласно фиг. 2 демультиплексор, предусмотренный настоящим изобретением, может функционировать в архитектуре Базовых концепций Мультимедиа Media Foundation, которая является реализацией одной из архитектур мультимедиа Microsoft. Хотя фиг. 2 изображает демультиплексор в архитектуре Media Foundation, очевидно, что API демультиплексора, предусмотренного изобретением, может использоваться в других архитектурах мультимедиа. До непосредственного описания демультиплексора необходимо описать Media Foundation. Media Foundation является архитектурой, представленной компонентами. Как изображено, Media Foundation содержит компоненты уровня 211 ядра, ответственные за некоторый базовый модуль функциональных возможностей в Media Foundation, и компоненты уровня 201 Управления, ответственные за выполнение более общих задач с использованием базовых компонентов Ядра.According to FIG. 2, the demultiplexer provided by the present invention can function in the architecture of the Basic Concepts of the Multimedia Media Foundation, which is an implementation of one of the Microsoft multimedia architectures. Although FIG. 2 shows a demultiplexer in the Media Foundation architecture, it is obvious that the demultiplexer API of the invention can be used in other multimedia architectures. Before describing the demultiplexer directly, you need to describe the Media Foundation. Media Foundation is an architecture represented by components. As depicted, the Media Foundation contains core level 211 components that are responsible for some core functionality module in Media Foundation, and Management level 201 components that are responsible for more general tasks using core core components.

Компоненты уровня 211 ядра включают в себя источники 210 мультимедиа и источники 214 потока, которые обеспечивают передачу мультимедийных данных через унифицированный хорошо определенный интерфейс. Источники 210 мультимедиа описывают представление, включая потоки, которые должны быть доступны. Существует много реализаций источников мультимедиа для обеспечения мультимедийных данных из различных типов мультимедийных файлов или устройств. Уровень 211 ядра дополнительно содержит модули преобразования, изображенные блоком 208, которые выполняют некоторого вида операции преобразования мультимедийных данных через унифицированный хорошо определенный интерфейс. Возможными вариантами преобразований являются кодеки, компоненты изменения размера видео, модули повторной выборки звука, статистические процессоры, модули повторной выборки цвета и т.д. Демультиплексор, предусмотренный настоящим изобретением, который в качестве входных данных берет перемеженные (чередующиеся) мультимедийные данные и разделяет данные в потоки мультимедийных данных, используемые индивидуально, является преобразованием в архитектуре фиг. 2. Блок 208 дополнительно включает в себя мультиплексоры, которые принимают индивидуальные потоки мультимедийных данных и объединяют их в перемеженные мультимедийные данные. Мультиплексоры совместно используют унифицированный хорошо определенный интерфейс, и существуют многие реализации для мультиплексирования в разные типы мультимедийных данных. Уровень 211 ядра дополнительно включает в себя приемники 212 (выходных данных) потока и приемники 230 (выходных данных) мультимедиа. Приемники 230 мультимедиа принимают на входе мультимедийные данные через унифицированный, хорошо определенный интерфейс. Существуют многие реализации приемников мультимедиа для выполнения различных функций с мультимедийными данными. Например, запись мультимедийных данных в заданный тип файла или отображение мультимедийных данных на мониторе с использованием видеоплаты.Kernel level 211 components include multimedia sources 210 and stream sources 214 that provide multimedia data transmission through a unified, well-defined interface. Media sources 210 describe the presentation, including the streams that should be available. There are many implementations of multimedia sources for providing multimedia data from various types of multimedia files or devices. The core level 211 further comprises conversion modules depicted by block 208, which perform some kind of multimedia data conversion operation through a unified well-defined interface. Possible conversion options are codecs, video resizing components, audio resampling modules, statistical processors, color resampling modules, etc. The demultiplexer provided by the present invention, which takes interleaved (interleaved) multimedia data as input and splits the data into multimedia streams used individually, is a transformation in the architecture of FIG. 2. Block 208 further includes multiplexers that receive individual multimedia data streams and combine them into interleaved multimedia data. Multiplexers share a unified, well-defined interface, and there are many implementations for multiplexing into different types of multimedia data. The core level 211 further includes stream receivers 212 (output) and multimedia receivers 230 (output). Multimedia receivers 230 receive multimedia input as a unified, well-defined interface. There are many implementations of multimedia receivers for performing various functions with multimedia data. For example, recording multimedia data in a given file type or displaying multimedia data on a monitor using a video card.

Компоненты уровня 201 управления используют компоненты уровня 211 ядра для выполнения более простым способом задач более высокого уровня. Обычно для заданной задачи компонент уровня управления использует много различных компонентов уровня ядра. Например, воспроизведение мультимедийного файла использует источник мультимедиа для считывания файла с диска и анализа данных, один или большее количество преобразователей для восстановления сжатых мультимедийных данных и один или большее количество приемников мультимедиа для отображения мультимедийных данных. Уровень 201 управления содержит спецпроцессор 260 мультимедиа, который взаимодействует с приложением 202 для приема и передачи потоков мультимедийных данных, сеанс 240 мультимедиа, процессор 220 мультимедиа и загрузчик 250 топологии, изображенный внутри сеанса 240 мультимедиа. Загрузчик 250 топологии является компонентом уровня управления, ответственным за описание потока данных между компонентами уровня ядра. Компоненты уровня управления могут быть сконфигурированы так, чтобы избежать доступа к большему количеству элементарных компонентов уровня ядра, используемых уровнем управления. Данные проходят через систему, начиная с источника 210 мультимедиа, через сеанс 240 мультимедиа на процессор 220 мультимедиа и выводятся в приемнике 230 мультимедиа. Процессор 220 мультимедиа запускает конвейер источников мультимедиа и других компонентов в топологии. Сеанс 240 мультимедиа осуществляет руководство, когда возникает событие в топологии, и загрузчик 250 топологии подтверждает, что предписанные события в топологии происходят. Сеанс 240 мультимедиа также конфигурирует процессор 220 мультимедиа и использует выборки, возвращенные процессором 210 мультимедиа. Он осуществляет это в контексте спецпроцессора 260 мультимедиа и передает выборки от процессора 220 мультимедиа к приемникам мультимедиа, которые он согласовал с вызывающей программой спецпроцессора 260 мультимедиа (например, приложения 202). Компоненты в топологии включают в себя компоненты источника 210 мультимедиа и компоненты приемника 230 мультимедиа, а также другие элементы. Система 200 базовых концепций мультимедиа обеспечивает интерфейсы и схему распределения для соединения объектов мультимедиа потоковой обработки данных. Система обеспечивает пользователю возможность конкретизировать соединения между унифицированными или специализированными источниками, преобразованиями и объектами приемника посредством символической абстракции, используя понятие топологии.Management level 201 components use kernel level 211 components to perform higher level tasks in a simpler way. Typically, for a given task, a control-level component uses many different kernel-level components. For example, playing a multimedia file uses a multimedia source to read a file from disk and analyze data, one or more transducers to recover compressed multimedia data, and one or more multimedia receivers to display multimedia data. The control layer 201 comprises a special multimedia processor 260 that interacts with an application 202 for receiving and transmitting multimedia data streams, a multimedia session 240, a multimedia processor 220, and a topology downloader 250 depicted inside the multimedia session 240. Topology loader 250 is a control layer component responsible for describing the flow of data between kernel level components. The components of the control layer can be configured to avoid accessing more of the core elementary components used by the control layer. Data passes through the system, starting from the multimedia source 210, through the multimedia session 240 to the multimedia processor 220 and output to the multimedia receiver 230. The multimedia processor 220 launches a pipeline of multimedia sources and other components in a topology. A media session 240 provides guidance when an event in the topology occurs, and the topology loader 250 confirms that the prescribed events in the topology are occurring. The media session 240 also configures the media processor 220 and uses the samples returned by the media processor 210. He does this in the context of the special multimedia processor 260 and transfers samples from the multimedia processor 220 to the multimedia receivers, which he coordinated with the calling program of the special multimedia processor 260 (for example, application 202). The components in the topology include the components of the multimedia source 210 and the components of the multimedia receiver 230, as well as other elements. A system of 200 basic multimedia concepts provides interfaces and a distribution scheme for connecting multimedia streaming data objects. The system provides the user with the ability to specify the connections between unified or specialized sources, transformations, and receiver objects through symbolic abstraction using the concept of topology.

Согласно фиг. 3 ниже приведено краткое описание демультиплексора 300. В последующем описании будут использованы ссылки на команды. Эти команды описаны ниже. API демультиплексора разделяет формат данных из источника данных. API демультиплексора принимает мультиплексированные данные как буфер данных в оперативной памяти, и выполняет операцию демультиплексирования. Это дает требуемый результат, состоящий в том, что много разных источников данных могут использовать одну реализацию демультиплексора для выполнения указанной операции. Например, DV данные могут поступать непосредственно из DV камеры, но также могут храниться в виде файла на жестком диске. В этом случае существует два фрагмента кода для формирования мультиплексированных DV данных (например, один, который осуществляет согласование с камерой, другой, который осуществляет согласование с файловой системой), но может быть использована одна и та же реализация демультиплексора. Демультиплексор 300 поддерживает интерфейс IMFDemultiplexer и ответственен за разбиение мультиплексированного потока на части элементарных потоков. Демультиплексор 300 функционирует в синхронном режиме (подобном DMO) и может обрабатывать динамические изменения в доступных элементарных потоках, вызванные изменениями в мультиплексированном потоке. Он согласует и формирует выборки, которые передаются через интерфейс IMFsample, и размещает сформированные выборки, охватывающие несколько буферов.According to FIG. 3, a brief description of the demultiplexer 300 is provided below. In the following description, references to commands will be used. These commands are described below. The demultiplexer API separates the data format from the data source. The demultiplexer API accepts the multiplexed data as a data buffer in RAM, and performs the demultiplexing operation. This gives the desired result, consisting in the fact that many different data sources can use one implementation of the demultiplexer to perform the specified operation. For example, DV data can come directly from a DV camera, but can also be stored as a file on your hard drive. In this case, there are two pieces of code for generating multiplexed DV data (for example, one that matches the camera, the other that matches the file system), but the same demultiplexer implementation can be used. The demultiplexer 300 supports the IMFDemultiplexer interface and is responsible for splitting the multiplexed stream into parts of elementary streams. Demultiplexer 300 operates in synchronous mode (similar to DMO) and can process dynamic changes in available elementary streams caused by changes in the multiplexed stream. It coordinates and generates samples that are transmitted through the IMFsample interface, and places the generated samples spanning several buffers.

Мультиплексированный поток 302 является единым потоком, содержащим более одного элементарного потока. Элементарный поток 304, 306 является потоком подобных элементов (например, аудио, видео и т.д.). Нет необходимости во взаимно однозначном соответствии между мультиплексированными выборками (М) 308 и элементарными выборками (Э) 310, 312. Например, может существовать, а может и не существовать полная элементарная выборка для каждого элементарного потока в каждой мультиплексированной выборке. Дополнительно, также не существует конкретного требования на то, чтобы элементарные выборки были расположены в правильном порядке в мультиплексированном потоке. Элементарные выборки, выходящие из потока, могут не использовать совместно одинаковые временные метки. Один элементарный поток может быть смещен относительно другого. Некоторые мультиплексированные потоки могут содержать только один набор элементарных потоков на протяжении потока. Некоторые мультиплексированные потоки могут иметь разные наборы элементарных потоков в разное время.Multiplexed stream 302 is a single stream containing more than one elementary stream. Elementary stream 304, 306 is a stream of similar elements (e.g., audio, video, etc.). There is no need for a one-to-one correspondence between multiplexed samples (M) 308 and elementary samples (E) 310, 312. For example, there may or may not exist a complete elementary sample for each elementary stream in each multiplexed sample. Additionally, there is also no specific requirement that the elementary samples be arranged in the correct order in the multiplexed stream. Elementary samples leaving the stream may not share the same timestamps. One elementary stream can be offset relative to another. Some multiplexed streams may contain only one set of elementary streams per stream. Some multiplexed streams may have different sets of elementary streams at different times.

Каждый набор координированных элементарных потоков называется представлением 320. Каждый набор имеет соответствующий дескриптор 322 представления (П). Этот дескриптор 322 представления имеет две основные задачи. Во-первых, он описывает типы мультимедиа каждого элементарного потока. Во-вторых, он обеспечивает механизм для выбора, какие из доступных потоков должны быть извлечены демультиплексором 300. Текущее Представление 324 всегда описывает выбранные потоки и типы данных текущих выходных потоков.Each set of coordinated elementary streams is called a view 320. Each set has a corresponding view descriptor 322 (P). This view descriptor 322 has two main tasks. First, it describes the media types of each elementary stream. Secondly, it provides a mechanism for choosing which of the available streams should be extracted by the demultiplexer 300. The Current View 324 always describes the selected streams and data types of the current output streams.

Прежде чем выборка может быть обработана демультиплексором 300, используется алгоритм разбиения для преобразования мультиплексированных выборок в элементарные выборки для того, чтобы стало известно, какие потоки необходимо извлечь. Эта информация содержится в дескрипторе 322 представления. До выбора потоков дескриптор представления «ждет обработки». После выбора потоков дескриптор представления становится "активным". Чтобы сделать представление активным, его извлекают из очереди 326 представлений, ждущих обработки, посредством вызова GetPendingPresentationDescriptor. Выбираются соответствующие потоки и затем вызывающая программа вызывает метод SetPresentationDescriptor. В этот момент (если выполнены определенные условия) представление становится активным представлением 324 и удаляется из очереди 326 представлений, ждущих обработки. Представление, ждущее обработки, может стать активным, только если обслужены все выходные данные из предшествующего активного представления.Before the sample can be processed by the demultiplexer 300, a partition algorithm is used to convert the multiplexed samples to elementary samples in order to know which streams to retrieve. This information is contained in view descriptor 322. Prior to selecting threads, the view descriptor is “waiting for processing”. After selecting the threads, the view descriptor becomes "active". To make a presentation active, it is retrieved from the queue of 326 pending presentations by calling GetPendingPresentationDescriptor. The appropriate streams are selected and then the caller calls the SetPresentationDescriptor method. At this point (if certain conditions are met), the view becomes the active view 324 and is removed from the queue 326 of the views awaiting processing. A pending view can become active only if all output from the previous active view is served.

Демультиплексор 300 содержит по меньшей мере два набора очередей. Очереди бывают входными очередями 330 и выходными очередями 340, 342. При вызове ProcessInput() на демультиплексоре 300 входные данные могут обрабатываться сразу или помещаются во входную очередь 330. Как только данные обработаны, то они помещаются в выходную очередь 340, 342. Типы данных и потоки, доступные в выходных очередях, всегда соответствуют текущему активному представлению 324.Demultiplexer 300 contains at least two sets of queues. Queues are input queues 330 and output queues 340, 342. When you call ProcessInput () on the demultiplexer 300, the input data can be processed immediately or placed in the input queue 330. Once the data is processed, they are placed in the output queue 340, 342. Data types and the threads available in the output queues always match the current active view 324.

Теперь, после общего описания демультиплексора 300, будут описаны состояния и переходы демультиплексора 300. В последующем описании будут сделаны ссылки на команды. Эти команды описаны ниже. Согласно фиг. 4, когда демультиплексор 300 создан, до вызова команды Initialize он находится в неинициализированном состоянии 400. В этом состоянии Initialize является единственной разрешенной операцией на объекте 300 демультиплексора. Вызов Initialize() переводит демультиплексор 300 в состояние 402 ожидания.Now, after a general description of the demultiplexer 300, the states and transitions of the demultiplexer 300 will be described. In the following description, references to commands will be made. These commands are described below. According to FIG. 4, when the demultiplexer 300 is created, before calling the Initialize command, it is in the uninitialized state 400. In this state, Initialize is the only allowed operation on the demultiplexer object 300. A call to Initialize () puts the demultiplexer 300 into a wait state 402.

Состояние 402 ожидания указывает, что разрешенные активные представления отсутствуют. Вызов ProcessOutput будет неуспешным. Для установки активного представления процессор 220 мультимедиа вызывает GetPendingPresentationDescriptor(), выбирает соответствующие потоки и вызывает SetPresentationDescriptor(). Если вызов GetPendingPresentationDescriptor() неуспешен, то вызывается ProcessInput(). Затем снова вызывается GetPendingPresentationDescriptor(), пока не станет возможным получить дескриптор 322 представления. При установке PresentationDescriptor на демультиплексоре 300 он перейдет в нейтральное состояние 404. Вызов Flush() сбросит все поставленные в очередь входные и выходные данные, и демультиплексор 300 перейдет в состояние 402 ожидания.A wait state 402 indicates that there are no allowed active views. A call to ProcessOutput will fail. To set an active presentation, the multimedia processor 220 calls GetPendingPresentationDescriptor (), selects the appropriate streams, and calls SetPresentationDescriptor (). If the call to GetPendingPresentationDescriptor () is unsuccessful, then ProcessInput () is called. Then GetPendingPresentationDescriptor () is called again until it becomes possible to get the presentation descriptor 322. When the PresentationDescriptor is installed on the demultiplexer 300, it will go to the neutral state 404. Calling Flush () will reset all queued input and output data, and the demultiplexer 300 will go to the idle state 402.

В нейтральном состоянии 404 разрешены вызовы всех функций (за исключением инициализации). Когда при вызове ProcessInput обнаруживается новое представление и обслужена последняя выборка из текущего представления из выходной очереди, демультиплексор 300 перейдет в состояние 402 ожидания.In the neutral state 404, calls to all functions (except for initialization) are allowed. When a new view is detected during a call to ProcessInput and the last sample from the current view from the output queue is served, the demultiplexer 300 will enter the idle state 402.

Некоторые потоки имеют фиксированные и конечные длительности, что может быть обнаружено на основе содержимого потока. Когда обнаружена такая ситуация и все выходные данные обслужены, демультиплексор перейдет в состояние 406 end_of_stream конца потока. Все последующие вызовы будут возвращать соответствующий код ошибки.Some streams have fixed and finite durations, which can be detected based on the contents of the stream. When such a situation is detected and all the output data is served, the demultiplexer will enter the end_of_stream state 406 end of the stream. All subsequent calls will return the corresponding error code.

При возникновении в демультиплексоре 300 неустранимой ошибки он перейдет в состояние 408 ошибки. Состояние 408 ошибки достижимо из любого другого состояния. Когда требуется удалить демультиплексор 300, вызывается Release(), и демультиплексор 300 переходит в конечное состояние 410 до своего удаления из системы. При освобождении последней ссылки на демультиплексор 300 затем демультиплексор 300 удаляется из памяти, независимо от того, в каком из состояний он находится. Releas() может быть вызвана из любого состояния, включая неинициализированное состояние.If an unrecoverable error occurs in the demultiplexer 300, it will transition to error state 408. Error state 408 is reachable from any other state. When you want to remove the demultiplexer 300, Release () is called, and the demultiplexer 300 transitions to the final state 410 before it is removed from the system. When the last reference to the demultiplexer 300 is released, then the demultiplexer 300 is deleted from the memory, regardless of which state it is in. Releas () can be called from any state, including an uninitialized state.

Теперь, после описания состояний и переходов демультиплексора 300, будут описаны команды, на которые делались ссылки выше. Эти команды включают в себя Initialize(), SetPresentationDescriptor(), GetPresentationDescriptor(), GetPendingPresentationDescriptor(), ProcessInput(), ProcessOutput() и Flush().Now, after describing the states and transitions of the demultiplexer 300, the commands referenced above will be described. These commands include Initialize (), SetPresentationDescriptor (), GetPresentationDescriptor (), GetPendingPresentationDescriptor (), ProcessInput (), ProcessOutput (), and Flush ().

Фиг. 5 является примерной диаграммой структуры данных, иллюстрирующей базовую структуру 460 данных сообщения, используемую для создания семи сообщений API демультиплексора, предусмотренного настоящим изобретением. Как можно увидеть, структура 460 данных сообщения содержит несколько полей 4621-N. В предпочтительном варианте осуществления первое поле 4621 зарезервировано для Заголовка. Остальные поля являются параметрами.FIG. 5 is an exemplary data structure diagram illustrating a basic message data structure 460 used to create seven demultiplexer API messages provided by the present invention. As you can see, the message data structure 460 contains several fields 462 1-N . In a preferred embodiment, the first field 462 1 is reserved for the Title. The remaining fields are parameters.

Команда Initialize создается в соответствии с структурой данных, предусмотренной настоящим изобретением. Как можно увидеть из диаграммы структуры данных фиг. 6, команда 480 Initialize создается из нескольких полей 482-490. Этими полями являются поле 482 заголовка, поле 484 объекта дескриптора потока, поле 486 типа мультимедиа, поле 488 количества основных типов и поле 490 массива основных типов. Каждая из различных команд создается аналогично, как проиллюстрировано фиг. 5, и описание каждой команды приведено ниже.The Initialize command is created in accordance with the data structure provided by the present invention. As can be seen from the data structure diagram of FIG. 6, the 480 Initialize command is created from several fields 482-490. These fields are the header field 482, the stream descriptor object field 484, the media type field 486, the main type number field 488 and the main type array field 490. Each of the various commands is created in the same way as illustrated in FIG. 5 and a description of each command is given below.

Метод Initialize() конфигурирует и инициализирует объект 300 демультиплексора. Дескриптор мультиплексированного потока может содержать соответствующие метаданные для инициализации состояния демультиплексора (включая любые данные заголовка и т.д.). Синтаксис команды следующий:The Initialize () method configures and initializes the demultiplexer object 300. The multiplexed stream descriptor may contain appropriate metadata to initialize the state of the demultiplexer (including any header data, etc.). The syntax of the command is as follows:

HRESULT Initialize(HRESULT Initialize (

IMFStreamDescriptor* pMuxedStreamDescriptor,IMFStreamDescriptor * pMuxedStreamDescriptor,

IMFMediaType* pSelectedMediaType,IMFMediaType * pSelectedMediaType,

DWORD cMajorTypes,DWORD cMajorTypes,

GUID* aMajorTypes,GUID * aMajorTypes,

););

Параметр pMuxedStreamDescriptor является входным параметром и является указателем на объект дескриптора потока, описывающего мультиплексированный поток. Первичная задача этого параметра состоит в том, чтобы обеспечить возможность использования демультиплексором 300 любых метаданных, которые могут быть в дескрипторе потока. Параметр pSelectedMediatype является входным параметром, определяющим выбранный тип мультимедиа для параметра pMuxedStreamDescriptor. Он определяет тип мультимедиа, соответствующий выборкам, которые передаются на Демультиплексор 300 в вызовах ProcessInput(). Параметр cMajorTypes является входным параметром, определяющим количество основных типов в массиве aMajorType. Этот параметр может быть нулевым. Параметр aMajorTypes является входным параметром, и он является массивом основных типов элементарных потоков, в извлечении которых в качестве выходных данных из демультиплексора 300 заинтересована вызывающая программа. Этот параметр может быть нулевым NULL, если cMajorTypes равен нулю. Заданный по умолчанию поток каждого из основных типов, обнаруженных в массиве, будет выбран в дескриптор представления, возвращаемый командой GetPendingPresentationDescriptor(). Если метод выполнен успешно, то он возвращает значение S_OK. Если метод выполнен неуспешно, то он возвращает код ошибки. Если представление доступно, то оно может быть извлечено посредством метода GetPendingPresentationDescriptor. Если представление недоступно после инициализации, то представление может стать доступным после подачи данных на демультиплексор посредством ProcessInput.The pMuxedStreamDescriptor parameter is an input parameter and is a pointer to a stream descriptor object that describes the multiplexed stream. The primary objective of this parameter is to enable the demultiplexer 300 to use any metadata that may be in the stream descriptor. The pSelectedMediatype parameter is an input parameter that defines the selected media type for the pMuxedStreamDescriptor parameter. It determines the type of media that corresponds to the samples that are passed to the Demultiplexer 300 in calls to ProcessInput (). The cMajorTypes parameter is an input parameter that determines the number of basic types in the aMajorType array. This parameter may be null. The parameter aMajorTypes is an input parameter, and it is an array of the main types of elementary streams, in which the calling program is interested in extracting from the demultiplexer 300. This parameter can be zero NULL if cMajorTypes is zero. The default stream of each of the main types found in the array will be selected in the presentation descriptor returned by GetPendingPresentationDescriptor (). If the method is successful, then it returns the value S_OK. If the method is unsuccessful, then it returns an error code. If a presentation is available, then it can be retrieved using the GetPendingPresentationDescriptor method. If the view is not available after initialization, then the view may become available after the data has been submitted to the demultiplexer via ProcessInput.

Метод SetPresentationDescriptor устанавливает дескриптор активного представления на демультиплексоре 300, указывающий новый выбор потоков, в котором заинтересована вызывающая программа. Дескриптор представления должен быть дескриптором, сформированным посредством метода GetPresentationDescriptor или метода GetPendingPresentationDescriptor. Синтаксис команды следующий:The SetPresentationDescriptor method sets an active presentation descriptor on a demultiplexer 300 indicating a new selection of streams in which the calling program is interested. The presentation descriptor must be a descriptor generated using the GetPresentationDescriptor method or the GetPendingPresentationDescriptor method. The syntax of the command is as follows:

HRESULT SetPresentationDescriptor(HRESULT SetPresentationDescriptor (

IMFPresentationDescriptor* pPresentationDescriptorIMFPresentationDescriptor * pPresentationDescriptor

););

Параметр pPresentationDescriptor является указателем на объект дескриптора представления. Если метод выполнен успешно, то он возвращает S_OK. Метод может быть выполнен неуспешно с MF_E_INVALID_PRESENTATION, если дескриптор представления недопустим. Метод может быть выполнен неуспешно с MF_E_OUTPUT_PENDING, если дескриптор представления является представлением, ожидающим обработки, и остаются выходные данные из текущего активного представления, ждущие обработки. Если существуют выходные данные из текущего активного представления, ждущие обработки, то представлением, ожидающим обработки, не может быть вызван метод SetPresentationDescriptor. Активное представление может вызывать SetPresentationDescriptor() для выбора или отмены выбора потоков. Если отменен выбор потока, то все выборки из этого потока, находящиеся в выходной очереди, теряются. Если выбран новый поток, то выборки из этого потока станут доступны в некоторый последующий момент времени. Так как разные потоки имеют разные требования буферизации на входе и на выходе, то момент времени, когда станут доступны выборки нового потока, будет зависеть от конкретного демультиплексора.The pPresentationDescriptor parameter is a pointer to a presentation descriptor object. If the method is successful, then it returns S_OK. The method may fail with MF_E_INVALID_PRESENTATION if the view descriptor is invalid. The method may fail with MF_E_OUTPUT_PENDING if the view descriptor is a pending view and there is output from the current active view waiting to be processed. If there is output from the currently active presentation that is awaiting processing, then the SetPresentationDescriptor method cannot be called by a view that is awaiting processing. The active presentation may call SetPresentationDescriptor () to select or deselect streams. If the selection of a stream is canceled, then all samples from this stream that are in the output queue are lost. If a new stream is selected, then samples from this stream will become available at some subsequent point in time. Since different streams have different requirements for buffering at the input and output, the point in time when samples of a new stream become available will depend on the particular demultiplexer.

Метод GetPresentationDescriptor извлекает клон дескриптора текущего активного представления на демультиплексоре 300. Синтаксис команды следующий:The GetPresentationDescriptor method retrieves the descriptor clone of the currently active presentation on demultiplexer 300. The command syntax is as follows:

HRESULT GetPresentationDescriptor(HRESULT GetPresentationDescriptor (

IMFPresentationDescriptor* ppPresentationDescriptorIMFPresentationDescriptor * ppPresentationDescriptor

););

Параметр ppPresentationDescriptor является указателем на указатель на объект дескриптора представления. Если метод выполнен успешно, то он возвращает S_OK. Если он выполнен неуспешно, то возвращает код ошибки. Если существуют выходные данные, ждущие обработки, то GetPresentationDescriptor возвращает дескриптор представления, соответствующий этим выходным данным.The ppPresentationDescriptor parameter is a pointer to a pointer to a presentation descriptor object. If the method is successful, then it returns S_OK. If it is unsuccessful, it returns an error code. If there is output waiting to be processed, the GetPresentationDescriptor returns a presentation descriptor corresponding to this output.

Метод GetPendingPresentationDescriptor извлекает следующее представление, ждущее обработки. Синтаксис команды следующий:The GetPendingPresentationDescriptor method retrieves the next pending presentation. The syntax of the command is as follows:

HRESULT GetPendingPresentationDescriptor(HRESULT GetPendingPresentationDescriptor (

IMFPresentationDescriptor* ppPendingPresentationDescriptorIMFPresentationDescriptor * ppPendingPresentationDescriptor

););

Параметр ppPendingPresentationDescriptor является указателем на указатель на объект дескриптора представления. Если метод выполнен успешно, то он возвращает S_OK. Если представления, ждущие обработки, отсутствуют, то метод возвращает MF_E_PRESENTATION_NOT_AVAILABLE. Если несколько раз вызван ProcessInput, то в очередь может быть поставлено несколько представлений, ждущих обработки. Этот способ возвратит только следующее представление, ждущее обработки. Если были обработаны все выходные данные для текущего активного представления, то представление, ждущее обработки, может быть сделано активным посредством вызова SetPresentation.The ppPendingPresentationDescriptor parameter is a pointer to a pointer to a presentation descriptor object. If the method is successful, then it returns S_OK. If there are no pending views, the method returns MF_E_PRESENTATION_NOT_AVAILABLE. If ProcessInput is called several times, then several views can be queued waiting to be processed. This method will only return the next view that is awaiting processing. If all the output for the current active presentation has been processed, then the pending presentation can be made active by calling SetPresentation.

Способ ProcessInput обеспечивает возможность вызывающей программе подать на демультиплексор выборку нового входного мультиплексированного потока. Если демультиплексор обнаруживает наличие новых потоков в представлении, то *pfNewPresentationAvailable будет установлен в значение TRUE (истина), и вызывающая программа посредством::GetPendingPresentationDescriptor может извлечь дескриптор представления, ждущего обработки. Синтаксис этой команды следующий:The ProcessInput method enables the caller to submit to the demultiplexer a sample of a new input multiplexed stream. If the demultiplexer detects the presence of new streams in the presentation, then * pfNewPresentationAvailable will be set to TRUE (true), and the caller can retrieve the descriptor of the pending presentation using :: GetPendingPresentationDescriptor. The syntax for this command is as follows:

HRESULT ProcessInput(HRESULT ProcessInput (

IMFSample* pSampleIMFSample * pSample

BOOL* pfNewPresentationAvailableBOOL * pfNewPresentationAvailable

););

Параметр pSample является указателем на объект выборки. Если метод выполнен успешно, то он возвращает S_OK. Параметр pfNewPresentationAvailable возвращает TRUE, когда результатом вызова ProcessInput является дескриптор нового представления, который добавляется в очередь представлений, ждущих обработки. При вызове ProcessInput или ProcessOutput демультиплексором может быть выполнена операция Demultiplexing. В любом случае при вызове ProcessInput данные будут поставлены в очередь, пока пользователь не вызовет ProcessOutput или данные не сбросятся вызовом Flush(). Одномоментно может быть активным только одно представление. Когда новое представление становится доступным, вызывающая программа должна очистить все выходные данные, ждущие обработки, посредством вызова ProcessOutput, извлечь новое представление посредством вызова GetPendingPresentationDescriptor и затем установить активное представление посредством вызова SetPresentation.The pSample parameter is a pointer to a selection object. If the method is successful, then it returns S_OK. The pfNewPresentationAvailable parameter returns TRUE when the result of calling ProcessInput is a handle to the new presentation that is added to the queue of presentations waiting to be processed. When a ProcessInput or ProcessOutput is called by the demultiplexer, the Demultiplexing operation can be performed. In any case, when calling ProcessInput, the data will be queued until the user calls ProcessOutput or the data is reset by calling Flush (). Only one view can be active at a time. When a new presentation becomes available, the caller must clear all pending output by calling ProcessOutput, retrieve the new presentation by calling GetPendingPresentationDescriptor, and then set the active presentation by calling SetPresentation.

Способ ProcessOutput обеспечивает возможность вызывающей программе извлечь элементарный поток или элементарные потоки из активного представления. Синтаксис команды следующий:The ProcessOutput method enables the caller to retrieve the elementary stream or elementary streams from the active view. The syntax of the command is as follows:

HRESULT ProcessOutput (HRESULT ProcessOutput (

DWORD dwStreamIdentifier,DWORD dwStreamIdentifier,

IMFSample* ppSampleIMFSample * ppSample

););

Параметр DwStreamIdentifier является 32-битным значением, содержащим идентификатор потока из активного представления для требуемой выборки. Параметр ppSample является указателем на указатель на объект выборки. Если метод выполнен успешно, то он возвращает S_OK. Если он выполнен неуспешно, то возвращает код ошибки. Если был достигнут конец потока, то будет возвращен код ошибки MF_E_ENDOFSTREAM. Если возвращен E_NO_MORE_DATA, то отсутствуют данные, доступные для обработки. Вызов ProcessInput() с другой выборкой мультиплексированных данных может уменьшить ошибку. Когда обработка доступных данных блокирована из-за того, что активное представление больше не является разрешенным, то способ возвратит MF_E_NEW_PRESENTATION. При изменении представления становится доступным новый набор потоков. Пользователь должен указать демультиплексору 300, какие потоки должны быть извлечены. Вызов GetPendingPresentationDescription, выбор требуемых потоков и вызов SetPresentationDescriptor() позволят обработать большее количество выборок из входной очереди. При необходимости объект 300 демультиплексора распределит пространство для выборок. Операция демультиплексирования Demultiplexing может быть выполнена демультиплексором посредством вызова ProcessInput или ProcessOutput. В любом случае, при вызове ProcessInput данные будут поставлены в очередь, пока пользователь не вызовет ProcessOutput или данные не будут сброшены вызовом Flush().The DwStreamIdentifier parameter is a 32-bit value that contains the stream identifier from the active view for the required selection. The ppSample parameter is a pointer to a pointer to a selection object. If the method is successful, then it returns S_OK. If it is unsuccessful, it returns an error code. If the end of the stream has been reached, the error code MF_E_ENDOFSTREAM will be returned. If E_NO_MORE_DATA is returned, then there is no data available for processing. Calling ProcessInput () with a different selection of multiplexed data may reduce the error. When the processing of available data is blocked due to the fact that the active view is no longer allowed, the method will return MF_E_NEW_PRESENTATION. When you change the view, a new set of threads becomes available. The user must indicate to the demultiplexer 300 which streams should be retrieved. Calling GetPendingPresentationDescription, selecting the required streams, and calling SetPresentationDescriptor () will allow you to process more samples from the input queue. If necessary, the demultiplexer entity 300 will allocate sample space. Demultiplexing Operation Demultiplexing can be performed by a demultiplexer by calling ProcessInput or ProcessOutput. In any case, when calling ProcessInput, the data will be queued until the user calls ProcessOutput or the data is flushed by calling Flush ().

Метод Flush обеспечивает возможность вызывающей программе сбросить все выборки, находящиеся в текущий момент времени в входной и выходной очереди в демультиплексоре 300. Flush также очищает ActivePresentationDescriptor. Это может быть сделано, когда данные “верхнего” потока стремятся к новому местоположению, или вызывающая программа просто предпочитает сбросить все буферизированные данные. Синтаксис команды следующий:The Flush method enables the caller to discard all samples currently in the input and output queues in the demultiplexer 300. Flush also clears the ActivePresentationDescriptor. This can be done when the “upstream” data tends to a new location, or the caller simply prefers to flush all buffered data. The syntax of the command is as follows:

HRESULT Flush();HRESULT Flush ();

Команда Flush не имеет параметров. Если метод выполнен успешно, то он возвращает S_OK. Если он выполнен неуспешно, то возвращает код ошибки. Вызов Flush очищает все данные из демультиплексора 300, находящиеся в очереди, и также очищает дескриптор активного представления. В зависимости от конкретного демультиплексора представление, ждущее обработки, может стать доступным сразу посредством вызова GetPendingPresentation, или вызывающей программе может потребоваться неоднократный вызов ProcessInput, пока представление, ждущее обработки, не станет доступным.The Flush command has no parameters. If the method is successful, then it returns S_OK. If it is unsuccessful, it returns an error code. The Flush call clears all data from the demultiplexer 300 in the queue and also clears the descriptor of the active view. Depending on the particular demultiplexer, a pending presentation may become available immediately by calling GetPendingPresentation, or the calling program may need to call ProcessInput repeatedly until a pending presentation is available.

Теперь, когда были описаны команды демультиплексора 300, будет приведено описание стандартной работы, где источник (например, приложение 202) не согласует приемник, принимающий мультиплексированный поток. Согласно фиг. 7, источник предоставляет мультиплексированный поток для выбора приложением (например, источник оцифровки видеоизображений предоставляет DV или источник телевидения TV предоставляет поток кода MPEG2) (этап 500). Уровень 201 управления определяет, согласовало ли приложение приемник для мультиплексированного потока (этап 502). Если приложение 202 не согласовало приемник для мультиплексированного потока, то сеанс 240 мультимедиа загружает соответствующий демультиплексор и инициализирует его дескриптором мультиплексированного потока (этап 504).Now that the commands of the demultiplexer 300 have been described, a standard operation will be described where the source (e.g., application 202) does not match the receiver receiving the multiplexed stream. According to FIG. 7, the source provides a multiplexed stream for selection by the application (for example, a video digitization source provides DV or a television source TV provides an MPEG2 code stream) (step 500). The control layer 201 determines whether the application has negotiated a receiver for the multiplexed stream (block 502). If application 202 has not matched the receiver for the multiplexed stream, then the media session 240 downloads the corresponding demultiplexer and initializes it with the multiplexed stream descriptor (step 504).

Если представление доступно из демультиплексора (этап 506), то сеанс 240 мультимедиа осуществляет попытку повторного согласования, используя дескрипторы элементарного потока (этап 508). Формируется остальная часть топологии (этап 510). Предоставленные элементарные потоки обрабатываются процессором 220 мультимедиа с использованием DMO (например, декодеров).If the presentation is accessible from the demultiplexer (step 506), then the multimedia session 240 attempts to reconcile using the elementary stream descriptors (step 508). The rest of the topology is formed (block 510). The provided elementary streams are processed by the multimedia processor 220 using DMO (e.g., decoders).

Если представление недоступно, то сеанс мультимедиа использует приемник мультимедиа NULL (пустой) для завершения топологии для мультиплексированного потока, пока не станет доступным большее количество информации (этап 512). Каждый раз при открытии сеанса и образовании потока выборок на демультиплексор 300 подаются выборки, пока не станет доступным дескриптор представления (этап 514). Это выполняется посредством вызова IMFMediaStream::ProcessSample на узел процессора мультимедиа, который представляет мультиплексированный поток. Процессор 220 мультимедиа вызывает IMFMediaStream::ProcessSample для нижележащего мультиплексированного потока, например источник AVI, предоставляющий поток DV. Когда выборка мультиплексированного потока извлечена, процессор мультимедиа вызывает IMFDemultiplexer::ProcessInput на демультиплексоре 300. Вызовы ProcessSample и ProcessInput продолжаются, пока IMFDemultiplexer::ProcessInput не возращает флажок нового представления, равного значению TRUE. Затем процессор 220 мультимедиа сигнализирует сеансу 240 мультимедиа через событие, что из-за изменения демультиплексора необходимо обновить текущую топологию. Сеанс 240 мультимедиа вызывает IMFDemultiplexer::GetCurrentPresentation для получения доступа к дескрипторам элементарных потоков, которые недавно стали доступны. Когда становится доступным дескриптор представления, сеанс мультимедиа может осуществить повторное согласование, используя дескрипторы элементарного потока (этап 516).If the view is not available, then the multimedia session uses the NULL multimedia receiver (empty) to complete the topology for the multiplexed stream until more information is available (step 512). Each time a session is opened and a stream of samples is created, samples are applied to the demultiplexer 300 until a presentation descriptor is available (step 514). This is accomplished by calling IMFMediaStream :: ProcessSample on the media processor node that represents the multiplexed stream. Media processor 220 calls IMFMediaStream :: ProcessSample for the underlying multiplexed stream, such as an AVI source that provides a DV stream. When the multiplex stream sample is retrieved, the media processor calls IMFDemultiplexer :: ProcessInput on the demultiplexer 300. The ProcessSample and ProcessInput calls continue until IMFDemultiplexer :: ProcessInput returns a new view flag equal to TRUE. Then, the multimedia processor 220 signals the multimedia session 240 through an event that the current topology needs to be updated due to a change in the demultiplexer. A multimedia session 240 calls IMFDemultiplexer :: GetCurrentPresentation to access elementary stream descriptors that have recently become available. When a presentation descriptor becomes available, the multimedia session may renegotiate using the elementary stream descriptors (block 516).

Описано API демультиплексора для потоков мультимедийных данных. API демультиплексора содержит набор интерфейсов, структур данных и событий для представления демультиплексора мультимедийных данных. API обеспечивает возможность потребителю единообразно использовать данные мультиплексированного потока, например DV, для формирования данных элементарного потока, например аудио и видео (сжатого или несжатого). API обеспечивает возможность использования демультиплексоров как независимых компонентов. API сокращает потребность в большом количестве API для фильтров, и от заданного фильтра более не требуется обеспечение интерфейса с API для каждого фильтра, к которому он мог быть подсоединен в системах, где не поддерживаются используемые фильтры. Также демультиплексор может быть выключен корректно, так как процессор мультимедиа управляет демультиплексором, а не фильтрами в фильтрующем графе.The demultiplexer API for multimedia data streams is described. The demultiplexer API contains a set of interfaces, data structures, and events for representing a multimedia data demultiplexer. The API enables consumers to uniformly use multiplexed stream data, such as DV, to generate elementary stream data, such as audio and video (compressed or uncompressed). The API provides the ability to use demultiplexers as independent components. The API reduces the need for a large number of APIs for filters, and a given filter is no longer required to provide an interface with an API for each filter to which it can be connected in systems where the filters used are not supported. Also, the demultiplexer can be turned off correctly, since the multimedia processor controls the demultiplexer, and not the filters in the filter graph.

Все представленные материалы здесь, включая патенты, заявки на патенты и публикации, полностью включены в описание изобретения путем ссылки.All materials presented here, including patents, patent applications and publications, are fully incorporated into the description of the invention by reference.

Принимая во внимание большое количество возможных вариантов осуществления, в которых могут быть применены принципы этого изобретения, должно быть ясно, что описанный здесь вариант осуществления, совместно с чертежами, предполагается только иллюстрирующим и не должен рассматриваться как ограничивающий область изобретения. Для специалистов очевидно, что, например, элементы иллюстрируемого варианта осуществления, показанные в виде программного обеспечения, могут быть выполнены аппаратно и наоборот, или что, не удаляясь от сути изобретения, структура и детали иллюстрируемого варианта осуществления могут быть изменены. Следовательно, описанное изобретение охватывает все варианты осуществления, которые могут быть осуществлены в контексте последующей формулы изобретения и ее эквивалентов.Given the large number of possible embodiments in which the principles of this invention can be applied, it should be clear that the embodiment described herein, together with the drawings, is intended to be illustrative only and should not be construed as limiting the scope of the invention. It will be apparent to those skilled in the art that, for example, the elements of the illustrated embodiment shown as software can be implemented in hardware and vice versa, or that, without departing from the essence of the invention, the structure and details of the illustrated embodiment can be changed. Therefore, the described invention encompasses all embodiments that may be practiced in the context of the following claims and their equivalents.

Claims (21)

1. Носитель информации, считываемый компьютером, на котором записаны выполняемые компьютером команды для выполнения этапа предоставления интерфейса для обеспечения связи с компонентом демультиплексора, выполняющего разделение мультиплексированного мультимедийного потока на элементарные потоки, при этом интерфейс содержит команды для:
инициализации компонента демультиплексора и его конфигурирования,
динамической установки дескриптора активного представления в отношении компонента демультиплексора,
подачи нового входного мультиплексированного потока в виде входных выборок в компонент демультиплексора,
извлечения из упомянутого активного представления, согласно дескриптору активного представления, по меньшей мере одного элементарного потока и выдачу его в виде выходных выборок, и
сброса выборок, находящихся в текущий момент времени во входной и выходной очередях.
1. An information carrier readable by a computer on which computer-executable instructions for performing the interface providing step for providing communication with a demultiplexer component performing separation of the multiplexed multimedia stream into elementary streams are recorded, wherein the interface contains instructions for:
initialization of the demultiplexer component and its configuration,
dynamically setting the active view descriptor with respect to the demultiplexer component,
supplying a new input multiplexed stream in the form of input samples to the demultiplexer component,
extracting from said active representation, according to the descriptor of the active representation, at least one elementary stream and issuing it in the form of output samples, and
reset samples currently in the input and output queues.
2. Носитель информации, считываемый компьютером, по п. 1, в котором интерфейс дополнительно содержит команды для извлечения клона активного в текущий момент времени дескриптора представления в отношении компонента демультиплексора.2. The computer readable storage medium according to claim 1, wherein the interface further comprises instructions for retrieving a clone of the currently active presentation descriptor with respect to the demultiplexer component. 3. Носитель информации, считываемый компьютером, по п. 2, в котором упомянутые команды, извлекающие клон, содержат дескриптор представления.3. The computer readable storage medium according to claim 2, wherein said clone retrieving instructions comprise a presentation descriptor. 4. Носитель информации, считываемый компьютером, по п. 1, в котором интерфейс дополнительно содержит команды для извлечения следующего представления, ждущего обработки.4. The storage medium readable by a computer according to claim 1, wherein the interface further comprises instructions for retrieving the next view waiting to be processed. 5. Носитель информации, считываемый компьютером, по п. 4, в котором команды для извлечения следующего представления, ждущего обработки, содержат дескриптор представления, ждущего обработки.5. The storage medium readable by a computer according to claim 4, wherein the instructions for retrieving the next view waiting to be processed comprise a handle to the view waiting to be processed. 6. Носитель информации, считываемый компьютером, по п. 1, в котором команды для инициализации компонента мультиплексора содержат параметры, включающие в себя:
дескриптор мультиплексированного потока,
выбранный тип мультимедиа для дескриптора мультиплексированного потока,
массив основных типов элементарных потоков, и
количество основных типов в массиве основных типов.
6. The storage medium readable by a computer according to claim 1, wherein the commands for initializing the multiplexer component contain parameters including:
multiplex stream descriptor
The selected media type for the multiplexed stream descriptor,
an array of basic types of elementary streams, and
the number of basic types in the array of basic types.
7. Носитель информации, считываемый компьютером, по п. 1, в котором команды для динамической установки дескриптора активного представления содержат указатель на объект дескриптора представления.7. The storage medium readable by a computer according to claim 1, wherein the instructions for dynamically setting an active view descriptor comprise a pointer to a presentation descriptor object. 8. Носитель информации, считываемый компьютером, по п. 1, в котором команды для подачи нового входного мультиплексированного потока содержат указатель на объект выборки.8. The storage medium readable by a computer according to claim 1, wherein the instructions for supplying a new input multiplexed stream comprise a pointer to a sample object. 9. Носитель информации, считываемый компьютером, по п. 8, в котором команды для подачи нового входного мультиплексированного потока дополнительно содержат возвращаемое значение, в котором имеется флажок нового представления.9. The storage medium readable by a computer according to claim 8, wherein the instructions for supplying a new input multiplexed stream further comprise a return value, in which there is a flag of the new view. 10. Носитель информации, считываемый компьютером, по п. 9, на котором записаны дополнительные выполняемые компьютером команды для выполнения этапов, включающих в себя:
если флажок нового представления имеет значение TRUE (истина), то:
извлекают следующее представление, ждущего обработки,
выбирают требуемые потоки, и
вызывают компонент динамической установки дескриптора активного представления в отношении компонента демультиплексора для обеспечения возможности обработки выборок из входной очереди демультиплексора.
10. The storage medium readable by a computer according to claim 9, wherein additional computer-executable instructions are recorded for performing steps including:
if the flag of the new view is TRUE, then:
retrieving the following view, pending processing,
select the desired flows, and
call the component of the dynamic installation of the descriptor of the active view in relation to the component of the demultiplexer to enable processing of samples from the input queue of the demultiplexer.
11. Носитель информации, считываемый компьютером, по п. 1, в котором команды для извлечения из упомянутого активного представления, согласно дескриптору активного представления, по меньшей мере одного элементарного потока и выдачу его в виде выходных выборок содержат идентификатор потока и указатель на указатель на объект выборки.11. The storage medium readable by a computer according to claim 1, wherein the instructions for extracting from the active view, according to the descriptor of the active view, at least one elementary stream and issuing it in the form of output samples contain a stream identifier and a pointer to an object pointer sampling. 12. Носитель информации, считываемый компьютером, по п. 11, в котором команды для извлечения из упомянутого активного представления, согласно дескриптору активного представления, по меньшей мере одного элементарного потока и выдачу его в виде выходных выборок дополнительно имеют возвращаемое на выходе значение.12. The storage medium readable by a computer according to claim 11, wherein the instructions for extracting from the active representation, according to the descriptor of the active representation, at least one elementary stream and issuing it in the form of output samples additionally have a return value at the output. 13. Носитель информации, считываемый компьютером, по п. 12, в котором возвращаемое на выходе значение включает в себя код ошибки конца потока или код ошибки отсутствия следующих данных.13. The storage medium readable by a computer according to claim 12, in which the value returned at the output includes an error code for the end of the stream or an error code for the absence of the following data. 14. Носитель информации, считываемый компьютером, по п. 1, в котором интерфейс принимает мультиплексированные данные в качестве буфера данных в памяти.14. The storage medium readable by a computer according to claim 1, wherein the interface receives the multiplexed data as a data buffer in memory. 15. Носитель информации, считываемый компьютером, по п. 14, в котором мультиплексированные данные имеют формат, включающий по меньшей мере один из форматов Digital Video, MPEG2, и ASF.15. The computer readable storage medium of claim 14, wherein the multiplexed data is in a format including at least one of Digital Video, MPEG2, and ASF formats. 16. Носитель информации, считываемый компьютером, по п.1, в котором команды для инициализации компонента демультиплексора обращаются к структуре данных для использования в мультиплексоре, при этом упомянутая структура данных содержит:
первое поле, содержащее заголовок,
второе поле, содержащее дескриптор мультиплексированного потока,
третье поле, содержащее выбранный тип мультимедиа дескриптора мультиплексированного потока,
четвертое поле, содержащее массив основных типов элементарных потоков, и
пятое поле, содержащее количество основных типов в массиве основных типов.
16. The storage medium readable by a computer according to claim 1, wherein the instructions for initializing the demultiplexer component refer to a data structure for use in a multiplexer, said data structure comprising:
The first field containing the title
a second field containing a handle to the multiplexed stream,
a third field containing the selected media type of the multiplexed stream descriptor,
a fourth field containing an array of basic types of elementary streams, and
the fifth field containing the number of basic types in the array of basic types.
17. Носитель информации, считываемый компьютером, по п.1, в котором команды динамической установки дескриптора активного представления для компонента обращаются к структуре данных для использования в демультиплексоре, при этом упомянутая структура данных содержит:
первое поле, содержащее заголовок, и
второе поле, содержащее дескриптор представления.
17. The storage medium readable by a computer according to claim 1, wherein the commands for dynamically setting the active view descriptor for the component access a data structure for use in a demultiplexer, said data structure comprising:
the first field containing the title, and
the second field containing the view descriptor.
18. Носитель информации, считываемый компьютером, по п.2, в котором команды для извлечения клона активного в текущий момент времени дескриптора представления в отношении компонента демультиплексора обращаются к структуре данных для использования в демультиплексоре, причем упомянутая структура данных содержит:
первое поле, содержащее заголовок, и второе поле, содержащее дескриптор представления.
18. The computer readable storage medium of claim 2, wherein the instructions for retrieving a clone of the currently active view descriptor in relation to the demultiplexer component refer to a data structure for use in the demultiplexer, said data structure comprising:
the first field containing the header and the second field containing the view descriptor.
19. Носитель информации, считываемый компьютером, по п.4, в котором команды для излечения следующего представления, ждущего обработки обращаются к структуре данных для использования в демультиплексоре, при этом упомянутая структура данных содержит:
первое поле, содержащее заголовок, и
второе поле, содержащее дескриптор представления, ждущего обработки.
19. The storage medium readable by a computer according to claim 4, in which the team to cure the next view, waiting to be processed, refer to a data structure for use in a demultiplexer, said data structure comprising:
the first field containing the title, and
a second field containing a handle to the view waiting to be processed.
20. Носитель информации, считываемый компьютером, по п.1, в котором команды для подачи нового входного мультиплексированного потока в качестве входных выборок в компонент демультиплексора обращаются к структуре данных для использования в демультиплексоре, причем упомянутая структура данных содержит:
первое поле, содержащее заголовок, и
второе поле, содержащее указатель на объект выборки.
20. The computer readable storage medium according to claim 1, wherein the instructions for supplying a new input multiplexed stream as input samples to a demultiplexer component refer to a data structure for use in a demultiplexer, said data structure comprising:
the first field containing the title, and
second field containing a pointer to the selection object.
21. Носитель информации, считываемый компьютером, по п.1, в котором команды для извлечения, согласно дескриптору активного представления, по меньшей мере одного элементарного потока из упомянутого активного представления и выдачу его в виде выходных выборок обращаются к структуре данных для использования в демультиплексоре, при этом упомянутая структура данных содержит:
первое поле, содержащее заголовок,
второе поле, содержащее идентификатор потока, и
третье поле, содержащее указатель на указатель на объект выборки.
21. The computer readable medium according to claim 1, wherein the instructions for retrieving, according to the descriptor of the active representation, at least one elementary stream from said active representation and issuing it in the form of output samples, refer to a data structure for use in a demultiplexer, wherein said data structure contains:
The first field containing the title
a second field containing a stream identifier, and
the third field containing a pointer to a pointer to a selection object.
RU2003125827/09A 2003-08-21 2003-08-21 Demultiplexer application program interface RU2351002C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2003125827/09A RU2351002C2 (en) 2003-08-21 2003-08-21 Demultiplexer application program interface

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2003125827/09A RU2351002C2 (en) 2003-08-21 2003-08-21 Demultiplexer application program interface

Publications (2)

Publication Number Publication Date
RU2003125827A RU2003125827A (en) 2005-02-27
RU2351002C2 true RU2351002C2 (en) 2009-03-27

Family

ID=35286088

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2003125827/09A RU2351002C2 (en) 2003-08-21 2003-08-21 Demultiplexer application program interface

Country Status (1)

Country Link
RU (1) RU2351002C2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2483351C1 (en) * 2012-04-19 2013-05-27 Закрытое акционерное общество Научно-производственный Центр "Микропроцессорные технологии" (ЗАО НПЦ МИТ) COMMUNICATION INTERFACE DEVICE FOR SpaceWire NETWORK

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2483351C1 (en) * 2012-04-19 2013-05-27 Закрытое акционерное общество Научно-производственный Центр "Микропроцессорные технологии" (ЗАО НПЦ МИТ) COMMUNICATION INTERFACE DEVICE FOR SpaceWire NETWORK

Also Published As

Publication number Publication date
RU2003125827A (en) 2005-02-27

Similar Documents

Publication Publication Date Title
US10528631B1 (en) Media data presented with time-based metadata
US7555540B2 (en) Media foundation media processor
US9043504B2 (en) Interfaces for digital media processing
US7774375B2 (en) Media foundation topology
US7725920B2 (en) Media foundation media sink
JP4249569B2 (en) Demultiplexer application program interface
RU2351002C2 (en) Demultiplexer application program interface
CN102036018B (en) Information processing apparatus and method
JP4285307B2 (en) Data processing apparatus and method
TWI779848B (en) Switching device and switching method using the same
JP4243033B2 (en) Content playback control device
JP2009116881A (en) Data processing device and its method

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20150526

MM4A The patent is invalid due to non-payment of fees

Effective date: 20190822