Взаимное исключение
[Функция, связанная с этой страницей, пакет SDK для Windows Media 11, является устаревшей функцией. Он был заменен средства чтения источника и записи приемника. средства чтения источников и записи приемника оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код средства чтения исходного кода и записи приемников вместо пакета SDK для Windows Media 11, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Каждый ФАЙЛ ASF содержит один или несколько потоков, каждый из которых содержит цифровые данные мультимедиа. В обычных условиях каждый поток связан с одним выходом. При воспроизведении объект читателя предоставляет примеры для каждого вывода. Таким образом, по умолчанию каждый поток в ASF-файле предоставляется средством чтения при воспроизведении.
Существуют ситуации, когда не требуется каждый поток, доставленный клиенту. Например, если вы создаете видеофайл с пятью звуковыми потоками, по одному для каждого из пяти языков, необходимо одновременно доставлять только один из них. Взаимное исключение — это функция пакета SDK для формата Windows Media, который позволяет указать ряд взаимоисключающих потоков, которые совпадают с одинаковыми выходными данными.
Взаимное исключение определяется в профиле, используемом для создания файла. Вы настраиваете взаимное исключение в профиле с помощью объектов взаимного исключения. Вы добавляете потоки по одному в объект взаимного исключения, задаете тип и включаете объект в профиль.
Пакет SDK для формата Windows Media распознает четыре типа взаимного исключения:
- Скорость передачи битов
- Язык
- Представление
- Неизвестный
Взаимное исключение по скорости битов
Взаимное исключение скорости битов является особым типом взаимного исключения и чаще называются взаимоисключаемой скоростью (MBR). Взаимное исключение MBR содержит ряд потоков, которые исходят из одного входного значения, но кодируются по разным скоростям. При воспроизведении файла с MBR средство чтения определяет оптимальный поток, используемый на основе доступной пропускной способности.
Пакет SDK для формата Windows Media поддерживает MBR для аудио- и видеопотоков. Пакет SDK также поддерживает специальный тип видео MBR с несколькими размерами видео MBR. Это похоже на обычное видео MBR, за исключением того, что отдельные потоки могут иметь разные размеры кадров. Например, некоторые потоки могут быть по умолчанию размером 320 x 240, а некоторые другие — с более высокими скоростями и размером видео 640 x 480.
Взаимное исключение по языку
Взаимное исключение на основе языка предназначено для использования с содержимым (обычно аудио), записанным на нескольких языках. Взаимное исключение на основе языка включает несколько потоков, исходящих из уникальных входных данных. Каждый вход является одинаковым содержимым, но на другом языке.
Чтобы взаимное исключение по языку работало, приложение чтения должно включать логику, чтобы выбрать соответствующий язык. Если вы пишете приложение для воспроизведения ФАЙЛОВ ASF и хотите поддерживать файлы на основе языка взаимное исключение, необходимо выбрать соответствующий поток перед началом воспроизведения.
Взаимное исключение по презентации
Взаимное исключение на основе презентаций предоставляется для поддержки видеопотоков, содержащих одно и то же содержимое, закодированное различными пропорциями. Как правило, это используется при предоставлении видео в почтовой версии (пропорции 16:9), а также форматированных для телевизионных экранов (пропорции 4:3).
Выбор презентации для воспроизведения чаще всего определяется пользователем. Если вы пишете приложение для воспроизведения файлов ASF и хотите поддерживать файлы с взаимным исключением на основе презентаций, необходимо представить пользователю возможность выбора типа презентации для просмотра.
Неизвестное взаимное исключение
Вы можете создать взаимное исключение на основе любых критериев, которые вам нравится. Все пользовательские типы взаимных исключений должны быть созданы с помощью неизвестного типа.
Расширенные функции взаимного исключения
Можно также использовать взаимное исключение для назначения потоков группам, которые являются взаимоисключающими друг от друга. Например, вы можете иметь аудиопотоки на нескольких языках и назначать для каждого видеопотока разные. Вы используете взаимное исключение для группировки каждого аудиопотока с соответствующим видеопотоком и сделать все группы взаимоисключающими.
Средство чтения автоматически выбирает потоки для всех взаимных исключений. Для всех типов взаимного исключения, кроме MBR и взаимного исключения на основе языка, читатель всегда выбирает поток по умолчанию, который является первым потоком, добавленным в объект взаимного исключения в профиле. Для MBR средство чтения выбирает поток, который лучше всего соответствует доступной пропускной способности во время воспроизведения. Если вы не хотите использовать поток по умолчанию, перед началом чтения файла можно задать для выбора потока вручную.
Выбор потока вручную применяется ко всему файлу. Трудности могут возникнуть при наличии взаимных исключений разных типов в одном файле. Например, файл может содержать как взаимное исключение на основе скорости, так и пользовательское взаимное исключение. Чтобы выбрать поток, отличный от значения по умолчанию в пользовательском взаимном исключении, необходимо использовать выбор потока вручную. Однако если вы используете ручной выбор потока, средство чтения не будет автоматически выбирать поток скорости нескольких битов. Если вы планируете поддерживать несколько типов взаимоисключения в одном файле, необходимо запланировать эту конечную возможность. Обычно это означает создание собственных процедур выбора потока для обычно автоматических типов взаимного исключения.
Связанные разделы