Метод CBaseOutputPin.DecideAllocator
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Метод DecideAllocator
выбирает распределителя памяти.
Синтаксис
virtual HRESULT DecideAllocator(
IMemInputPin *pPin,
IMemAllocator **pAlloc
);
Параметры
-
pPin
-
Указатель на интерфейс IMemInputPin входного контакта.
-
pAlloc
-
Адрес переменной, получающей указатель на интерфейс IMemAllocator распределителя.
Возвращаемое значение
Возвращает S_OK в случае успешного выполнения или значение HRESULT , указывающее причину ошибки.
Комментарии
Этот метод вызывается в конце процесса подключения закрепления. Он выполняет следующие действия:
- Вызывает метод IMemInputPin::GetAllocatorRequirements , чтобы получить требования к буферу входного контакта, если таковые есть.
- Вызывает метод IMemInputPin::GetAllocator для запроса распределителя из входного контакта. Если входной контакт не предоставляет распределителя, выходной контакт создает его путем вызова метода класса CBaseOutputPin::InitAllocator .
- Вызывает метод класса CBaseOutputPin::D ecideBufferSize , который задает свойства распределителя. Это чистый виртуальный метод; Производный класс должен реализовывать его.
- Вызывает метод IMemInputPin::NotifyAllocator , который уведомляет входной контакт используемого распределителя.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|