Программный интерфейс приложения демультиплексора

Иллюстрации

Показать все

Изобретение относится к обработке мультимедийных данных в вычислительной среде. Техническим результатом является обеспечение возможности потребителю единообразно использовать данные мультиплексированного потока, например DV, для формирования данных элементарных потоков, в том числе аудио и видео (сжатого или несжатого), и обеспечение использования демультиплексоров как независимых компонентов. На носитель информации записаны выполняемые компьютером команды для предоставления интерфейса для обеспечения связи с компонентом демультиплексора, выполняющего разделение мультиплексированного мультимедийного потока на элементарные потоки, при этом интерфейс содержит команды инициализации компонента демультиплексора и его конфигурирования, динамической установки дескриптора активного представления в отношении компонента демультиплексора, подачи нового входного мультиплексированного потока в виде входных выборок в компонент демультиплексора, извлечения из упомянутого активного представления, согласно дескриптору активного представления, по меньшей мере, одного элементарного потока и выдачу его в виде выходных выборок и сброса выборок, находящихся в текущий момент времени во входной и выходной очередях. 20 з.п. ф-лы, 7 ил.

Реферат

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

Изобретение относится, в общем, к электронной обработке данных, а более конкретно к обработке мультимедийных данных в вычислительной среде.

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

Широко распространяется и быстро развивается представление мультимедийной информации, основанное на цифровой обработке данных, комбинация видео и аудио в цифровом формате для просмотра на цифровом устройстве. Почти каждый новый персональный компьютер, изготовленный в настоящее время, содержит в некотором виде мультимедийные средства. Постоянно растет объем продаж цифровых продуктов, таких как камеры, видеомагнитофоны, телефоны и телевизоры. Мультимедиа становится все более и более распространенным в области Интернет так же, как продолжается постоянное и быстрое развитие Интернет. Наряду с развитием возросли требования пользователя к эффективности такого компьютерного оборудования. Повышенные требования пользователя распространяются не только на аппаратные возможности, но также на возможности обработки самих данных.

Для удовлетворения растущих требований для мультимедийных приложений был разработан способ, известный как потоковая передача данных. Потоковая передача данных обеспечивает такую передачу данных, при которой они могут обрабатываться, как постоянный и непрерывный поток. Это предоставляет то преимущество, особенно для больших мультимедийных файлов, состоящее в том, что данные могут отображаться или прослушиваться до окончания передачи целого файла.

Первоначально структура потоковой передачи данных состояла из последовательности модулей обработки данных (например, фильтров захвата, преобразующих фильтров и фильтров информационного представления (визуализации)) с очень небольшими интеллектуальными возможностями программы управления последовательностью. Модули обработки данных, также называемые фильтрами, принимают решения по тому, как получить соединение, какие форматы данных использовать и как управлять друг другом. При соединении фильтров в последовательность протоколы определяют предварительно определенную фиксированную последовательность потока данных и управляют согласованиями соединения. Обычная последовательность согласований предназначена для согласования следующих элементов: интерфейса, носителя информации, формата данных, программ распределения и задающего генератора. Последовательность обработки данных обеспечивает комплексное решение внутри компьютерной системы.

С усложнением потоковой обработки данных индустрия признала необходимость оптимизации последовательностей обработки, которые представляли собой обработку данных с ограничениями, накладываемыми интерактивностью, например последовательностей обработки видео и аудио. Одним решением является средство DirectShow® фирмы Microsoft®Corporation, обеспечивающее воспроизведение мультимедийных потоков из локальных файлов или с серверов Интернета, захват мультимедийных потоков с устройств и преобразование формата мультимедийных потоков. DirectShow® обеспечивает возможность воспроизведения видео- и аудиосодержимого таких типов файлов, как: Windows Media Audio, Windows Media Video, MPEG, Apple®QuickTime®, Audio-Video Interleaved (AVI) и WAV (Windows Wave). DirectShow® включает в себя систему сменных подключаемых компонентов фильтров. Фильтры являются объектами, поддерживающими интерфейсы DirectShow®, которые могут оперировать потоками данных посредством считывания, копирования, изменения и записи данных в файл. Основные типы фильтров включают в себя входной фильтр, который берет данные из некоторого источника, например из файла на диске, спутниковой антенны, с сервера Интернет или кассетного видеомагнитофона VCR, и передает их на вход фильтрующей схемы, которая является соединением фильтров. Фильтры в фильтрующей схеме содержат преобразующий фильтр, который осуществляет преобразование формата данных, синхронизирующий и входной фильтр, который принимает данные и передает их; и фильтр визуализации, который формирует изображение данных, например формирует изображение данных на устройстве отображения. Данные могут быть также визуализированы в любом местоположении, которое принимает мультимедиа. Другие типы фильтров, включенных в DirectShow®, включают в себя целевые фильтры, которые добавляют эффекты, не изменяя тип данных, и фильтры синтаксического анализатора, которые "понимают" формат исходных данных и умеют считывать правильные байты, создают временные ярлыки и выполняют поиск.

