[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 Render
完成源自此引脚的流的呈现。 这可能需要将筛选器添加到筛选器图并连接它们。
语法
HRESULT Render(
[in] IPin *ppinOut,
[in] IGraphBuilder *pGraph
);
参数
[in] ppinOut
指向此引脚的 IPin 接口的指针。
[in] pGraph
指向筛选器关系图管理器的 IGraphBuilder 接口的指针。
返回值
返回 HRESULT 值。 S_OK的返回代码指示已成功呈现流。
以下代码演示如何在输出引脚上实现此方法。 此示例假定筛选器需要从其下游获取自定义呈现器。
C++ |
STDMETHODIMP CMyOutputPin::Render(IPin *pPin, IGraphBuilder *pGraph)
{
CheckPointer(pPin, E_POINTER);
CheckPointer(pGraph, E_POINTER);
// This filter needs a special renderer connected to it.
IBaseFilter *pMyRenderer = NULL;
// Create the renderer.
HRESULT hr = CoCreateInstance(CLSID_MyRenderer, NULL, CLSCTX_INPROC,
IID_IBaseFilter, (void **)&pMyRenderer);
if (FAILED(hr))
{
return hr;
}
// Add my renderer to the filter graph.
hr = pGraph->AddFilter(pMyRenderer, L"My Renderer");
if (FAILED(hr))
{
pMyRenderer->Release();
return hr;
}
IEnumPins *pEnumPins;
IPin *pMyRendererInputPin = NULL;
hr = pMyRenderer->EnumPins(&pEnumPins);
if (SUCCEEDED(hr))
{
if (S_OK != pEnumPins->Next(1, &pMyRendererInputPin, 0))
{
hr = E_UNEXPECTED;
}
}
if (SUCCEEDED(hr))
{
// Connect my renderer to my output pin.
hr = pGraph->ConnectDirect(pPin, pMyRendererInputPin);
pMyRendererInputPin->Release();
}
if (FAILED(hr))
{
// Could not connect to my renderer. Remove it from the graph.
pGraph->RemoveFilter(pMyRenderer);
}
pMyRenderer->Release();
return hr;
}
|
要求
要求 |
值 |
最低受支持的客户端 |
Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 |
Windows 2000 Server [仅限桌面应用] |
目标平台 |
Windows |
标头 |
strmif.h (包括 Dshow.h) |
Library |
Strmiids.lib |
另请参阅
错误和成功代码
IStreamBuilder 接口