[與此頁面 相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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) |
程式庫 |
Strmiids.lib |
另請參閱
錯誤和成功碼
IStreamBuilder 介面