Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Węzeł źródłowy reprezentuje jeden strumień ze źródła multimediów. Węzeł źródłowy musi zawierać wskaźniki do źródła multimediów, deskryptora prezentacji i deskryptora strumienia.
Aby dodać węzeł źródłowy do topologii, wykonaj następujące czynności:
- Wywołaj MFCreateTopologyNode z flagą MF_TOPOLOGY_SOURCESTREAM_NODE, aby utworzyć węzeł źródłowy.
- Ustaw atrybut MF_TOPONODE_SOURCE na węźle, wskazując na źródło multimedialne.
- Ustaw atrybut MF_TOPONODE_PRESENTATION_DESCRIPTOR w węźle ze wskaźnikiem na deskryptor prezentacji źródła multimediów.
- Ustaw atrybut MF_TOPONODE_STREAM_DESCRIPTOR na węźle ze wskaźnikiem na deskryptor strumienia.
- Wywołaj IMFTopology::AddNode, aby dodać węzeł do topologii.
Poniższy przykład tworzy i inicjuje węzeł źródłowy.
// 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;
}
Tematy pokrewne