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


Метод 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 , указывающее причину ошибки.

Комментарии

Этот метод вызывается в конце процесса подключения закрепления. Он выполняет следующие действия:

  1. Вызывает метод IMemInputPin::GetAllocatorRequirements , чтобы получить требования к буферу входного контакта, если таковые есть.
  2. Вызывает метод IMemInputPin::GetAllocator для запроса распределителя из входного контакта. Если входной контакт не предоставляет распределителя, выходной контакт создает его путем вызова метода класса CBaseOutputPin::InitAllocator .
  3. Вызывает метод класса CBaseOutputPin::D ecideBufferSize , который задает свойства распределителя. Это чистый виртуальный метод; Производный класс должен реализовывать его.
  4. Вызывает метод IMemInputPin::NotifyAllocator , который уведомляет входной контакт используемого распределителя.

Требования

Требование Значение
Заголовок
Amfilter.h (включая Streams.h)
Библиотека
Strmbase.lib (розничные сборки);
Strmbasd.lib (отладочные сборки)

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

Класс CBaseOutputPin