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


Метод IAMBufferNegotiation::SuggestAllocatorProperties (strmif.h)

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

Метод SuggestAllocatorProperties сообщает закреплению предпочитаемых свойств распределителя приложения. Вызовите этот метод перед подключением контакта.

Синтаксис

HRESULT SuggestAllocatorProperties(
  [in] const ALLOCATOR_PROPERTIES *pprop
);

Параметры

[in] pprop

Указатель на структуру ALLOCATOR_PROPERTIES , содержащую запрошенные свойства. Отрицательное значение для любого элемента указывает, что закрепление должно использовать значение по умолчанию для этого свойства.

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

Возвращает значение HRESULT . Ниже приведены возможные значения.

Код возврата Описание
S_OK
Успешно.
E_FAIL
Ошибка.
E_POINTER
Аргумент указателя NULL.
VFW_E_ALREADY_CONNECTED
Закрепление уже подключено.

Комментарии

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

Чтобы запросить определенное количество буферов, задайте член cBuffersструктуры ALLOCATOR_PROPERTIES . Чтобы запросить определенный размер буфера, задайте член cbBuffer . Приложение обычно не должно указывать выравнивание или префикс. Если количество буферов или размер каждого буфера слишком мало, диаграмма фильтров может удалить выборки.

Примеры

C++
ALLOCATOR_PROPERTIES AllocProp;
AllocProp.cbAlign = -1;  // -1 means no preference.
AllocProp.cbBuffer = dwBytesPerSec *  dwLatencyInMilliseconds / 1000;
AllocProp.cbPrefix = -1;
AllocProp.cBuffers = -1;
pIAMBufferNegotiation->SuggestAllocatorProperties(&AllocProp);

Требования

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

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

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

Интерфейс IAMBufferNegotiation