Во время работы все данные проходят от фильтра к фильтру совместно с большим количеством информации управления. Каждый фильтр содержит объекты, называемые "выводами (пинами)", которые используются для соединения с другими фильтрами. Когда фильтры соединены, с использованием выводов, образуется фильтрующая схема. Следует отметить, что имеется различие между "фильтрующей схемой", которая является понятием, обозначающим группу соединенных фильтров, и "Фильтрующей Схемой", являющейся объектом, который пользователь создает в DirectShow®, управляющим группой соединенных фильтров, "фильтрующей схемой". "Фильтрующую Схему" более правильно называть администратором фильтрующей схемы. Для управления потоком данных и соединениями в фильтрующей схеме DirectShow® содержит управляющую программу (администратор) фильтрующей схемы. Администратор фильтрующей схемы способствует обеспечению соединения фильтров в соответствующем порядке. Однако данные и большая часть управления не проходят через администратор фильтрующей схемы. Фильтры должны быть связаны соответствующим образом. Например, администратор фильтрующей схемы должен отыскать конфигурацию (структуру) визуализации, определить типы доступных фильтров, связать фильтры в соответствующем для данного типа данных порядке и обеспечить соответствующий фильтр визуализации.

Хотя фильтры обеспечивали возможность многократного использования программ, использование фильтров также создавало некоторые непредвиденные проблемы. Одной из проблем, создаваемой фильтрами, является большое количество программных интерфейсов приложений (API) для созданных фильтров. Каждый фильтр, по существу, имеет отдельный API. В результате данный фильтр должен допускать возможность сопряжения с API для каждого фильтра, к которому он может быть присоединен. Также использование фильтров создает проблему при отключении заданного фильтра. При отключении заданного фильтра в графе любой фильтр, осуществлявший сопряжение с отключенным фильтром, требует другой соответствующий интерфейс. В основном, затруднительно запрограммировать фильтр для корректной обработки потери сопряжения, так как состояние фильтра при потере сопряжения может быть неизвестно. Следовательно, потеря сопряжения имеет тенденцию приводить к непредсказуемому режиму в фильтрах и, в конечном счете, к некорректному выполнению программ. Дополнительно, общее управление в DirectShow® распределено между двумя блоками. Интерфейс между фильтрами управляет потоком данных, в то время как администратор фильтра управляет реализацией и удалением фильтров. Такое распределение управления делает громоздким проектирование программного обеспечения, так как неизбежно имеются некоторые функции управления, которые "пересекают" границу между блоками. Другая проблема с DirectShow® состоит в том, что фильтры берут на себя ответственность за согласование формата мультимедиа и за функциональные возможности организации буферизации данных. Для выполнения этой задачи фильтры взаимодействуют с другими фильтрами. Зависимость от фильтров приводит к восприимчивости приложений, построенных на DirectShow®, к ошибкам и недостаткам, которые могли быть запрограммированы в фильтре. Следовательно, плохо написанный фильтр может легко снизить эффективность фильтрующей схемы и приложения, связанного с фильтрующей схемой.

