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


Метод 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;
}

Требования

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

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

Класс CBaseStreamControl