Freigeben über


CBaseStreamControl.SetFilterGraph-Methode

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Die SetFilterGraph -Methode gibt die Ereignissenke für Streamsteuerungsereignisse an.

Syntax

void SetFilterGraph(
   IMediaEventSink *pSink
);

Parameter

pSink

Zeiger auf die IMediaEventSink-Schnittstelle des Filtergraph-Managers oder NULL , wenn der Filter das Filterdiagramm verlässt.

Rückgabewert

Diese Methode gibt keinen Wert zurück.

Bemerkungen

Rufen Sie diese Methode innerhalb der IBaseFilter::JoinFilterGraph-Methode des Filters auf. Die CBaseStreamControl-Klasse verwendet die IMediaEventSink-Schnittstelle , um EC_STREAM_CONTROL_STARTED und EC_STREAM_CONTROL_STOPPED Ereignisse zu senden.

Wenn Ihr Filter von CBaseFilter abgeleitet wird, rufen Sie zuerst die CBaseFilter::JoinFilterGraph-Methode auf, die die CBaseFilter:: m_pSink-Membervariable festlegt. Übergeben Sie dann m_pSink an die SetFilterGraph -Methode. Beachten Sie, dass m_pSinkNULL ist, wenn der Filter das Diagramm verlässt. Dies ist richtig.

Beispiele

STDMETHODIMP CMyFilter::JoinFilterGraph(IFilterGraph * pGraph, LPCWSTR pName)
{
    // Note: It's OK if pGraph is NULL.

    HRESULT hr = CBaseFilter::JoinFilterGraph(pGraph, pName);
    if (SUCCEEDED(hr)) 
    {
        m_pMyPin->SetFilterGraph(m_pSink);
    }
    return hr;
}

Anforderungen

Anforderung Wert
Header
Strmctl.h (Einschließen von Streams.h)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)

Siehe auch

CBaseStreamControl-Klasse