Имеется потребность в усовершенствовании архитектуры DirectShow®. Более конкретно, имеется потребность в усовершенствовании управления обработкой мультимедийных данных.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Изобретение включает в себя набор интерфейсов, структур данных и событий для представления демультиплексора (устройства распределения) мультимедийных данных. Структура данных использует ряд полей, каждое из которых содержит элемент команды. В одном варианте осуществления для правильного функционирования демультиплексора формируется по меньшей мере семь команд, включающих команды Initialize (инициализировать), SetPresentationDescriptor (установить дескриптор представления), GetPresentationDescriptor (извлечь дескриптор представления), GetPendingPresentationDescriptor (извлечьдескриптор представления, ждущего обработки), ProcessInput (обработать ввод), ProcessOutput (обработать вывод) и Flush (сбросить). Интерфейсы в совокупности известны как Интерфейс Программирования Приложения Демультиплексора (Demux API). Demux API обеспечивает возможность потребителю единообразно использовать данные мультиплексированного потока, такие как цифровые (DV)видеоданные, для формирования данных элементарного потока, например аудио и видео (сжатого или несжатого).

Способ Initialize используется для инициализации и конфигурирования объекта демультиплексора и имеет параметры, которые используются для конфигурирования демультиплексора. Параметры включают объект дескриптора мультиплексированного потока, который описывает мультиплексированный поток, выбранный тип среды для дескриптора мультиплексированного потока, массив основных типов элементарных потоков, в которых заинтересован пользователь при извлечении их в качестве выходных данных из демультиплексора, и количество основных типов в массиве основных типов.

Метод SetPresentationDescriptor используется для динамической установки дескриптора активного представления об объекте демультиплексора. Метод SetPresentationDescriptor содержит указатель на объект дескриптора представления. Метод ProcessInput используется для обеспечения нового входного мультиплексированного потока для объекта демультиплексора и содержит указатель на объект выборки. Метод ProcessInput имеет возвращаемое значение, которое имеет флажок нового представления. Если флажок нового представления имеет значение TRUE (истина), то в мультиплексированной выборке представление изменилось на основе дескриптора представления. Пользователь должен вызвать метод GetPendingPresentationDescriptor для извлечения следующего представления, ждущего обработки, выбора требуемых потоков и вызвать метод SetPresentationDescriptor, чтобы обеспечить возможность обработки выборок из входной очереди демультиплексора.

Метод ProcessOutput используется для извлечения по меньшей мере одного элементарного потока из активного представления. Метод ProcessOutput содержит идентификатор потока и указатель на указатель на объект выборки. Метод ProcessOutput дополнительно содержит выходное возвращаемое значение. Выходное возвращаемое значение содержит код ошибки конца потока и код ошибки отсутствия следующих данных.

Метод Flush используется для сброса входных и выходных выборок, находящихся в очереди в текущий момент времени. Для метода Flush параметры не требуются.

Метод GetPresentationDescriptor используется для извлечения клона (абсолютной копии) дескриптора текущего активного представления об объекте демультиплексора. Метод GetPresentationDescriptor содержит дескриптор представления.

Метод GetPendingPresentationDescriptor используется для извлечения следующего представления, ждущего обработки. Метод GetPendingPresentationDescriptor содержит ждущий обработки дескриптор представления.

Дополнительные возможности и преимущества изобретения будут ясны из последующего подробного описания поясняющих вариантов осуществления, рассматриваемого совместно с приложенными чертежами.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Хотя в приложенной формуле изобретения обстоятельно изложены признаки настоящего изобретения, изобретение, его задачи и преимущества могут стать более понятны из последующего подробного описания, рассматриваемого совместно с приложенными чертежами.

Фиг. 1 - структурная схема, в общем иллюстрирующая возможную компьютерную систему, в которой реализуется настоящее изобретение.

Фиг. 2 - структурная схема, по существу, иллюстрирующая возможную компьютерную среду, в которой функционирует настоящее изобретение.

Фиг. 3 - структурная схема, иллюстрирующая демультиплексор, согласно раскрытию настоящего изобретения.

Фиг. 4 - диаграмма переходов демультиплексора, предусмотренного настоящим изобретением.

Фиг. 5 - диаграмма структуры данных, иллюстрирующая модель структуры данных, обеспечивающей конструирование вызовов, согласно настоящему изобретению.

