Использование ручного выбора потока

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

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

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

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

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

  1. Получите указатель на интерфейс IWMReaderAdvanced объекта чтения, вызвав IWMReader::QueryInterface.
  2. Включите ручной выбор потока, вызвав IWMReaderAdvanced::SetManualStreamSelection.
  3. Чтобы узнать, выбран ли конкретный поток, вызовите IWMReaderAdvanced::GetStreamSelected. Необходимо передать указатель на переменную типа перечисления WMT_STREAM_SELECTION . Когда вызов возвращается, значение в переменной будет описывать текущий тип выбора потока.
  4. Чтобы выбрать поток, вызовите IWMReaderAdvanced::SetStreamsSelected. Этот метод позволяет указать несколько потоков одновременно для синхронизированного переключения потоков.

Чтение файлов с помощью асинхронного средства чтения