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


Метод IGraphBuilder::AddSourceFilter (strmif.h)

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

Метод AddSourceFilter добавляет фильтр источника для указанного файла в граф фильтра.

Синтаксис

HRESULT AddSourceFilter(
  [in]  LPCWSTR     lpcwstrFileName,
  [in]  LPCWSTR     lpcwstrFilterName,
  [out] IBaseFilter **ppFilter
);

Параметры

[in] lpcwstrFileName

Указывает имя загружаемого файла.

[in] lpcwstrFilterName

Указывает имя исходного фильтра.

[out] ppFilter

Получает указатель на интерфейс фильтра IBaseFilter . Вызывающий объект должен освободить интерфейс .

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

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

Код возврата Описание
S_OK
Успешно.
E_NOINTERFACE
Фильтр источника не поддерживает интерфейс IFileSourceFilter .
E_OUTOFMEMORY
Недостаточно памяти.
E_POINTER
Аргумент указателя NULL.
VFW_E_CANNOT_LOAD_SOURCE_FILTER
Не удалось загрузить исходный фильтр для этого файла.
VFW_E_NOT_FOUND
Файл или объект не найден.
VFW_E_UNKNOWN_FILE_TYPE
Тип носителя этого файла не распознался.

Комментарии

Этот метод выполняет поиск установленного фильтра, который может считывать указанный файл. Если он находит его, метод добавляет его в граф фильтра и возвращает указатель на интерфейс фильтра IBaseFilter . Чтобы определить тип носителя и схему сжатия файла, диспетчер фильтров графов считывает первые несколько байтов файла и ищет конкретные шаблоны байтов, как описано в статье Регистрация настраиваемого типа файла.

Приложение отвечает за построение остальной части графа фильтра. Для этого вызовите IBaseFilter::EnumPins , чтобы перечислить выходные контакты в исходном фильтре. Затем используйте метод IGraphBuilder::Connect или метод IGraphBuilder::Render .

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

Чтобы отобразить файл для воспроизведения по умолчанию, используйте метод IGraphBuilder::RenderFile .

Диспетчер графов фильтров содержит счетчик ссылок в фильтре до тех пор, пока фильтр не будет удален из графа или пока диспетчер фильтров графов не будет освобожден.

Требования

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

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

Коды ошибок и успешности

Интерфейс IGraphBuilder