Фиг. 6 - упрощенная диаграмма структуры данных, иллюстрирующая структуру возможного сообщения, согласно настоящему изобретению.

Фиг. 7 - блок-схема, иллюстрирующая этапы, выполняемые для загрузки и функционирования демультиплексора, согласно способам настоящего изобретения, когда приложение не согласует приемник мультимедиа.

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНОГО ВАРИАНТА ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯ

Изобретение обеспечивает набор интерфейсов, структур данных и событий для представления демультиплексора мультимедийных данных, которые в совокупности называются API демультиплексора. API обеспечивает потребителю возможность единообразно использовать данные мультиплексированного потока, например DV, MPEG2, ASF и т.д., для формирования данных элементарного потока, например аудио и видео (сжатого или несжатого). API демультиплексора поддерживает динамическое формирование дескрипторов нового потока на основе данных инициализации мультиплексированного потока и поддерживает динамическое формирование дескрипторов нового потока на основе выборок мультиплексированного потока. Дополнительно API демультиплексора поддерживает внешнюю инициализацию посредством метаданных о мультиплексированном потоке и внутреннюю инициализацию посредством выборок мультиплексированного потока и поддерживает формирование демультиплексированных выборок, которые могут занимать несколько буферов. В контексте архитектуры Базовых концепций Мультимедиа Media Foundation Microsoft®Corporation API демультиплексора прежде всего управляется процессором мультимедиа, на который выводит данные, как описано ниже. API демультиплексора разработан так, чтобы хорошо определить использование демультиплексора для любой мультимедийной архитектуры.

Согласно чертежам, в которых подобное ссылочные позиции относятся к подобным элементам, иллюстрируется изобретение, реализованное в соответствующей вычислительной среде. Хотя в этом нет необходимости, изобретение будет описано в основном контексте компьютерно-выполнимых команд, например программных модулей, выполняемых персональным компьютером. По существу, программные модули содержат подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют определенные типы абстрактных данных. Кроме того, для специалистов в данной области техники очевидно, что изобретение может быть практически осуществлено с другими конфигурациями вычислительной системы, включая переносные устройства, многопроцессорные системы, программируемую, или основанную на микропроцессорах, бытовую электронику, сетевые персональные компьютеры PC, миникомпьютеры, универсальные вычислительные машины и т.д. Изобретение может быть практически осуществлено также в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки данных, связанными посредством системы связи. В распределенной вычислительной среде программные модули могут быть размещены в локальных и в удаленных запоминающих устройствах.

Фиг. 1 иллюстрирует возможный вариант соответствующей среды 100 вычислительной системы, в которой может быть реализовано изобретение. Среда 100 вычислительной системы является только одним возможным вариантом соответствующей вычислительной среды и не предназначена для наложения какого-либо ограничения на область использования или функциональные возможности изобретения. Также вычислительная среда 100 не должна интерпретироваться требующей или зависимой от какого-либо компонента, иллюстрируемого возможной средой 100, или их комбинации.

Изобретение может функционировать совместно со многими другими универсальными или специализированными средами или конфигурациями вычислительной системы. Возможные варианты известных вычислительных систем, сред и/или конфигураций, которые могут соответствовать для использования с изобретением, включают в себя: персональные компьютеры, серверные компьютеры, переносные или портативные устройства, планшетные устройства, многопроцессорные системы, системы, основанные на микропроцессорах, компьютерные приставки к телевизору, программируемую бытовую электронику, сетевые PC, миникомпьютеры, универсальные вычислительные машины, распределенные вычислительные среды, содержащие любые из вышеупомянутых систем или устройств, и т.д.

Изобретение может быть описано в основном контексте компьютерно-выполнимых команд, например программных модулей, выполняемых персональным компьютером. По существу, программные модули содержат подпрограммы, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют определенные типы абстрактных данных. Изобретение может быть осуществлено практически также в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки данных, связанными посредством системы связи. В распределенной вычислительной среде программные модули могут быть размещены в запоминающей среде локального и/или удаленного компьютера, включая запоминающие устройства.

