Поделиться через


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

[Функция, связанная с этой страницей, Windows Media Format 11 SDK, является устаревшей функцией. Она была заменена средствами чтения источника и модуля записи приемников. Средство чтения источника и модуль записи приемников оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде средство чтения исходного кода и модуль записи приемников вместо пакета SDK для Windows Media Format 11, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

 

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

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