Bagikan melalui


Membuat Simpul Sumber

Simpul sumber mewakili satu aliran dari sumber media. Simpul sumber harus berisi penunjuk ke sumber media, deskriptor presentasi, dan deskriptor aliran.

Untuk menambahkan simpul sumber ke topologi, lakukan hal berikut:

  1. Panggil MFCreateTopologyNode dengan bendera MF_TOPOLOGY_SOURCESTREAM_NODE untuk membuat simpul sumber.
  2. Atur atribut MF_TOPONODE_SOURCE pada simpul, dengan penunjuk ke sumber media.
  3. Atur atribut MF_TOPONODE_PRESENTATION_DESCRIPTOR pada simpul, dengan penunjuk ke deskriptor presentasi sumber media.
  4. Atur atribut MF_TOPONODE_STREAM_DESCRIPTOR pada simpul, dengan penunjuk ke deskriptor aliran untuk aliran.
  5. Panggil IMFTopology::AddNode untuk menambahkan simpul ke topologi.

Contoh berikut membuat dan menginisialisasi simpul sumber.

// 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;
}

Membuat Topologi

Sumber Media

Topologi

IMFTopologyNode