Согласно фиг. 1 возможная система для реализации изобретения содержит универсальное вычислительное устройство в виде компьютера 110. Компоненты компьютера 110 могут содержать процессор 120, системную память 130 и системную шину 121, соединяющую различные компоненты системы, в том числе системную память с процессором 120, при этом компоненты не ограничиваются ими. Системная шина 121 может быть любого из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из многих архитектур шины. В качестве возможного варианта такие архитектуры включают шину архитектуры, соответствующей промышленному стандарту (ISA), шину микроканальной архитектуры (MCA), шину расширенной стандартной архитектуры для промышленного применения (EISA), локальную шину Ассоциации по стандартам в области видеоэлектроники (VESA) и 32-разрядную системную шину с возможностью расширения до 64 разрядов, взаимодействие через которую происходит без участия центрального процессора (PCI), также известную как шину Mezzanine, и т.д.

Компьютер 110 обычно содержит несколько носителей информации, считываемых компьютером. Носитель информации, считываемый компьютером, может быть любым доступным носителем информации, к которому может осуществить доступ компьютер 110, и включает в себя энергозависимый и энергонезависимый, съемный и несъемный носитель информации. В качестве возможного варианта носитель информации, считываемый компьютером, может включать в себя запоминающую среду компьютера, средство связи и т.д. Запоминающая среда компьютера включает в себя энергозависимую и энергонезависимую, съемную и несъемную среду, реализованную любым способом или технологией для хранения информации, такими как команды, считываемые компьютером, структуры данных, программные модули или другие данные. Запоминающая среда компьютера включает в себя оперативное запоминающее устройство RAM (ОЗУ), постоянное запоминающее устройство ROM (ПЗУ), EEPROM (СППЗУ), флэш-память или другую технологию памяти, компакт-диск CD-ROM, универсальные цифровые диски DVD (УЦД) или другой оптический накопитель на дисках, магнитные кассеты, магнитную ленту, магнитный накопитель на дисках или другие магнитные запоминающие устройства и т.д. или любую другую среду, которая может использоваться для хранения необходимой информации и к которой может осуществить доступ компьютер 110. Средство связи обычно воплощает команды, считываемые компьютером, структуры данных, программные модули или другие данные в модулированном сигнале данных, например несущей или другом механизме переноса информации, и включает любое средство передачи информации. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или большее количество из набора его характеристик, измененных таким образом, чтобы кодировать информацию в сигнале. В качестве возможного варианта средство связи включает проводное средство, такое как проводная сеть или прямое кабельное соединение, и беспроводное средство, такое как акустическое, радио, инфракрасное и другое беспроводное средство и т.д. Комбинации любых упомянутых выше средств также должны быть включены в контекст носителей информации, считываемых компьютером.

Системная память 130 включает в себя запоминающую среду компьютера в виде энергозависимой и/или энергонезависимой памяти, например ПЗУ 131 и ОЗУ 132. Базовая система 133 ввода/вывода BIOS (БИОС), содержащая базовые процедуры, способствующие передаче информации между элементами внутри компьютера 110, такие как используются при запуске, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, к которым можно осуществить доступ немедленно, и/или с которыми в текущее время оперирует процессор 120. В качестве возможного варианта фиг. 1 изображает операционную систему 134, прикладные программы 135, другие программные модули 136 и данные 137 программы.

Компьютер 110 также может содержать другие съемные/несъемные, энергозависимые/энергонезависимые варианты запоминающей среды компьютера. Исключительно в качестве возможного варианта фиг. 1 изображает накопитель 141 на жестких дисках, осуществляющий считывание с несъемного, энергонезависимого магнитного носителя информации и запись на него, накопитель 151 на магнитных дисках, который осуществляет считывание с съемного энергонезависимого магнитного диска 152 и запись на него, и накопитель 155 на оптических дисках, который осуществляет считывание с съемного энергонезависимого оптического диска 156, например, компакт-диска CD-ROM или другого оптического носителя информации, и запись на него. Другие съемные/несъемные, энергозависимые/энергонезависимые варианты запоминающей среды компьютера, которые могут быть использованы в возможной операционной среде, включают в себя кассеты на магнитной ленте, карточки флэш-памяти, универсальные цифровые диски, ленту для цифрового видеомагнитофона, твердотельное ОЗУ, твердотельное ПЗУ и т.д. Накопитель 141 на жестких дисках обычно подсоединен к системной шине 121 посредством интерфейса несъемной памяти, например интерфейса 140, а накопитель 151 на магнитных дисках и накопитель 155 на оптических дисках обычно подсоединен к системной шине 121 посредством интерфейса съемной памяти, например интерфейса 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 периферийных устройств вывода, и т.д.

