Входы, потоки и выходные данные

Входные данные в этой документации — это любой поток данных мультимедиа (например, аудио или видео), который приложение доставляет в объект модуля записи из источника с помощью соответствующих интерфейсов API. Входные данные должны доставляться в поддерживаемом формате. В качестве входных данных поддерживается несколько стандартных форматов RGB и YUV, а аудиокодеки поддерживают PCM. Если указанный формат входных данных не поддерживается кодеком, объект модуля записи будет создавать экземпляр видеообъекта аудио или видео, который способен преобразовать разнообразные форматы в форматы, которые может принимать кодек. Для входных звуковых данных вспомогательный объект будет настраивать глубину, частоту дискретизации и количество каналов при необходимости. Для входных видео видеообъект видео будет выполнять преобразования цветового пространства и изменения размера прямоугольника. В некоторых случаях сжатые аудио и видеоданные могут передаваться во входной поток. Входные данные могут относиться к другим типам мультимедиа, помимо аудио и видео, например текста, команд сценариев, изображений по-прежнему или произвольных файловых данных.

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

Термин "поток" в этой документации относится к данным в файле ASF, а не к (1) входным источникам данных перед их обработкой объектом модуля записи, и (2) выходные данные после распаковки объектом модуля чтения. Поток ASF содержит данные, поступающие из одного входного объекта в объект модуля записи, хотя несколько потоков могут быть созданы из одних и тех же входных данных. Поток имеет тот же формат и параметры сжатия от начала до конца. Простой ASF-файл имеет два потока: один для аудио и один для видео. Более сложный файл может иметь два звуковых потока и несколько видеопотоков. Звуковые потоки могут иметь одни и те же параметры сжатия, но содержать различное содержимое, например речевое сопровождение на разных языках. Потоки видео могут содержать одно и то же содержимое, но имеют разные параметры сжатия. Параметры формата мультимедиа и сжатия, которые объект Writer будет применять к каждому потоку, указаны в профиле.

Связь между входами, потоками и выходами может составлять три основных типа. Эти связи показаны на следующих трех схемах.

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

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

Более сложная связь возникает при использовании нескольких взаимоисключающих исключений с несколькими битовыми частотами. В этом случае один вход обрабатывается модулем записи и кодируется по нескольким скоростям. Каждая кодировка данных вставляется в файл ASF в виде отдельного потока. При воспроизведении средство чтения определяет, какой поток следует распаковать в зависимости от доступной пропускной способности. Затем средство чтения считывает выбранный поток и доставляет несжатые образцы как один выход, как показано на следующей схеме.

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

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

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

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

Примечание

В качестве входных, потоков и выходных данных используются объекты пакета SDK Windows Media Format. Потоки имеют номер потока, который основан на 1, который определяется в профиле. Каждому потоку также назначается индекс потока для использования при перечислении потоков в профиле. Ни один из этих чисел не гарантированно согласуется друг с другом. То есть входное число 1 может не соответствовать номеру потока 1, номер потока 1 может не соответствовать индексу потока 1 и т. д.

 

Основные понятия

Взаимное исключение