建立來源節點
來源節點代表來自媒體來源的一個資料流程。 來源節點必須包含媒體來源、簡報描述項和資料流程描述元的指標。
若要將來源節點新增至拓撲,請執行下列動作:
- 使用MF_TOPOLOGY_SOURCESTREAM_NODE旗標呼叫MFCreateTopologyNode,以建立來源節點。
- 使用媒體來源的指標,在節點上設定 MF_TOPONODE_SOURCE 屬性。
- 在節點上設定 MF_TOPONODE_PRESENTATION_DESCRIPTOR 屬性,並使用媒體來源之簡報描述元的指標。
- 使用資料流程描述元的指標,在節點上設定 MF_TOPONODE_STREAM_DESCRIPTOR 屬性。
- 呼叫 IMFTopology::AddNode ,將節點新增至拓撲。
下列範例會建立並初始化來源節點。
// Add a source node to a topology.
HRESULT AddSourceNode(
IMFTopology *pTopology, // Topology.
IMFMediaSource *pSource, // Media source.
IMFPresentationDescriptor *pPD, // Presentation descriptor.
IMFStreamDescriptor *pSD, // Stream descriptor.
IMFTopologyNode **ppNode) // Receives the node pointer.
{
IMFTopologyNode *pNode = NULL;
// Create the node.
HRESULT hr = MFCreateTopologyNode(MF_TOPOLOGY_SOURCESTREAM_NODE, &pNode);
if (FAILED(hr))
{
goto done;
}
// Set the attributes.
hr = pNode->SetUnknown(MF_TOPONODE_SOURCE, pSource);
if (FAILED(hr))
{
goto done;
}
hr = pNode->SetUnknown(MF_TOPONODE_PRESENTATION_DESCRIPTOR, pPD);
if (FAILED(hr))
{
goto done;
}
hr = pNode->SetUnknown(MF_TOPONODE_STREAM_DESCRIPTOR, pSD);
if (FAILED(hr))
{
goto done;
}
// Add the node to the topology.
hr = pTopology->AddNode(pNode);
if (FAILED(hr))
{
goto done;
}
// Return the pointer to the caller.
*ppNode = pNode;
(*ppNode)->AddRef();
done:
SafeRelease(&pNode);
return hr;
}
相關主題