Метод IVMRFilterConfig::SetNumberOfStreams (strmif.h)

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

Метод SetNumberOfStreams задает количество потоков для перемешивания и указывает VMR перейти в режим микшера.

Синтаксис

HRESULT SetNumberOfStreams(
  [in] DWORD dwMaxStreams
);

Параметры

[in] dwMaxStreams

Двойное слово, содержащее максимальное количество входных потоков, которые потребуется виртуальной машине для смешивания. Не должно быть больше MAX_MIXER_STREAMS (16).

Возвращаемое значение

Если метод завершается успешно, возвращает значение S_OK. В противном случае функция возвращает код ошибки.

Код возврата Описание
E_FAIL
Микшер уже настроен.
E_INVALIDARG
Предпринята попытка настроить микшер для более чем 16 входных потоков.
E_OUTOFMEMORY
Не удалось выделить память для управления потоками.

Комментарии

Значение dwMaxStreams должно быть равно количеству необходимых входных контактов. После подключения виртуальной машины нельзя добавить или удалить контакты. Если вы заранее не знаете, сколько входных потоков потребуется, задайте для dxMaxStreams максимальное число, которое может потребоваться. Для dwMaxStreams допустимо значение 1. Это значение не приводит к созданию дополнительных контактов, но заставляет VMR перейти в режим микшера. Поэтому после вызова этого метода нельзя вызвать Метод SetRenderingMode , чтобы задать режим VMRMode_Renderless

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

Примечание Хотя VMR поддерживает несколько потоков, все они используют один часы, поэтому вы не можете искать один поток независимо от других. Если вам нужно искать входные потоки независимо друг от друга, необходимо использовать другой метод. Дополнительные сведения см. в примере VMRMulti.
 

Требования

Требование Значение
Минимальная версия клиента Windows XP с пакетом обновления 1 (SP1) [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)
Библиотека Strmiids.lib

См. также раздел

Коды ошибок и успешного выполнения

Интерфейс IVMRFilterConfig

IVMRFilterConfig::GetNumberOfStreams

Использование отрисовщика смешанного видео