Delen via


Bronknooppunten maken

Een bronknooppunt vertegenwoordigt één stroom van een mediabron. Het bronknooppunt moet aanwijzers bevatten naar de mediabron, de presentatiedescriptor en de streamdescriptor.

Ga als volgt te werk om een bronknooppunt toe te voegen aan een topologie:

  1. Roep MFCreateTopologyNode aan met de vlag MF_TOPOLOGY_SOURCESTREAM_NODE om het bronknooppunt te maken.
  2. Stel het kenmerk MF_TOPONODE_SOURCE op het knooppunt in, met een aanwijzer naar de mediabron.
  3. Stel het kenmerk MF_TOPONODE_PRESENTATION_DESCRIPTOR op het knooppunt in, met een aanwijzer naar de presentatiedescriptor van de mediabron.
  4. Stel het kenmerk MF_TOPONODE_STREAM_DESCRIPTOR op het knooppunt in, met een aanwijzer naar de streamdescriptor voor de stream.
  5. Roep IMFTopology aan:AddNode om het knooppunt toe te voegen aan de topologie.

In het volgende voorbeeld wordt een bronknooppunt gemaakt en geïnitialiseerd.

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

Topologieën maken

Mediabronnen

Topologieën

IMFTopologyNode