CBaseStreamControl.SetFilterGraph 方法
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 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;
}
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|