Компьютер 110 может функционировать в среде с сетевой структурой с использованием логических соединений с одним или большим количеством удаленных компьютеров, например удаленным компьютером 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым PC, одноранговым устройством или другим узлом общей сети и обычно содержит многие или все элементы, описанные выше в отношении компьютера 110, хотя фиг. 1 изображает только запоминающее устройство 181. Указанные логические соединения, изображенные фиг.1, включают в себя локальную сеть связи (ЛС) 171 и глобальную сеть связи (ГС) 173, но могут также включать в себя другие сети связи. Такие варианты сетевой среды часто используются в офисах, корпоративных вычислительных сетях, сетях интранет (корпоративных локальных сетях повышенной надежности с ограниченным доступом) и в Интернет. Например, вычислительная система 110 может содержать машину-источник информации, из которой переносятся данные, а удаленный компьютер 180 может содержать машину-адресат. Следует, однако, отметить, что соединение машины-источника и машины-адресата посредством сети или любого другого средства не требуется, вместо этого данные могут переноситься через носитель информации, который может быть записан платформой источника и считан платформой или платформами адресата.

При использовании в сетевой среде ЛС компьютер 110 подсоединяется к ЛС 171 посредством сетевого интерфейса или адаптера 170. При использовании в сетевой среде ГС компьютер 110 обычно содержит модем 172 или другое средство для установления связи через ГС 173, например Интернет. Модем 172, который может быть внутренним или внешним, может быть подсоединен к системной шине 121 посредством пользовательского интерфейса 160 ввода или другого соответствующего механизма. В среде с сетевой структурой программные модули, описанные в отношении компьютера 110, или их части могут храниться в удаленном запоминающем устройстве. В качестве возможного варианта фиг. 1 изображает удаленные прикладные программы 185 как хранящиеся на запоминающем устройстве 181. Ясно, что показанные сетевые соединения являются возможными вариантами, и могут быть использованы другие средства установления линии связи между компьютерами.

В последующем описании изобретение будет описано в отношении действий и символических представлений операций, которые выполняются одним или большим количеством компьютеров, если не указано иначе. Также будет понятно, что такие операции и действия, которые иногда упоминаются как компьютерно-выполнимые, включают в себя осуществляемое процессором компьютера манипулирование электрическими сигналами, представляющими данные в структурном виде. Такое манипулирование преобразует данные или сохраняет их в местоположениях в системе памяти компьютера, что переконфигурирует или изменяет иным образом функционирование компьютера способом, известным специалистам в данной области техники. Структуры данных, где хранятся данные, являются физическими местоположениями памяти, имеющими определенные свойства, определяемые форматом данных. Однако, хотя изобретение описано в определенном выше контексте, не предполагается ограничение изобретения этим контекстом, поскольку для знающих технику очевидно, что разные операции и действия, описанные далее, могут быть реализованы также аппаратно.

Согласно фиг. 2 демультиплексор, предусмотренный настоящим изобретением, может функционировать в архитектуре Базовых концепций Мультимедиа Media Foundation, которая является реализацией одной из архитектур мультимедиа Microsoft. Хотя фиг. 2 изображает демультиплексор в архитектуре Media Foundation, очевидно, что API демультиплексора, предусмотренного изобретением, может использоваться в других архитектурах мультимедиа. До непосредственного описания демультиплексора необходимо описать Media Foundation. Media Foundation является архитектурой, представленной компонентами. Как изображено, Media Foundation содержит компоненты уровня 211 ядра, ответственные за некоторый базовый модуль функциональных возможностей в Media Foundation, и компоненты уровня 201 Управления, ответственные за выполнение более общих задач с использованием базовых компонентов Ядра.

