ИНТЕРФЕЙСЫ ДЛЯ ОБРАБОТКИ ЦИФРОВЫХ МУЛЬТИМЕДИЙНЫХ ДАННЫХ
INTERFACES FOR PROCESSING DIGITAL MULTIMEDIA DATA

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Цифровые мультимедийные презентации состоят из последовательных наборов мультимедийного содержимого, такого как видеозаписи, аудиозаписи, изображения, текст и/или графики. Подобные последовательные наборы мультимедийного содержимого, при воспроизведении и/или представлении пользователям проигрывателями мультимедийного содержимого, называются потоками мультимедийного содержимого. Некоторые проигрыватели мультимедийного содержимого выполнены с возможностью одновременного воспроизведения и представления более чем одного независимо управляемого потока мультимедийного содержимого (например, основного фильма с дополнительными элементами, такими как комментарии режиссера, биография актера или реклама). Подобные проигрыватели мультимедийного содержимого также можно выполнить с возможностью одновременного воспроизведения и представления видимых или слышимых объектов, выбираемых пользователем (например, различных меню, игр, специальных эффектов или других возможностей), вместе с одним или несколькими потоками мультимедийного содержимого.
Устройство любого типа в виде программного, аппаратного, аппаратно-программного обеспечения или любого их сочетания может являться проигрывателем мультимедийного содержимого. Такие устройства, как проигрыватели оптических носителей (например, проигрыватели DVD), компьютеры и другие электронные устройства, предоставляющие доступ к значительным объемам относительно недорогих, переносных или доступных другим способом хранилищ данных, занимают особенно выгодное положение для соответствия требованиям потребителя для цифровых мультимедийных презентаций, имеющих значительное время проигрывания.
Для различных организаций является обычным поставлять различные программные и аппаратные компоненты проигрывателей мультимедийного содержимого, и от подобных компонентов ожидается успешное взаимодействие в окружениях, имеющих ограниченные ресурсы обработки и хранения. Поэтому желательно предоставить технологию для обеспечения ресурсно-эффективного, относительно безошибочного проигрывания цифровых мультимедийных презентаций, включающую в себя точную синхронизацию одновременно воспроизводимых потоков мультимедийного содержимого, на всех видах и архитектурах проигрывателей мультимедийного содержимого.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Технологии и интерфейсы (такие как прикладные программные интерфейсы ("API")) обработки цифровых мультимедийных данных, описанные в настоящем документе, повышают эффективное, согласованное взаимодействие между аппаратными и программными компонентами в конвейере обработки мультимедийных данных, связанном с проигрывателем мультимедийного содержимого.
Обычно конвейер обработки мультимедийных данных отвечает за прием наборов мультимедийного содержимого от мультимедийных источников, таких как оптические диски, жесткие диски, объекты сетей передачи данных и другие возможные источники, и выполнение задач по обработке для подготовки наборов мультимедийного содержимого для представления пользователю в виде одного или нескольких потоков цифровой мультимедийной презентации, такой как видеофильм, телевизионная программа, аудиопрограмма или другая презентация. Наборы мультимедийных данных называются "клипами", причем один клип обычно принимают от одного источника мультимедиа. Отдельные участки клипов, прочитанные с конкретного мультимедийного источника, в настоящем документе называются элементами мультимедийного содержимого, каковые обычно демультиплексируют, распаковывают, декодируют и расшифровывают. После демультипликации подобные элементы мультимедийного содержимого в настоящем документе называют мультимедийными пробами. Однако следует понимать, что соглашение(я) о наименовании(ях), используемое в настоящем документе, используется только в целях иллюстрации и что можно использовать любые желаемые соглашения о наименованиях.
Конвейер обработки мультимедийных данных включает в себя такие компоненты, как устройства чтения мультимедийных источников, демультиплексоры, декодеры, дешифраторы и тому подобное, которые реализованы в программном или аппаратном обеспечении или их сочетании. Интегрированные среды, такие как Microsoft DirectShow™, можно использовать для реализации конвейера обработки мультимедийных данных. Однако желательно, чтобы любая известная или позже разработанная интегрированная среда могла бы использоваться для реализации конвейера обработки мультимедийных данных.
На границах между программными компонентами и аппаратными компонентами в конвейере обработки мультимедийных данных происходит обмен информацией (например, информацией о самом мультимедийном содержимом и/или отображении мультимедийного содержимого пользователю). По одному сценарию обмена информацией информация в памяти (данный термин запоминающего устройства может охватывать любой вид машиночитаемого носителя данных), используемая программным компонентом, может использоваться аппаратным компонентом. По другому сценарию обмена информацией аппаратный компонент изменяет свою работу на основании информации, установленной программным компонентом, или наоборот.
Одна примерная технология и интерфейс, описанные в настоящем документе - называемые с целью описания как интерфейс "PhysMemDataStructure", выполнены с возможностью работать на границе между программным компонентом и аппаратным компонентом конвейера обработки мультимедийных данных, облегчая аппаратному компоненту прямой доступ к информации из запоминающего устройства, используемой программным компонентом, вместо использования команд/циклов процессора для копирования данной информации. Данный интерфейс PhysMemDataStructure раскрывает аппаратному компоненту одно или несколько полей в структурах данных, связанных с элементами мультимедийного содержимого (обрабатываемым данным программным компонентом), хранящихся в запоминающем устройстве, используемом программным компонентом. Данные поля структур данных хранят информацию о физических характеристиках запоминающего устройства, в которой расположены отдельные элементы мультимедийного содержимого. Примеры подобных физических характеристик включают в себя, но не ограничиваются этим, вид запоминающего устройства, размер блока памяти, адреса указателей чтения/записи в ячейках запоминающего устройства и смещение адресов элементов мультимедийного содержимого относительно подобных указателей памяти. Для дополнительного увеличения эффективного использования ресурсов запоминающего устройства программный компонент может сохранять элементы мультимедийного содержимого в кольцевом буфере. Для достижения еще большей эффективности запоминающего устройства и обработки, для дублирования начального участка данного кольцевого буфера в конечный участок физической памяти кольцевого буфера можно использовать виртуальную память.
Другие примерные технологии и интерфейсы, описанные в настоящем документе - называемые с целью описания как интерфейсы "SyncHelper", - выполнены с возможностью облегчать обмен информацией между аппаратными компонентами и программными компонентами, что можно использовать для регулировки синхронизации (для поддержания воспринимаемой синхронизации между двумя потоками мультимедийного содержимого, например) или других эксплуатационных аспектов аппаратных или программных компонентов. Один интерфейс SyncHelper, описанный в настоящем документе - называемый интерфейсом "GetDecodeTimes", - предоставляет информацию об отдельном элементе мультимедийных данных или мультимедийной пробе, визуализируемой аппаратным компонентом (таким как демультиплексор, декодер или рендерер) в отдельный момент времени. Предоставленная информация включает в себя значение прошедшей продолжительности проигрывания цифровой мультимедийной презентации в отдельный момент времени, а также значение прошедшей продолжительности проигрывания клипа, из которого была получена данная мультимедийная проба. Другой интерфейс SyncHelper - называемый интерфейсом "SyncToSTC" - облегчает синхронизацию различных одновременно представляемых потоков мультимедийного содержимого. По примерному сценарию интерфейс SyncToSTC устанавливает (то есть или запрашивает/принимает или вычисляет) различие между двумя значениями прошедшей продолжительности проигрывания цифровой мультимедийной презентации, возвращенными интерфейсом GetDecodeTimes, и на основании установленной разницы предписывает одному или нескольким аппаратным компонентам отрегулировать синхронизацию (например, отрегулировать частоту синхронизирующего сигнала или отрегулировать, какая мультимедийная проба будет декодирована, или и то и другое).
Данная сущность изобретения предоставлена для ознакомления с подбором понятий в упрощенной форме. Данные понятия дополнительно описаны в секции подробного описания. Возможны элементы или этапы, отличные от тех, что описаны в данной сущности изобретения, и ни один элемент или этап не является непременно обязательным. Данная сущность изобретения не предназначена для идентификации ключевых признаков или необходимых признаков формулы изобретения, а также не предназначена для использования в качестве помощи в определении объема формулы изобретения. Формула изобретения не ограничивается реализациями, которые устраняют один или все недостатки, отмеченные в любой из частей этого документа.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
На Фиг. 1 показана упрощенная функциональная блок-схема примерного проигрывателя мультимедийного содержимого.
На Фиг. 2 схематически, более детально, показан примерный временной график(и) мультимедийных данных по Фиг. 1.
На Фиг. 3. показана упрощенная функциональная блок-схема, более подробно иллюстрирующая аспекты блока менеджера мультимедийного содержимого на Фиг. 1.
На Фиг. 4 показана упрощенная функциональная блок-схема, иллюстрирующая примерную архитектуру для аспектов конвейера обработки мультимедийных данных, показанных на Фиг. 3.
На Фиг. 5 показана блок-схема последовательности операций способа для подготовки мультимедийного содержимого для презентации, используя аспекты проигрывателя мультимедийного содержимого, показанного на Фиг. 1, конвейера обработки мультимедийных данных, показанных на Фиг. 3, и/или архитектуры, показанной на Фиг. 4.
На Фиг. 6 показана блок-схема последовательности операций способа для подготовки участков двух клипов мультимедийного содержимого для синхронизации презентации, используя аспекты проигрывателя мультимедийного содержимого, показанного на Фиг. 1, конвейера(ов) обработки мультимедийных данных, показанных на Фиг. 3, и/или архитектуры, показанной на Фиг. 4.
На Фиг. 7 показана упрощенная блок-схема примерной конфигурации вычислительной среды, в которой можно реализовать или использовать все или часть проигрывателя мультимедийного содержимого, показанного на Фиг. 1, или способов, показанных на Фиг. 5 и 6.
На Фиг. 8 показана упрощенная блок-схема архитектуры клиент-сервер, в которой можно реализовать или использовать аспекты вычислительной среды, показанной на Фиг. 7.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Предсказуемое и относительно безошибочное воспроизведение цифровых мультимедийных презентаций часто зависит от эффективного использования ограниченных вычислительных ресурсов проигрывателя мультимедийного содержимого, особенно ресурсов запоминающего устройства и процессора.
Сбои и неэффективности могут возникать в различных ситуациях, особенно когда информация передается между аппаратными компонентами и программными компонентами, работающими в конвейере обработки мультимедийных данных. По одному сценарию неэффективности могут возникать, когда информация передается между запоминающим устройством, используемым программным компонентом и запоминающим устройством, используемым аппаратным компонентом - является желательным для минимизации обрабатывающих ресурсов и/или ресурсов памяти, используемых в операциях доступа к памяти. По другому сценарию сбои в проигрывании потоков мультимедийного содержимого и/или воспринимаемые пользователем потери синхронизации могут случаться, когда несколько потоков мультимедийного содержимого готовятся различными аппаратными компонентами для одновременного представления пользователю, а соответствующая информация для гарантирования действующей синхронизации не доступна данным аппаратным компонентам - является желательным предоставление информации аппаратным компонентам для использования в регулировании согласования по времени для выполнения некоторых обрабатывающих задач.
В настоящем документе описаны различные технологии и прикладные программные интерфейсы ("API"), выполняющиеся на границе между программным компонентом и аппаратным компонентом, чтобы раскрывать информацию, пригодную к использованию аппаратным компонентом, для увеличения эффективности, точности и совместимости компонентов, работающих в конвейере обработки мультимедийных данных проигрывателя мультимедийного содержимого.
Обращаясь теперь к чертежам, на которых одинаковые числа обозначают одинаковые компоненты, на Фиг. 1 показана упрощенная функциональная блок-схема примерного проигрывателя 100 мультимедийного содержимого (называемого в дальнейшем "Системой 100 Презентации"), воспроизводящего мультимедийное содержимое. Мультимедийное содержимое состоит из последовательностей (обычно упорядоченных по времени) видеоданных, аудиоданных, изображений, текста и/или графиков. Система Представления может являться любой системой, которая воспроизводит мультимедийное содержимое, включая в себя, но не ограничиваясь, проигрыватели оптических носителей, вычислительные устройства или их операционные системы, аудиопроигрыватели, телеприставки, телекоммуникационные устройства, персональные цифровые помощники, устройства захвата видео или изображений и тому подобное. Для целей настоящего описания предполагается, что Система Презентации является интерактивной мультимедийной системой представления, используемой для проигрывания мультимедийного содержимого, такого как фильмы или другие виды презентаций, одновременно с видимыми или слышимыми интерактивными объектами (например, меню, играми, специальными эффектами и другими возможностями), выбираемыми пользователем.
Как показано, Система 100 презентации включает в себя менеджер 102 мультимедийного содержимого, менеджер 104 интерактивного содержимого ("IC"), менеджер 106 представления, блок 108 управления синхронизирующим сигналом и микшер/рендерер 110. В общем, проектные решения определяют, как реализуются заданные функции Системы 100 представления. Подобные функции можно реализовать, используя программное, аппаратное, программно-аппаратное обеспечение или их сочетания.
При работе Система 100 презентации контролируется интерактивным содержимым мультимедийной презентации ("Содержимым 120 Презентации"). Содержимое 120 Презентации включает в себя компонент 122 мультимедийного содержания ("мультимедийный компонент") и компонент 124 интерактивного содержимого (компонент "IC"). Мультимедийный компонент 122 и компонент 124 IC обычно, но не обязательно контролируются раздельными потоками, менеджером 102 мультимедийного содержимого и менеджером 104 IC соответственно.
Система 100 Презентации облегчает представление Содержимого 120 Презентации пользователю (не показано) в виде проигрываемой презентации 127. Проигрываемая презентация 127 представляет собой видимую и/или слышимую информацию, относящуюся к Содержимому 120 Презентации, произведенную микшером/рендерером 110 и принимаемую пользователем через такие устройства, как экран и колонки. С целью рассмотрения допустим, что Содержимое 120 Презентации и проигрываемая презентация 127 представляют собой аспекты содержимого фильма на DVD высокого разрешения, в любом формате. Однако следует принять во внимание, что Содержимое 120 Презентации и Проигрываемую презентацию 127 можно выполнить с возможностью представления любого вида презентаций мультимедийного содержимого, известных в настоящее время или разработанных позже.
Мультимедийный компонент 122 представляет собой одну или несколько последовательностей (обычно упорядоченных во времени) видеоданных, аудиоданных, изображений, текста и/или графиков, представляемых пользователям в виде потоков мультимедийного содержимого (потоки 208 и 228 мультимедийного содержимого, показанные и описанные дополнительно ниже, применительно к Фиг. 2) в составе проигрываемой презентации 127. Одновременно можно представить более чем один независимо-управляемый поток мультимедийного содержимого (например, основной фильм вместе с такими материалами, как комментарии режиссера, биографии актеров или реклама).
Фильм обычно имеет одну или несколько версий (например, версию для взрослых зрителей и версию для младших зрителей); один или несколько разделов 131 с одним или несколькими подразделами (не показано), относящимися к каждому разделу (разделы дополнительно описаны ниже, применительно к менеджеру 106 представления); одну или несколько звуковых дорожек (например, фильм можно проигрывать на одном или нескольких языках, с субтитрами или без них); и дополнительные признаки, такие как комментарии режиссера, дополнительные фрагменты, биографии актеров, реклама, анонсы и тому подобное.
Следует учитывать, что разграничение между разделами и подразделами является чисто логическим разграничением. Например, мультимедийный сегмент, кажущийся единым, может быть частью одного раздела/подраздела или может состоять из нескольких разделов/подразделов. Определение применимых логических разграничений зависит от источника разработки содержимого.
Наборы последовательностей видеоданных, аудиоданных, изображений, текста, и/или графиков, которые составляют аспекты мультимедийного компонента 122, обычно называют клипами 123 (клипы 123 показаны в составе мультимедийного компонента 122 и списка 128 воспроизведения, а также упоминаются на Фиг. 2 и описаны ниже). Однако следует учитывать, что наборы последовательностей данных, составляющих мультимедийный компонент 122, можно группировать и/или упоминать любым желательным способом и актуальные данные можно расположить и представить посредством любых желательных элементов, например битов, кадров, проб, пакетов данных, групп изображений, элементов улучшенных видеообъектов и так далее. Цифровое содержимое отдельных элементов данных (а также размер элементов данных) может основываться на различных факторах, таких как характеристики содержимого видео, аудио или данных, содержащегося в данном элементе, или одном или нескольких параметрах, относящихся к источнику содержимого, из которого извлечена данная проба (например, идентификация мультимедийного источника и/или местоположение, параметры или настройки кодирования/декодирования). Мультимедийные источники дополнительно описаны ниже, в отношении Фиг. 2.
Мультимедийные данные 132 являются данными, относящимися к мультимедийному компоненту 122, которые были подготовлены для визуализации менеджером 102 мультимедийного содержимого и отправлены микшеру/рендереру 110. Мультимедийные данные 132 обычно включают в себя, для каждого активного клипа 123, визуализацию участка данного клипа.
Обращаясь снова к Содержимому 120 Презентации, компонент 124 IC включает в себя интерактивные объекты 125, которые являются выбираемыми пользователем видимыми или слышимыми объектами, не обязательно представляемыми одновременно с мультимедийным компонентом 122, вместе с любыми командами (показанными как приложения 155) для представления видимых или слышимых объектов. Примеры интерактивных объектов включают в себя, среди прочих вещей, видеопробы или клипы, аудиопробы или клипы, изображения, графики, текст или их сочетание.
Приложения 155 предоставляют механизм, посредством которого Система 100 Презентации представляет интерактивные объекты 125 пользователю. Приложения 155 представляют собой любой способ обработки сигнала или сохраненную команду(ы), управляющие в электронном виде заранее заданными операциями над данными.
Менеджер 104 IC включает в себя одну или несколько команд, контролирующих механизмы 181 обработки, которые принимают, интерпретируют и организуют исполнение команд, относящихся к приложениям 155. По ходу движения исполнения приложений 155 принимается пользовательский ввод 150, могущий вызывать поведение в проигрываемой презентации 127. Исполнение некоторых команд приложений 155, помеченных как "ввод с ICM" 190, может облегчить коммуникацию или совместимость с другими выполняемыми функциями или компонентами Системы 100 Презентации. Как показано, ввод 190 принимается менеджером 102 мультимедийного содержимого (дополнительно описанного ниже, применительно к Фиг. 2), но другие компоненты или функции Системы 100 Презентации также могут отвечать на ввод 190.
Данные 134 интерактивного содержимого ("Данные IC") являются данными, связанными с компонентом 124 IC, которые были приготовлены для визуализации менеджером 104 IC и посланы на микшер/рендерер 110.
Блок 108 управления сигналом синхронизации (дополнительно описанный ниже, применительно к Фиг. 3) производит различные сигналы 158 синхронизации, используемые для управления синхронизацией для подготовки и производства мультимедийных данных 132 и данных 134 IC менеджером 102 мультимедийного содержимого и менеджером 104 IC соответственно. Например, блок 108 управления сигналом синхронизации обычно отвечает за определение частоты, с которой мультимедийные данные 132 ("частота 307 представления мультимедийных данных", показанная и описанная применительно к Фиг. 3) и данные 134 IC представляются пользователю. В другом примере сигналы 158 синхронизации используются для достижения приблизительной синхронизации мультимедийных данных 132 и данных 134 IC (например, согласование действий/синхронизация на покадровой основе или на основе другой шкалы времени).
Микшер/рендерер визуализирует мультимедийные данные 132 в видеоплоскости (не показано) и визуализирует данные 134 IC в графической плоскости (не показано). Графическая плоскость обычно, но не обязательно, перекрывает видеоплоскость для создания для пользователя проигрываемой презентации 127.
Менеджер 106 презентации, выполненный с возможностью обмена данными с менеджером 102 мультимедийного содержимого, менеджер 104 IC, микшер/рендерер 110 и блок 108 управления сигналом синхронизации облегчают контролирование Содержимого 120 Презентации и представление пользователю проигрываемой презентации 127. Менеджер 106 презентации имеет доступ к списку 128 воспроизведения. Список 128 воспроизведения, наряду с другими вещами, включает в себя упорядоченную по времени последовательность клипов 123 и приложений 155 (включая в себя интерактивные объекты 125), могущих быть представленными пользователю. Клипы 123 и приложения 155/интерактивные объекты 125 можно расположить для составления одного или нескольких разделов 131. Как описано выше, для более чем одного независимо управляемого раздела/потока мультимедийного содержимого возможно одновременное проигрывание пользователю. Подобные одновременно проигрываемые потоки можно обозначить в списке 128 воспроизведения, или интуитивный пользовательский ввод может вызвать одновременное проигрывание потоков мультимедийного содержимого.
Менеджер 106 презентации использует список 128 воспроизведения для установления шкалы 130 времени презентации для отдельной мультимедийной презентации (раздела 131 в случае фильма), обычно имеющей заранее заданный период проигрывания, отражающий точный интервал времени, на протяжении которого данный раздел можно представить пользователю. Представления количества заданных прошедших периодов времени на протяжении периода проигрывания часто называют "периодами времени раздела". Поскольку раздел можно проигрывать однажды или более чем однажды (в зацикленном виде, например), период проигрывания определяется на основе одного повтора раздела. По существу, шкала 130 времени презентации обозначает периоды времени раздела, когда заданные клипы 123 и приложения 155 можно представить пользователю (несмотря на то, что показано, обычно неизвестно когда может произойти пользовательский ввод, запускающий и останавливающий проигрывание некоторых заданных клипов). Заданные клипы 123 также обычно имеют заранее заданный период проигрывания, отражающий точный интервал времени для представления данного клипа.
Представления количества заданных прошедших периодов времени на протяжении периода проигрывания клипа часто называют "периодами времени представления". Каждый индивидуально представляемый участок клипа (который в целях описания можно назвать "мультимедийной пробой", хотя можно использовать любое желаемое соглашение о наименованиях) имеет относящийся к нему заранее определенный период времени представления в период проигрывания данного клипа. Чтобы избежать заметных пользователю сбоев в представлении мультимедийного содержимого, одну или несколько предстоящих мультимедийных проб готовят к представлению с опережением запланированного/заранее заданного периода времени представления.
Для лучшей иллюстрации проигрывания отдельного клипа и синхронизации/времен, к этому относящихся, полезно использовать список 128 воспроизведения и шкалу 130 времени презентации для установки одной или нескольких шкал 142 времени мультимедийного содержимого ("шкала(ы) 142 времени мультимедиа"). Продолжая ссылаться на Фиг. 1 и Фиг. 2, на Фиг. 3 показан пример шкалы 142 времени мультимедиа для отдельного клипа 123. Различные интервалы 202 времени презентации мультимедийных проб обозначены на шкале 142 времени мультимедиа. Интервалы 202 времени презентации мультимедийных проб отображают время, в течение периода проигрывания отдельно клипа, когда одну или несколько мультимедийных проб можно представить как мультимедийные данные 132. Как показано, интервалы 202 времени презентации мультимедийных проб возникают с частотой, основанной на заранее заданной частоте 207 презентации мультимедийных данных, которая может меняться от клипа к клипу. Следует отметить, что частота 207 презентации мультимедийных данных не обязательно должна быть той же самой, что и частота, с которой был закодирован отдельный клип 123, хотя, для отдельного клипа, данная частота презентации мультимедийных данных может меняться на основании частоты кодирования. Некоторый пользовательский ввод 150 также может влиять на скорость извлечения мультимедийных проб из мультимедийных источников и, таким образом, влиять на частоту, с которой возникают интервалы 202 времени представления мультимедийных проб. Например, проигрываемая презентация 127 может продолжаться в прямом направлении на нормальной скорости, а может также продолжаться как в прямом, так и в обратном направлении, со скоростями быстрее или медленнее, чем нормальная скорость. Следует оценить, что нормальная скорость является относительным термином и нормальная скорость может меняться от презентации к презентации и от клипа к клипу. Во время быстрой обратной или быстрой прямой прокрутки проигрывание некоторого мультимедийного содержимого (как показано, мультимедийных проб 230) зачастую пропускается. Другой пользовательский ввод может вызвать пропуск проигрывания некоторого содержимого, например, когда пользователь перепрыгивает от одной части фильма к другой.
На мультимедийной шкале 142 времени показан текущий прошедший интервал времени 209 проигрывания (то есть интервал времени раздела цифровой мультимедийной презентации, к которой относится данный клип). Мультимедийная проба 250 представляется пользователю в текущий прошедший интервал времени 209 проигрывания. Как показано, текущий прошедший интервал времени 209 проигрывания совпадает с интервалом 202 времени презентации мультимедийной пробы, хотя подобное совпадение не является обязательным. Также показан следующий интервал 214 времени презентации. Следующий интервал 314 времени презентации мультимедийной пробы используется для определения следующей мультимедийной пробы и/или следующего интервала времени презентации мультимедийной пробы, которые должны быть подготовлены для представления пользователю (как показано, следующая мультимедийная проба 270 подготавливается для представления). Следует понимать, что следующая представляемая мультимедийная проба/интервал времени презентации могут являться очередной последующей мультимедийной пробой/интервалом времени презентации на основании списка 128 воспроизведения или мультимедийной пробой/интервалом времени представления на одну или более мультимедийных проб/интервалов 202 времени презентации дальше от мультимедийной пробы/интервала времени презентации, относящегося к текущему прошедшему интервалу времени 209 проигрывания. Существуют различные пути для установления следующей мультимедийной пробы/интервала времени презентации, которые не описаны подробно в настоящем документе. Однако обычно устанавливаются ожидаемое прошедшее время 220 проигрывания (то есть ожидаемое время раздела интервала времени проигрывания данной цифровой мультимедийной презентации) и соответствующая следующая представляемая мультимедийная проба/интервал времени представления. Такую информацию, как скорость проигрывания, частота 207 мультимедийных кадров, и другую информацию можно использовать для определения ожидаемого прошедшего времени проигрывания и/или местоположения времени презентации отдельной мультимедийной пробы/мультимедийной пробы.
Снова ссылаясь на Фиг. 1, при работе менеджер 106 презентации предоставляет менеджеру 102 мультимедийного содержимого и менеджеру 104 IC информацию, включающую в себя, но не ограничивающуюся этим, информацию о шкале 130 времени презентации и шкале 142 времени мультимедиа. На основании ввода от менеджера 106 презентации Менеджер 104 IC подготавливает для визуализации данные 134 IC, а менеджер 102 мультимедийного содержимого подготавливает для визуализации мультимедийные данные 132.
С продолжающейся ссылкой на Фиг. 1 и 2, на Фиг. 3 представлена упрощенная функциональная блок-схема, более подробно иллюстрирующая аспекты менеджера 102 мультимедийного содержимого. Менеджер 102 мультимедийного содержимого включает в себя один или несколько конвейеров обработки мультимедийных данных. Хотя возможно любое число конвейеров обработки мультимедийных данных, показаны 2 конвейера обработки мультимедийных данных, конвейер 1 302 обработки мультимедийных данных и конвейер 2 320 обработки мультимедийных данных. Обычно конвейер 1 302 обработки мультимедийных данных и конвейер 2 320 обработки мультимедийных данных используются для подготовки для презентации пользователю независимо управляемых мультимедийных потоков 308 и 328 соответственно. Один конвейер обработки мультимедийных данных обычно отвечает за подготовку основного потока мультимедийного содержимого, например фильма, на основании первого сигнала 1 350 синхронизации, а другие конвейеры обработки мультимедийных данных отвечают за подготовку одного или нескольких вторичных потоков мультимедийных данных, таких как комментарии режиссера, биографии актеров, реклама и так далее, на основании второго сигнала 370 синхронизации. Сигналы синхронизации представляют собой частоту(ы), с которой пробы мультимедийного содержимого извлекаются из источников мультимедийных данных и/или подготавливаются к презентации пользователю (однако подобная частота(ы) может динамически меняться на основании пользовательского ввода, форматов кодирования/шифрования/сжатия и других факторов), и обычно происходят от источников тактовых импульсов (не показано), например источников тактовых импульсов, относящихся к Системе 100 презентации и/или специализированных устройств, например аппаратных компонентов конвейеров обработки мультимедийных данных.
Менеджер 102 мультимедийного содержимого отвечает за подготовку для представления предстоящих индивидуально представляемых участков клипов, таких как обрабатываемая мультимедийная проба(ы) 270, показанная на Фиг. 2. Подобная подготовка часто предусматривает несколько этапов, включающих в себя, но не ограничивающихся этим, чтение предстоящего участка клипа из отдельного мультимедийного источника (показаны мультимедийные источники 304 и 324, являющиеся любыми устройствами, объектами или данными, из которых можно извлечь или получить мультимедийное содержимое) и использование аппаратных и программных компонентов обработки мультимедийных данных (компоненты 306 и 326 обработки мультимедийных данных, показанные и описанные ниже применительно к Фиг. 4), таких как устройства чтения, демультипликаторы, декодеры, рендереры и/или дешифраторы, для получения проигрываемых потоков 308, 328 мультимедийного содержимого из информации, прочитанной из мультимедийного источника(ов).
Следует понимать, что менеджер 102 мультимедийного содержимого может иметь динамическую обработку загрузки на основании особенностей и расписания (заранее заданного или основанного на случайном вводе пользователя 150) различных клипов 123, содержащих мультимедийный компонент 122 и/или компонент 124 IC. Обычно для конвейера обработки мультимедийных данных является желательным потреблять не более чем 10-15% ресурсов обработки (например, циклов CPU) Системы 100 презентации.
Большой объем ресурсов обработки может потребляться, когда информация передается между ячейками памяти, используя традиционные операции копирования, такие как копирование память-память, а избыточное использование ресурсов обработки для операций копирования обладает потенциальной возможностью вызвать сбои при проигрывании цифровой мультимедийной презентации. Тем не менее, часто желателен обмен информацией между запоминающими устройствами, используемой различными компонентами конвейера обработки мультимедийных данных, особенно между ячейками памяти, используемыми программными компонентами и запоминающими устройствами, используемыми аппаратными компонентами. Среди других причин, аппаратные компоненты используются для ускорения обработки мультимедийного содержимого.
Одновременная подготовка для представления предстоящих участков двух или более клипов также может потреблять большой объем таких вычислительных ресурсов, как память и циклы процессора, способом, который нелегко предсказать, и может дополнительно усилить потенциальную возможность сбоев при проигрывании цифровой мультимедийной презентации. Более того, память и/или ресурсы обработки, требуемые для подготовки отдельного участка клипа для представления (и, таким образом, интервал времени для подобной подготовки), не всегда постоянны от пробы к пробе или от клипа к клипу. Некоторые факторы, влияющие на требуемые ресурсы и интервалы времени подготовки, относятся к самому мультимедийному содержимому (включая в себя, но не ограничиваясь этим, такие факторы, как элемент мультимедийных данных/размер пробы, мультимедийный источник/объект, параметры кодирования или декодирования и параметры шифрования). Другие факторы, влияющие на требуемые ресурсы, относятся к проигрывателю мультимедийного содержимого (например, архитектура конвейера обработки мультимедийного содержимого, динамическая обработка загрузки и другие признаки архитектуры проигрывателя мультимедийного содержимого), между тем как иные факторы, влияющие на требуемые ресурсы, относятся к пользовательскому вводу (выбираемое пользователем мультимедийное содержимое, форматы содержимого или скорости проигрывания, например).
По-прежнему со ссылкой на Фиг. 1-3, на Фиг. 4 показана упрощенная функциональная схема, более подробно иллюстрирующая архитектурные и эксплуатационные аспекты блоков 306 и 326 компонентов обработки мультимедийных данных. По одному возможному варианту реализации для деления задач обработки мультимедийных данных на группы этапов, известных как фильтры, можно использовать мультимедийную интегрированную среду Microsoft DirectShow™, при этом каждый фильтр имеет некоторое число входных контактов и некоторое число выходных контактов, соединяющих фильтры между собой. Однако следует отметить, что для реализации конвейера обработки мультимедийных данных можно использовать любую интегрированную среду, известную в настоящее время или разработанную позже.
Как показано, программно-аппаратная граница 403 обозначена пунктирной линией - компоненты на левой стороне от границы 403 являются в основном программно реализованными компонентами (или участками компонентов, реализованных с использованием программного обеспечения), а компоненты на правой стороне от границы 403 в основном являются аппаратно реализованными компонентами (или участками компонентов, реализованных с использованием аппаратного или программно-аппаратного обеспечения или их сочетания). Примерная архитектура включает в себя программно реализованное устройство 402 чтения мультимедийного источника, имеющего доступ к первому запоминающему устройству 430, из которого аппаратно реализованный компонент может читать напрямую; аппаратно реализованный демультиплексор ("demux") 404, обычно имеющий доступ к одному или нескольким блокам памяти (показаны и названы для целей настоящего описания как второе запоминающее устройство 433); один или несколько аппаратно реализованных декодеров/рендереров 490, также обычно имеющих доступ к одному или нескольким блокам памяти (показаны и названы для целей настоящего описания как второе запоминающее устройство 433); прикладные программные интерфейсы 408, включающие в себя PhysMemDataStructure API 410, Sniffer/Callback APIs 422, и SyncHelper APIs 416, включающий в себя GetDecodeTimes API 420 and SyncToSTC API 420.
Устройство 402 чтения мультимедийного источника отвечает за прием (посредством технологий толкания или втягивания данных) отдельно представляемых участков клипов (называемых для целей настоящего описания мультимедийными элементами 407) из отдельного мультимедийного источника, сохранение принятых мультимедийных элементов 407 в запоминающем устройстве 430 и за переправку данных, касающихся сохраненных мультимедийных элементов 407 ниже по потоку (например, демультипликатору 404 или декодерам/рендереру 490). По одному варианту реализации данные переправляются вниз по потоку демультиплексору 404, используя структуры данных. Например, в контексте интегрированной среды Microsoft DirectShow™, мультимедийные элементы 407 сворачиваются в структуры данных, называемых объектами IMediaSample (IMediaSample дает ссылку на интерфейс осуществления данного объекта, причем объект можно назвать Мультимедийными Пробами). Часто объекты IMediaSample во время инициализации ограничены фиксированным размером размещения и в зависимости от размеров элементов мультимедийного содержимого могут не использовать весь свой объем. Использование кольцевого буфера 420, как было описано выше, позволяет более эффективное использование запоминающего устройства.
Запоминающее устройство 430 представляет собой любой машиночитаемый носитель (машиночитаемый носитель описан ниже применительно к Фиг. 7), доступный посредством операционной Системы 100 презентации, включая в себя, но не ограничиваясь этим, физически непрерывную и "разделенную-собранную" память, виртуально кэшированную и некэшированную память, физически замкнутую и незамкнутую (для "разделенно-собранного" вида) память и распределение виртуальной памяти оптимизированное для использования кольцевым буфером 420 (подробно описано ниже).
Аппаратно распределенный блок 432 памяти является абстрактным представлением количества или области (любого размера или конфигурации) запоминающего устройства 430, которое можно рассматривать как имеющую блоки, которые можно по отдельности распределить посредством устройства 402 чтения мультимедийного источника, для доступа демультипликатором 404 (или другими компонентами конвейеров 302 или 320 обработки мультимедийных данных) по некоторым алгоритмам (примерный алгоритм показан и описан ниже применительно к Фиг. 5), и посредством некоторых API 408, таких как PhysMemDataStructure API 410. В одной примерной реализации аппаратно распределенный блок 432 является кольцевым буфером 420, имеющим блоки, в которых хранятся индивидуальные элементы 407 мультимедийного содержимого, полученные от устройства 402 чтения мультимедийного источника. Преимущество от использования кольцевого буфера 420 заключается в том, что некоторые машиночитаемые носители можно прочитывать более эффективно, когда данные прочитываются дорожками, особенно когда кольцевой буфер 420 не ставит никаких пакетных ограничений на операцию чтения (например, с оптического устройства). Еще одно преимущество использования кольцевого буфера 420 для хитрых режимов, когда данные считываются быстрее, чем обычно (например, с накопителя на оптических дисках). Пропуск части элементов мультимедийного содержимого, не требующихся для выполнения полного декодирования, более легко достигается с помощью механизма разбивки на части, встроенного в устройство чтения кольцевого буфера. Другие детали кольцевого буфера 420, его использование и выгоды от него дополнительно описаны ниже, применительно к Фиг. 5.
Демультипликатор 404 отвечает за прием мультимедийных элементов 407 (например, следующей обрабатываемой мультимедийной пробы/проб 270, показанной на Фиг. 2) и/или структур данных, относящихся к мультимедийным элементам 407, на входном контакте 411 от выходного контакта 401 устройства 402 чтения мультимедийного источника и разделение двух или более сигналов (например, декодированных потоков мультимедийных данных), которые ранее были объединены совместимым мультиплексором. Запоминающее устройство(а) 433 представляет собой один или несколько машиночитаемых носителей (машиночитаемые носители дополнительно описаны ниже применительно к Фиг. 7), таких как буферы или регистры, пригодные для использования демультиплексором 404 или другими аппаратными компонентами. Демультиплексор 404 предоставляет с выходного контакта 421 демультиплексированные мультимедийные пробы 409, относящиеся к отдельным потокам мультимедийного содержимого (таким как потоки 308 или 328 мультимедийного содержимого), на входной контакт 491 декодеров/рендереров 490.
Декодеры/рендереры 490 отвечают за прием демультиплексированных мультимедийных элементов, называемых для целей описания мультимедийными пробами 409 (например, MPEG-2 пробами), и за использование обычно хорошо известных технологий для декодирования/дешифрации данных демультиплексированных мультимедийных проб для получения мультимедийных данных 132, относящихся к отдельным потокам 308, 328 мультимедийного содержимого. Несмотря на показанное отношение один к одному между мультимедийными источниками, демультиплексорами и декодерами/рендерерами, следует учитывать, что возможно любое расположение любого числа подобных компонентов (наряду с дополнительными компонентами) и подобные компоненты могут быть совместно использованы конвейером 1 302 обработки мультимедийных данных и конвейером 2 320 обработки мультимедийных данных.
API 408 предоставлены для увеличения совместимости программных компонентов и аппаратных компонентов в конвейере обработки мультимедийных данных и для повышения эффективности использования памяти и ресурсов обработки Системы 100 Презентации. В одной возможной реализации API 408 являются набором исполняемых компьютером команд, закодированных на машиночитаемом носителе, которые можно или исполнять во время работы Системы 100 Презентации и/или вызываться авторами команд для конвейеров 306 и 326 обработки мультимедийных данных. Обычно API 408 выполнены с возможностью исполнения способа(ов), показанного и дополнительно описанного ниже применительно к Фиг. 5 и 6.
PhysMemDataStructure API 410 выполнен с возможностью обобщить поддержку запоминающего устройства 430, чтобы оно напрямую потреблялось такими аппаратными компонентами, как демультипликатор 404 и декодеры/рендереры 490. В одной возможной реализации (например, в контексте конвейера обработки мультимедийного содержимого, имеющего интегрированную среду DirectShow™) мультимедийные элементы 407 завернутые в объекты IMediaSample распределены (посредством реализации объекта IMemAllocator (используя входной контакт 411 демультипликатора 404, например - выходной контакт 401 запрашивал бы входной контакт 411, поэтому демультиплексор 404 может предоставлять память со свойствами, применимыми/нужными аппаратному обеспечению)) по ячейкам запоминающего устройства в аппаратно распределенном блоке 432 памяти, и информация о подобных ячейках запоминающего устройства (такая как вид запоминающего устройства, размер блоков памяти, местонахождение указателя на данную ячейку памяти и смещение местоположения ячейки памяти определенного мультимедийного элемента относительно указателя на данную ячейку памяти) раскрывается посредством PhysMemDataStructureAPI 410 таким аппаратным компонентам, как демультипликатор 404 и декодеры/рендереры 490. Таким образом, аппаратные компоненты способны напрямую обращаться/извлекать информацию из аппаратно распределенного блока 432 памяти (например, с помощью технологий прямого доступа к памяти), вместо использования команд и процессорных циклов для копирования данной информации.
Примерный символический код, пригодный для реализации PhysMemDataStructureAPI 410 в контексте конвейеров 302, 322 обработки мультимедийной информации и/или компонентов 306, 326 обработки мультимедийных данных, показан ниже.
interfaceIPhysMemMediaSample:IUnknown
{
//S_OK==contigous physica1 memory, S_FALSE scatter/gather method required HRESULT IsContigous():
// S_OK==cached memory, S FALSE uncached
HRESULT IsCached();
// S_OK==memory is ready for dma operation
// S_FALSE==memory needs PageLock/Unlock for DMA
HRRSULT IsPageLocked();
// S_OK==virtua1 memory pointer wraps around to start of
// physical buffer when exceeding ring buffer size,
// S FALSE no wrap
HRESULT IsAutoWrap();
//page size for scatter / gather table
HRESULT PageSize()
[out] DWORD *pPageLength
);
// allow to build scatter/gather table after memory is locked
HRESULT GetPhysicalPointer(
[in] DWORD offset,
[out] DWORD *pPhysAddress,
[out] DWORD *pLength
);
// allow to build scatter/gather table after memory is locked
//
HRESULT GetScatterGatherTable(
[in] DWORD size,
[out, size is(size)] DWORD *pTable,
[out] DWORD *pEntries
);
//size in bytes for DWORD array required to build
// scatter gather table
HRESULT GetScatterGatherTableSize(
[out] DWORD *pSize
);
//lock/ unlock physical pages in buffer
HRESULT PageLock();
HRESULT PageUnlock();
// cache writeback & discard
// use before dma from media sample buffer to hardware
HRESULT CacheSyncWriteback(
[in] DWORD offset,
[in] DWORD length
);
//cache discard / invalidate
//use before dma from hardware to media sample buffer
HRESULT CacheSyncDiscard(
[in] DWORD offset,
[in] DWORD length
);
};
API 422 анализа/обратного вызова используются для предоставления доступа программно реализованным элементам Системы 100 презентации к некоторым мультимедийным пробам 409 (например, "HLI", "ADV", и "NAV" пакетам, мультиплексированным в потоке программы DVD высокого разрешения), разобранным демультиплексором 404 и/или мультимедийным данным 132, декодированным/визуализированным декодерами/рендерерами 490. В одной возможной реализации фильтр интегрированной среды DirectShow™ соединен с выходным контактом 421 демультипликатора 404 или выходной контакт (не показан) декодеров/рендереров 490 и данный фильтр используются для поддержки API 422 анализа/обратного вызова.
Примерный символьный код, пригодный для реализации API анализа/обратного вызова, который будет обнаруживать некоторые виды мультимедийных проб 409 или мультимедийных данных 123 в контексте конвейеров 302, 322 обработки мультимедийных данных и/или компонентов 306, 326 мультимедийных данных, показан ниже.
HRESULT RegisterCallback(
[in] IRendererDataCallBack* pCallBack
);
В ответ, обратный вызов рендерера вызывает
HRESULT Callback(
[in] IMediaSample* pMediaSample
);
API 416 SyncHelper выполнено с возможностью облегчать обмен информацией, применимой для поддержания воспринимаемой синхронизации между потоками 308 и 328 мультимедийного содержимого. API 418 GetDecodeTimes выполнено с возможностью предоставлять уведомления о состоянии определенных интервалов времени (таких как интервалы 209 времени раздела и интервалы 202 времени презентации мультимедийной пробы), связанных с интервалами времени, за которые некоторые мультимедийные пробы (например, мультимедийные элементы 407 или мультимедийные пробы 409, подразумеваемые как следующие обрабатываемые мультимедийные пробы 270) будут подготовлены для представления аппаратным компонентом (таким как демультипликатор 404 или одним или несколькими декодерами/рендерерами 490). Среди прочих вещей, информацию, предоставленную посредством API 420 SyncToSTC, можно использовать для регулировки сигналов 350 и/или 370 синхронизации на основании разницы в интервалах 209 времени раздела, возвращенных API 418 GetDecodeTimes от различных декодеров/рендереров (или других аппаратных компонентов), обрабатывающих синхронно представляемые мультимедийные пробы.
Примерный символьный код, применимый для реализации API 416 SyncHelper, показан ниже.
/*++
Implemented on the renderes
Helper functions to synchronize streams and provide information about PTS and STC times
--*/
interface ISyncHelper: IUnknown
{
// Returns the current STC time and the PTS of the sample currently being decoded in
// PTS_TIME_BASE ticks
//
HRESIJLT
GetDecodeTimes (
[out] PTS_IME* ptSTC, // current STC time(global)
[out] PTS_TIMEt ptPTS // current PTS time
);
//
// Synchonize two sessions. Provides delta off the STC time to render samples,
//
HRESULT
SyncToSTC (
[in) STC_IDENTIFIER stcToSyncTo, //the clock to sync to
[in] PTS_TIME tDelta // delta off the STC to render samples at, can be -ve
);
},
По-прежнему ссылаясь на Фиг. 1-4, на Фиг. 5 и 6 показаны блок-схемы способов подготовки мультимедийного содержимого (такого как участки одного или нескольких клипов 123) для предоставления посредством одного или нескольких конвейеров обработки мультимедийных данных (таких как конвейер 1 302 обработки мультимедийных данных или конвейер 2 320 обработки мультимедийных данных), используя функциональные возможности, предоставляемые одним или несколькими API 418. Способ, показанный на Фиг. 5, пригоден для минимизации ресурсов обработки и/или памяти, используемой, когда информация передается между запоминающим устройством (таким как запоминающее устройство 430), используемым программным компонентом (таким как устройство 402 чтения мультимедийного источника или другой программный компонент), и запоминающим устройством (таким как запоминающее устройство 433), используемым аппаратным компонентом (таким как демультипликатор 404 или декодеры/рендереры 490 или другие аппаратные компоненты). Способ, показанный на Фиг. 6 применим для поддержки воспринимаемой синхронизации, когда участки нескольких одновременно проигрываемых потоков мультимедийного содержимого подготавливаются для презентации раздельными аппаратными компонентами.
Процессы, показанные на Фиг. 5 и 6, можно реализовать в одном или нескольких общих, многоцелевых или специализированных процессорах, таких как процессор 702, описанный ниже применительно к Фиг. 7. Если не указано особо, данные способы, описанные в настоящем документе, не ограничены конкретным порядком или последовательностью. В дополнение, некоторые из данных описанных способов или их элементы могут встречаться или выполняться одновременно.
В отношении способа, показанного на блок-схеме, приведенной на Фиг. 5, данный способ начинается блоком 500 и продолжается блоком 502, в котором участок первого запоминающего устройства, такого как аппаратно распределенный блок 432 памяти, определяют для хранения элементов мультимедийного содержимого, такого как индивидуально проигрываемые участки клипа 123 (например, мультимедийные элементы 407, принятые от отдельного мультимедийного источника 304). Отдельный элемент мультимедийного содержимого и ячейку памяти для данного элемента мультимедийного содержимого в первом запоминающем устройстве определяют в блоках 504 и 506 соответственно.
В контексте компонентов 306, 326 обработки мультимедийных данных из конвейеров 302, 320 обработки мультимедийных данных соответственно, аппаратно распределенный блок 432 памяти можно реализовать в виде кольцевого буфера 420 для увеличения эффективности использования памяти и ресурсов обработки. Кольцевой буфер 420 можно рассматривать как имеющий блоки, которые можно раздельно распределять посредством устройства 402 чтений мультимедийного источника (или других компонентов конвейеров 302 или 320 обработки мультимедийных данных) для сохранения мультимедийных элементов 407. Смещение каждого из мультимедийных элементов 407, сохраненных в кольцевом буфере 420, известно и может быть выражено относительно значений одного или нескольких указателей на ячейки в кольцевом буфере 420, таких как указатель 435 начала памяти ("BOM"), указатель 437 конца памяти ("EOM"), указатель 453 начала используемой памяти ("BUMP") и/или указатель 455 конца используемой памяти. По мере получения демультипликатором 404 или другим аппаратным компонентом представлений мультимедийных элементов 407 из кольцевого буфера 420, BUMP 453 и/или EUMP 455 можно перемещать соответственно. Поскольку мультимедийные элементы 407 можно получать и освобождать беспорядочно, можно поддерживать список смещений мультимедийных элементов 407 в кольцевом буфере 420, следя за тем, чтобы BUMP 453 и EUMP не разрешалось обходить друг друга.
Для дальнейшего увеличения эффективностей обработки и использования памяти можно использовать виртуальную память для дублирования одного или нескольких блоков из начала кольцевого буфера 420 в конец кольцевого буфера 420. Как показано, дубликат блока 450 BOM (который является дубликатом блока 450 начала памяти "BOM") реализован с использованием виртуальной памяти и логически расположен после блока 411 конца памяти "EOM". Такое использование виртуальной памяти называется функцией "автосвертывания", поскольку особенно применимо при разбивке большего блока памяти для использования в виде кольцевого буфера с указателями чтения и записи. Использование функции автосворачивания является не обязательной - как правило, поставщик демультипликатора 404 может выбрать предоставление памяти, которая не отображается дважды, и конвейер обработки мультимедийных данных все равно будет работать, но может сделать использование памяти менее эффективным. В подобной реализации кольцевого буфера есть специальный случай, при котором кусок памяти, который "окутывает" начало данного буфера, может требовать специального обращения. Например, копирование или другое получение информации в окутывающем участке памяти может требовать двух операций, одну операцию для извлечения информации в конце данного буфера и другую операцию для извлечения информации в начале данного буфера. Таким образом, обычно сложно получить полное преимущество от размера кольцевого буфера. Использование виртуальной памяти, как описано выше, позволяет избежать необходимости или распределения дополнительной памяти или пропуск конца кольцевого буфера (и то и другое приводит к неэффективному использованию памяти), когда размер информации слишком велик, чтобы вместиться в конце данного кольцевого буфера.
Примерный символьный код, применимый (для программного обеспечения операционной системы Microsoft Windows CE 6.0, хотя можно использовать любую операционную систему, использующую виртуальную память) для реализации признака "автосвертывания", который отображает физический кусок памяти дважды в область виртуальной памяти двойного размера, показан ниже.
// map physical memory twice to double sized virtual memory region
CallerProc=GetCallerProcessQ;
VirtualAddress=VirtualAllocEx(CallerProc, 0, Size*2, MEM_RESERVE, PAGE NOACCESS);
VirtualCopyEx(CallerProc, VirtualAddress,
GetCurrentProcessQ, (PVOID)( PhysicalAddress» 8), Size,
PAGE PHYSICAL I PAGE READWRITE I (Cached ? 0: PAGE NOCACHE)) )
VirtualCopyEx(CallerProc, (PBYTE) VirtualAddress+Size,
GetCurrentProcessQ, (PVOID)( PhysicalAddress» 8), Size,
PAGE PHYSICAL | PAGE READ WRITE | (Cached ? 0: PAGE NOCACHE))
Ссылаясь снова на блок-схему, показанную на Фиг. 5, блок 508 иллюстрирует этап образования структуры данных, относящейся к отдельному элементу мультимедийного содержимого, где структура данных имеет поле для хранения информации об адресе ячейки памяти с элементом мультимедийного содержимого в первом запоминающем устройстве. Далее, в блоке 510 данная структура данных раскрывается аппаратному компоненту (такому как демультипликатор 404 или декодеры/рендереры 490), имеющему второе запоминающее устройство. В блоке 512 можно видеть, что данный аппаратный компонент может использовать информацию из структуры данных о ячейке памяти с данным элементом мультимедийного содержимого для прямой передачи данного элемента мультимедийного содержимого во второе запоминающее устройство без центрального процессора.
В контексте компонентов 306, 326 обработки мультимедийных данных, использующих интегрированную среду DirectShow™, устройство 402 чтения мультимедийного источника использует такие структуры данных, как IMediaSampleObjects, для предоставления всей или части нижеследующей информации нижестоящим аппаратным компонентам: указателей на запоминающее устройство 430 и/или аппаратно распределенный блок 432 памяти; размера запоминающего устройства 430 и/или аппаратно распределенного блока 432 памяти; время начала и остановки мультимедийных элементов 407; метку(и); и любую другую желательную информацию. Преимущественно информация относительно свойств блоков памяти кольцевого буфера 420, распределенных устройством 402 чтений мультимедийного источника для доступа демультиплексора 404 (и других аппаратных компонентов), раскрывается посредством API 410 PhysMemDataStructure, которую также можно предоставить посредством такой структуры данных (или ее полей), как IMediaSampleObject. Информация о физической памяти, извлеченная демультиплексором 404 и другими аппаратными компонентами из API 410 PhysMemDataStructure, используется для прямого доступа к ячейкам памяти индивидуальных элементов 407 мультимедийных данных в кольцевом буфере 420, в значительной степени устраняя необходимость в операциях копирования, требующих интенсивной работы процессора, таких как операции "memcopy". Информация относительно свойств аппаратно распределенного блока 432 памяти, раскрываемая посредством API 410 PhysMemDataStructure, включает в себя, но не ограничивается этим: вид запоминающего устройства 432; размер блока памяти данного запоминающего устройства; местоположение одного или нескольких указателей 437, 435, 453 или 455 в данном запоминающем устройстве; и смещение ячейки памяти отдельного мультимедийного элемента 407 относительно одного или нескольких указателей в данном запоминающем устройстве.
Ссылаясь на способ, показанный на приведенной на Фиг. 6 блок-схеме последовательности операций, данный способ начинается блоком 600 и продолжается блоками 602 и 604, в которых соответственно определяется интервал времени проигрывания мультимедийной презентации и определяются два клипа (каждый имеющий свой собственный интервал времени проигрывания), проигрываемые как раздельные потоки мультимедийного содержимого, такие как поток 308 мультимедийного содержимого и поток 328 мультимедийного содержимого. Далее, соответственно в блоках 606 и 608 определяются две синхронно представляемые мультимедийные пробы, одна из первого клипа и одна из второго клипа.
Как правило, программно реализованные компоненты Системы Презентации (такие как аспекты менеджера 106 презентации) осведомлены о проигрываемых в настоящий момент клипах 123. В контексте компонентов 306, 326 обработки мультимедийных данных из конвейеров 302, 320 обработки мультимедийных данных соответственно, возможно использовать API 422 анализа/обратного вызова для определения заданных мультимедийных элементов 407 и/или мультимедийных проб 409, обрабатываемых демультипликатором 404 и/или декодерами/рендерерами 490.
Как показано в блоке 610, некоторая информация устанавливается в первый момент времени - данный первый момент времени соответствует моменту, когда мультимедийная проба из первого клипа проходит подготовку для представления посредством первого аппаратного компонента, такого как демультиплексор 404 или декодер/рендерер 490 в конвейере 1 302 обработки мультимедийных данных. В блоке 610 устанавливается нижеследующая информация: прошедший отрезок интервала времени проигрывания данной цифровой мультимедийной презентации и прошедший отрезок интервала времени проигрывания данного первого клипа.
Как показано в блоке 612, некоторая информация устанавливается во второй момент времени - данный второй момент времени соответствует моменту, когда мультимедийная проба из второго клипа проходит подготовку для представления посредством второго аппаратного компонента, такого как демультиплексор 404 или декодер/рендерер 490 в конвейере 2 322 обработки мультимедийных данных. В блоке 612 устанавливается нижеследующая информация: прошедший отрезок интервала времени проигрывания данной цифровой мультимедийной презентации и прошедший отрезок интервала времени проигрывания данного второго клипа.
Как было описано выше применительно к примерной мультимедийной шкале времени данного мультимедийного содержимого, показанной на Фиг. 2, данный прошедший отрезок интервала времени проигрывания часто называют интервалом времени раздела (или глобальным системным временем), а прошедший отрезок интервала времени проигрывания отдельного клипа обычно соответствует отдельному заранее заданному интервалу 202 времени представления мультимедийной пробы, связанному с отдельной мультимедийной пробой. API 418 GetDecodeTimes выполнено с возможностью исследовать мультимедийные пробы и/или мультимедийные шкалы 142 времени как первого, так и второго клипов и возвращать информацию, обозначенную в блоках 610 и 612.
В блоке 614 устанавливается разница между прошедшим отрезком интервала времени проигрывания данной цифровой мультимедийной презентации, вычисленным в блоке 610, и прошедшим отрезком интервала времени проигрывания данной цифровой мультимедийной презентации, вычисленным в блоке 612, и, как показано в блоке 616, применяется для регулировки синхронизации аппаратных компонентов для подготовки и/или представления мультимедийных проб.
В контексте компонентов 306, 326 обработки мультимедийных данных из конвейеров 302, 320 обработки мультимедийных данных соответственно, API 420 SyncToSTC выполнено с возможностью использовать информацию, полученную через GetDecodeTimesAPI 418, для синхронизации разных потоков мультимедийного содержимого от различных аппаратных компонентов, применяя дельты (на основании разницы между данными прошедшими отрезками интервала времени проигрывания, установленной в блоке 614) к интервалам времени обработки и/или сигналам синхронизации, таким как сигналы 350 и 370 синхронизации. Следует понимать, что API 420 SyncToSTC также можно применять для синхронизации потоков мультимедийного содержимого с другими ограничениями воспроизведения (например, как определено списком проигрывания).
Продолжая ссылаться на Фиг. 1-6, на Фиг.7 показана блок-схема примерной конфигурации операционной среды 700, в которой можно реализовать или использовать целиком или частично Систему 100 Презентации. Операционная среда 700 в основном характерна для широкого круга вычислительных сред общего назначения и специализированных. Операционная среда 700 является только одним примером подходящей операционной среды и не предназначена для предложения каких-либо ограничений в отношении сферы использования или функциональных возможностей данной системы/систем и способов, описанных в настоящем документе. Например, операционная среда 700 может быть видом компьютера, например персональным компьютером, рабочей станцией, сервером, переносным устройством, компактным компьютером, блокнотным компьютером, или другим видом электронного устройства, таким как проигрыватель оптических носителей или другой вид мультимедийных проигрывателей, известный в настоящее время или разработанный позже, или любой аспект вышеперечисленного. Операционная среда 700 также может являться, например, распределенной вычислительной сетью или услугой Web. Конкретным примером операционной среды 700 является такая среда, как проигрыватель DVD или относящаяся к нему операционная система, приспособленная для проигрывания фильмов DVD высокого разрешения.
Как показано, операционная среда 700 включает в себя или имеет доступ к компонентам вычислительного блока, включающего в себя один или несколько процессоров 702, машиночитаемый носитель 704 и компьютерные программы 706. Процессор(ы) 702 управляется/управляются машиночитаемым носителем 704 и компьютерными программами 706. Процессор(ы) 702 может являться физическим или виртуальным процессором и может выполнять команды на ассемблере, скомпилированные или машинного уровня для выполнения отдельных процессов. Подобные команды можно создать используя исходный код или любой другой инструмент создания программного обеспечения.
Машиночитаемый носитель 704 представляет собой любое число и сочетание локальных и удаленных устройств, в любом виде, известном сейчас или разработанном позже, способных записывать, сохранять или передавать такие машиночитаемые данные, как команды, выполнимые процессором 702. В частности, машиночитаемый носитель 704 может являться или включать в себя полупроводниковое запоминающее устройство (такое как постоянное запоминающее устройство ("ROM"), любой вид программируемого ROM ("PROM"), оперативное запоминающее устройство ("RAM") или флеш-память, для примера); магнитное запоминающее устройство (такое как накопитель на гибких дисках, накопитель на жестких дисках, магнитный барабан, магнитная лента или магнитооптический диск); оптическое запоминающее устройство (такое как любой вид компактных дисков или универсальных цифровых дисков); запоминающее устройство на магнитных доменах; кэш память; запоминающее устройство на магнитных сердечниках, голографическое запоминающее устройство; карту памяти; бумажную ленту; перфокарту; или любое их сочетание. Машиночитаемый носитель 704 также может включать в себя средства связи и данные, относящиеся к ним. Примеры средств связи/данных включают в себя, но не ограничиваются этим, данные, встроенные в любой вид проводной или беспроводной передачи данных, например пакетированные или непакетированные данные, несомые модулированным несущим сигналом.
Компьютерные программы 706 представляют собой любые способы обработки сигнала или сохраненные инструкции, которые в электронном виде управляют заранее заданными операциями над данными. Как правило, компьютерные программы являются исполняемыми компьютером инструкциями, реализованными как программные компоненты в соответствии с хорошо известными приемами для разработки программного обеспечения, основанного на использовании компонентов, и закодированными в машиночитаемом носителе (таком как машиночитаемый носитель 704). Программное обеспечение можно объединять или распределять различными путями.
Хранилище 714 включает в себя дополнительные или различные машиночитаемые носители, особым образом относящиеся к операционной среде 700, такие как оптические диски или другие переносные носители (оптические диски обслуживаются необязательным накопителем 716 на оптических дисках). Для переноски данных, адресов, управляющих сигналов и другой информации в операционной среде 700 и ее компонентах, к ним или от них, можно использовать одну или несколько внутренних шин 720 данных, являющихся хорошо известными и широкодоступными элементами.
Входной интерфейс(ы) 708 предоставляет ввод в операционную среду 700. Ввод можно собирать используя любой вид известного в настоящее время или разработанного позднее интерфейса, такого как пользовательский интерфейс. Пользовательские интерфейсы могут быть устройствами сенсорного ввода, такими как пульты дистанционного управления, сенсорные экраны, манипуляторы типа "мышь", ручки, стилусы, шаровые манипуляторы, клавиатуры, микрофоны, сканирующие устройства и все виды устройств, которые используются для ввода данных.
Интерфейс(ы) 710 вывода предоставляет вывод из операционной среды 700. Примеры интерфейса(ов) 710 включают в себя экраны, принтеры, колонки, накопители (такие как накопитель 716 на оптических дисках и другие дисковые накопители или запоминающие устройства) и тому подобное.
Внешние интерфейсы 712 связи доступны для увеличения способности операционной среды 700 принимать информацию от или посылать информацию к другому объекту посредством средства связи, такого как индивидуальный сигнал, сигнал данных или машиночитаемый носитель. Внешний интерфейс(ы) 712 связи, наряду с соответствующими устройствами поддержки сети и/или программным обеспечением или интерфейсами, может являться или может включать в себя такие элементы, как кабельные модемы, терминальное оборудование, мультимедийные проигрыватели, устройства хранения данных, персональные цифровые помощники или любое другое устройство или их компоненты/сочетание.
На Фиг. 8 показана упрощенная функциональная схема архитектуры 800 клиент-сервер, применительно к которой можно использовать Систему 100 Презентации или операционную среду 700. Один или несколько аспектов Системы 100 Презентации и/или операционной среды 700 могут представлять собой сторону 802 клиента архитектуры 800 или сторону 804 сервера архитектуры 800. Как показано, интегрированная среда 803 связи (которая может быть любой публичной или частой сетью передачи данных любого вида, например проводной или беспроводной) обеспечивает передачу данных между стороной 802 клиента и стороной 804 сервера.
На стороне 802 клиента один или несколько клиентов 806, которые можно реализовать в аппаратном, программном, программно-аппаратном обеспечении или любом их сочетании, отвечают за хранилище 808 данных клиента. Хранилище 808 данных клиента может являться машиночитаемым носителем 704, применяемым для хранения информации локально на клиентах 806. На стороне 804 сервера за хранилище 812 серверных данных отвечает один или несколько серверов 810. Подобно хранилищу 808 данных клиента, хранилище 812 серверных данных может включать в себя один или несколько машиночитаемых носителей 704, применяемых для хранения информации локально на серверах 810.
Были описаны различные аспекты системы представления, используемой для представления пользователю интерактивного содержимого синхронно с мультимедийным содержимым. Однако следует понимать, что не обязательно должны быть использованы все описанные компоненты системы представления и что не обязательно данные компоненты, при использовании, должны быть представлены одновременно. Функции/компоненты, описанные в контексте Системы 100 презентации как являющиеся программным обеспечением, не ограничены реализацией любым заданным вариантом осуществления программного обеспечения. Скорее, функции являются процессами, которые транспортируют или изменяют данные, и обычно могут быть реализованы или выполнены в программном обеспечении, аппаратном обеспечении, программно-аппаратном обеспечении или их комбинации.
Хотя сущность в данном документе была описана в структурных признаках и/или методологических действиях, ориентированных на конкретный язык, также следует понимать, что сущность, описанная в формуле изобретения, не обязательно ограничивается заданными признаками или действиями, описанными выше. Скорее, заданные признаки и действия, описанные выше, раскрывают примерный вид реализации данной формулы изобретения. Дополнительно следует понимать, что когда один элемент обозначен как отвечающий за другой элемент, данные элементы могут быть соединены напрямую или не напрямую. Соединения, показанные в настоящем документе, на практике могут быть логическими или физическими для достижения соединения или коммуникационного интерфейса между элементами. Среди других путей, соединения можно реализовать как связь в процессе обработки среди программных процессов или как связь внутри машины среди сетевых компьютеров.
Слово "примерный", использованное в настоящем документе, означает служащий примером, вариантом или иллюстрацией. Любая реализация или ее аспект, описанные как "примерные", не обязательно предназначены как предпочтительные или выигрышные относительно других реализаций или их аспектов. На самом деле понятно, что можно разработать варианты осуществления, отличные от заданных вариантов осуществления, описанных выше, не покидая сущность и объем прилагаемой формулы изобретения, поэтому имеется в виду, что объем сущности настоящего документа будет регулироваться нижеследующей формулой изобретения.