CPosPassThru-Klasse

[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.]

cpospassthru-Basisklassenhierarchie

Die CPosPassThru -Klasse verarbeitet Suchbefehle für Transformationsfilter, indem sie sie Upstream an den nächsten Filter übergibt.

Wenn eine Anwendung den Filtergraphen sucht, gibt der Filtergraph-Manager den Befehl seek an die Rendererfilter. Der Befehl wird Upstream über den Ausgabepin jedes Filters übergeben, bis er einen Filter erreicht, der den Befehl ausführen kann (falls vorhanden). Weitere Informationen finden Sie unter Suchen. Die CPosPassThru -Klasse übergibt alle seek-Befehle an den Ausgabepin auf dem Upstream Filter, wie im folgenden Diagramm dargestellt.

die cpospassthru-Klasse sendet seek-Befehle Upstream.

Obwohl diese Klasse in der Basisklassenbibliothek bereitgestellt wird, stellt DirectShow auch dieselbe Klasse in Quartz.dll bereit. Die Verwendung der Quartz.dll Version kann die Codegröße im Filter etwas reduzieren, da die -Klasse zur Laufzeit aus der DLL geladen wird. Um diese Version zu verwenden, rufen Sie die CreatePosPassThru-Funktion auf.

Delegieren Sie in der NonDelegatingQueryInterface-Methode des Ausgabepins an das CPosPassThru-Objekt , wenn die angeforderte Schnittstelle IMediaSeeking oder IMediaPosition ist, wie im folgenden Code gezeigt:

// The following member variables are assumed:
IPin *m_pInput;    // Pointer to the input pin on your filter.
IUnknown *m_pPos;  // Pointer to the CPosPassThru object.

STDMETHODIMP CMyPin::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
    HRESULT hr
    if (riid == IID_IMediaPosition || riid == IID_IMediaSeeking) 
    {
        if (m_pPos == NULL) 
        {
            // We have not created the CPosPassThru object yet. Do so now.
            hr = CreatePosPassThru(GetOwner(), FALSE, m_pInput, &m_pPos);
            if (FAILED(hr)) return hr;
        }
        return m_pPos->QueryInterface(riid, ppv);
    } 
    else
    {
         // Other interfaces (not shown).
    }
}

~CMyPin::CMyPin() 
{
    // Release the CPosPassThruObject.
    if (m_pPos != NULL) m_pPos->Release();
}

Sofern nicht angegeben, rufen alle IMediaPosition - und IMediaSeeking-Methoden in dieser Klasse die entsprechende Methode für den verbundenen Pin auf und geben das Ergebnis zurück.

Öffentliche Methoden BESCHREIBUNG
CPosPassThru Konstruktormethode.
ForceRefresh Veraltet.
GetMediaTime Ruft die Zeitstempel im aktuellen Beispiel ab. Virtuellen.
IMediaPosition-Methoden BESCHREIBUNG
get_Duration Ruft die Dauer des Datenstroms ab.
put_CurrentPosition Legt die aktuelle Position relativ zur Gesamtdauer des Datenstroms fest.
get_StopTime Ruft den Zeitpunkt ab, zu dem die Wiedergabe beendet wird, relativ zur Dauer des Datenstroms.
put_StopTime Legt den Zeitpunkt fest, zu dem die Wiedergabe beendet wird, relativ zur Dauer des Datenstroms.
get_PrerollTime Ruft die Datenmenge ab, die vor der Startposition in die Warteschlange eingereiht wird.
put_PrerollTime Legt die Datenmenge fest, die vor der Startposition in die Warteschlange eingereiht wird.
get_Rate Ruft die Wiedergaberate ab.
put_Rate Legt die Wiedergaberate fest.
get_CurrentPosition Ruft die aktuelle Position relativ zur Gesamtdauer des Datenstroms ab.
CanSeekForward Bestimmt, ob der Stream rückwärts gesucht werden kann.
CanSeekBackward Bestimmt, ob der Stream vorwärts gesucht werden kann.
IMediaSeeking-Methoden BESCHREIBUNG
CheckCapabilities Fragt ab, ob ein Stream über angegebene Suchfunktionen verfügt.
ConvertTimeFormat Konvertiert von einem Zeitformat in ein anderes.
GetAvailable Ruft den Zeitraum ab, in dem die Suche effizient ist.
GetCapabilities Ruft alle Suchfunktionen des Datenstroms ab.
GetCurrentPosition Ruft die aktuelle Position relativ zur Gesamtdauer des Datenstroms ab.
GetDuration Ruft die Dauer des Datenstroms ab.
GetPositions Ruft die aktuelle Position und die Stoppposition relativ zur Gesamtdauer des Datenstroms ab.
GetPreroll Ruft die Datenmenge ab, die vor der Startposition in die Warteschlange eingereiht wird.
GetRate Ruft die Wiedergaberate ab.
GetStopPosition Ruft den Zeitpunkt ab, zu dem die Wiedergabe beendet wird, relativ zur Dauer des Datenstroms.
GetTimeFormat Ruft das aktuelle Zeitformat ab.
IsFormatSupported Bestimmt, ob ein angegebenes Zeitformat unterstützt wird.
IsUsingTimeFormat Bestimmt, ob ein angegebenes Zeitformat das aktuell verwendete Format ist.
QueryPreferredFormat Ruft das bevorzugte Zeitformat für den Stream ab.
SetPositions Legt die aktuelle Position und die Stoppposition fest.
SetRate Legt die Wiedergaberate fest.
SetTimeFormat Legt das Zeitformat fest.
Hilfsfunktionen BESCHREIBUNG
CreatePosPassThru Erstellt ein -Objekt oder ein CPosPassThruCRendererPosPassThru-Objekt .

Anforderungen

Anforderung Wert
Header
Ctlutil.h (Streams.h einschließen)
Bibliothek
Strmbase.lib (Einzelhandelsbuilds);
Strmbasd.lib (Debugbuilds)