Компоненты уровня 211 ядра включают в себя источники 210 мультимедиа и источники 214 потока, которые обеспечивают передачу мультимедийных данных через унифицированный хорошо определенный интерфейс. Источники 210 мультимедиа описывают представление, включая потоки, которые должны быть доступны. Существует много реализаций источников мультимедиа для обеспечения мультимедийных данных из различных типов мультимедийных файлов или устройств. Уровень 211 ядра дополнительно содержит модули преобразования, изображенные блоком 208, которые выполняют некоторого вида операции преобразования мультимедийных данных через унифицированный хорошо определенный интерфейс. Возможными вариантами преобразований являются кодеки, компоненты изменения размера видео, модули повторной выборки звука, статистические процессоры, модули повторной выборки цвета и т.д. Демультиплексор, предусмотренный настоящим изобретением, который в качестве входных данных берет перемеженные (чередующиеся) мультимедийные данные и разделяет данные в потоки мультимедийных данных, используемые индивидуально, является преобразованием в архитектуре фиг. 2. Блок 208 дополнительно включает в себя мультиплексоры, которые принимают индивидуальные потоки мультимедийных данных и объединяют их в перемеженные мультимедийные данные. Мультиплексоры совместно используют унифицированный хорошо определенный интерфейс, и существуют многие реализации для мультиплексирования в разные типы мультимедийных данных. Уровень 211 ядра дополнительно включает в себя приемники 212 (выходных данных) потока и приемники 230 (выходных данных) мультимедиа. Приемники 230 мультимедиа принимают на входе мультимедийные данные через унифицированный, хорошо определенный интерфейс. Существуют многие реализации приемников мультимедиа для выполнения различных функций с мультимедийными данными. Например, запись мультимедийных данных в заданный тип файла или отображение мультимедийных данных на мониторе с использованием видеоплаты.

Компоненты уровня 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 базовых концепций мультимедиа обеспечивает интерфейсы и схему распределения для соединения объектов мультимедиа потоковой обработки данных. Система обеспечивает пользователю возможность конкретизировать соединения между унифицированными или специализированными источниками, преобразованиями и объектами приемника посредством символической абстракции, используя понятие топологии.

Согласно фиг. 3 ниже приведено краткое описание демультиплексора 300. В последующем описании будут использованы ссылки на команды. Эти команды описаны ниже. API демультиплексора разделяет формат данных из источника данных. API демультиплексора принимает мультиплексированные данные как буфер данных в оперативной памяти, и выполняет операцию демультиплексирования. Это дает требуемый результат, состоящий в том, что много разных источников данных могут использовать одну реализацию демультиплексора для выполнения указанной операции. Например, DV данные могут поступать непосредственно из DV камеры, но также могут храниться в виде файла на жестком диске. В этом случае существует два фрагмента кода для формирования мультиплексированных DV данных (например, один, который осуществляет согласование с камерой, другой, который осуществляет согласование с файловой системой), но может быть использована одна и та же реализация демультиплексора. Демультиплексор 300 поддерживает интерфейс IMFDemultiplexer и ответственен за разбиение мультиплексированного потока на части элементарных потоков. Демультиплексор 300 функционирует в синхронном режиме (подобном DMO) и может обрабатывать динамические изменения в доступных элементарных потоках, вызванные изменениями в мультиплексированном потоке. Он согласуети формирует выборки, которые передаются через интерфейс IMFsample, и размещает сформированные выборки, охватывающие несколько буферов.

Мультиплексированный поток 302 является единым потоком, содержащим более одного элементарного потока. Элементарный поток 304, 306 является потоком подобных элементов (например, аудио, видео и т.д.). Нет необходимости во взаимно однозначном соответствии между мультиплексированными выборками (М) 308 и элементарными выборками (Э) 310, 312. Например, может существовать, а может и не существовать полная элементарная выборка для каждого элементарного потока в каждой мультиплексированной выборке. Дополнительно, также не существует конкретного требования на то, чтобы элементарные выборки были расположены в правильном порядке в мультиплексированном потоке. Элементарные выборки, выходящие из потока, могут не использовать совместно одина