Метод CBaseStreamControl.SetFilterGraph
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Метод SetFilterGraph
задает приемник событий для событий управления потоком.
Синтаксис
void SetFilterGraph(
IMediaEventSink *pSink
);
Параметры
-
pSink
-
Указатель на интерфейс IMediaEventSink диспетчера фильтров или значение NULL , когда фильтр покидает граф фильтра.
Возвращаемое значение
Этот метод не возвращает значение.
Комментарии
Вызовите этот метод из метода IBaseFilter::JoinFilterGraph фильтра. Класс CBaseStreamControl использует интерфейс IMediaEventSink для отправки событий EC_STREAM_CONTROL_STARTED и EC_STREAM_CONTROL_STOPPED .
Если фильтр является производным от CBaseFilter, сначала вызовите метод CBaseFilter::JoinFilterGraph , который задает переменную-член CBaseFilter::m_pSink . Затем передайте m_pSink в SetFilterGraph
метод . Обратите внимание, что m_pSink имеет значение NULL , когда фильтр покидает граф, что правильно.
Примеры
STDMETHODIMP CMyFilter::JoinFilterGraph(IFilterGraph * pGraph, LPCWSTR pName)
{
// Note: It's OK if pGraph is NULL.
HRESULT hr = CBaseFilter::JoinFilterGraph(pGraph, pName);
if (SUCCEEDED(hr))
{
m_pMyPin->SetFilterGraph(m_pSink);
}
return hr;
}
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|