Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un nodo de origen representa una secuencia de un origen multimedia. El nodo de origen debe contener punteros al origen multimedia, al descriptor de presentación y al descriptor de secuencia.
Para agregar un nodo de origen a una topología, haga lo siguiente:
- Llame a MFCreateTopologyNode con la marca MF_TOPOLOGY_SOURCESTREAM_NODE para crear el nodo de origen.
- Establezca el atributo MF_TOPONODE_SOURCE en el nodo, con un puntero al origen multimedia.
- Establezca el atributo MF_TOPONODE_PRESENTATION_DESCRIPTOR en el nodo, con un puntero al descriptor de presentación del origen multimedia.
- Establezca el atributo MF_TOPONODE_STREAM_DESCRIPTOR en el nodo, con un puntero al descriptor de secuencia para la secuencia.
- Llame a IMFTopology::AddNode para agregar el nodo a la topología.
En el ejemplo siguiente se crea e inicializa un nodo de origen.
// 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;
}
Temas relacionados