共用方式為


建立來源節點

來源節點代表來自媒體來源的一個數據流。 來源節點必須包含媒體來源、簡報描述元和數據流描述元的指標。

若要將來源節點新增至拓撲,請執行下列動作:

  1. 使用 MF_TOPOLOGY_SOURCESTREAM_NODE 旗標呼叫 MFCreateTopologyNode,以建立來源節點。
  2. 設定節點上的 MF_TOPONODE_SOURCE 屬性,並指向媒體來源。
  3. 在節點上設定 MF_TOPONODE_PRESENTATION_DESCRIPTOR 屬性,並將指標指向媒體來源的簡報描述元。
  4. 在節點上設定 MF_TOPONODE_STREAM_DESCRIPTOR 屬性,並將指標指向數據流的數據流描述元。
  5. 呼叫 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;
}

建立拓撲

媒體來源

拓撲

IMFTopologyNode