CBaseStreamControl.SetFilterGraph 方法

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 SetFilterGraph 指定流控制事件的事件接收器。

语法

void SetFilterGraph(
   IMediaEventSink *pSink
);

参数

pSink

指向筛选器关系图管理器的 IMediaEventSink 接口的指针,或当筛选器离开筛选器图时为 NULL

返回值

此方法不返回值。

备注

从筛选器的 IBaseFilter::JoinFilterGraph 方法内部调用此方法。 CBaseStreamControl 类使用 IMediaEventSink 接口发送EC_STREAM_CONTROL_STARTEDEC_STREAM_CONTROL_STOPPED事件。

如果筛选器派生自 CBaseFilter,请首先调用 CBaseFilter::JoinFilterGraph 方法,该方法设置 CBaseFilter::m_pSink 成员变量。 然后将 m_pSink 传递给 SetFilterGraph 方法。 请注意,当筛选器离开图形时, m_pSinkNULL ,这是正确的。

示例

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 类