CPosPassThru-Klasse

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 Filter Graph Manager den Suchbefehl an die Rendererfilter weiter. 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 nach. Die CPosPassThru -Klasse übergibt alle Suchbefehle an den Ausgabepin im Upstreamfilter, wie im folgenden Diagramm dargestellt.

Die cpospassthru-Klasse sendet seek-Befehle upstream.

Obwohl diese Klasse in der Basisklassenbibliothek bereitgestellt wird, stellt DirectShow auch die gleiche 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 Ihres Ausgabepins immer dann an das CPosPassThru-Objekt, wenn die angeforderte Schnittstelle IMediaSeeking oder IMediaPositionist, 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 anders angegeben, rufen alle IMediaPosition- und IMediaSeeking-Methoden in dieser Klasse die entsprechende Methode auf dem verbundenen Pin auf und geben das Ergebnis zurück.

Öffentliche Methoden BESCHREIBUNG
CPosPassThru Konstruktormethode.
ForceRefresh Veraltet.
GetMediaTime Ruft die Zeitstempel für das aktuelle Beispiel ab. Virtuellen.
IMediaPosition-Methoden BESCHREIBUNG
get _ Duration Ruft die Dauer des Streams ab.
_put CurrentPosition Legt die aktuelle Position relativ zur Gesamtdauer des Streams fest.
_get StopTime Ruft die Zeit ab, zu der die Wiedergabe beendet wird, relativ zur Dauer des Streams.
_put StopTime Legt die Zeit fest, zu der die Wiedergabe beendet wird, relativ zur Dauer des Streams.
_PrerollTime abrufen 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 Streams ab.
CanSeekForward Bestimmt, ob der Stream rückwärts gesucht werden kann.
CanSeekBackward Bestimmt, ob der Stream weitergeleitet 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 Zeitbereich ab, in dem Suchfunktionen effizient sind.
GetCapabilities Ruft alle Suchfunktionen des Streams ab.
GetCurrentPosition Ruft die aktuelle Position relativ zur Gesamtdauer des Streams ab.
GetDuration Ruft die Dauer des Streams ab.
GetPositions Ruft die aktuelle Position und die Stoppposition relativ zur Gesamtdauer des Streams ab.
GetPreroll Ruft die Datenmenge ab, die vor der Startposition in die Warteschlange eingereiht wird.
GetRate Ruft die Wiedergaberate ab.
GetStopPosition Ruft die Zeit ab, zu der die Wiedergabe beendet wird, relativ zur Dauer des Streams.
GetTimeFormat Ruft das aktuelle Zeitformat ab.
IsFormatSupported Bestimmt, ob ein angegebenes Zeitformat unterstützt wird.
IsUsingTimeFormat Bestimmt, ob ein angegebenes Zeitformat das derzeit 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 CPosPassThru - oder -CRendererPosPassThru-Objekt.

Requirements (Anforderungen)

Anforderung Wert
Header
Ctlutil.h (include Streams.h)
Bibliothek
Strmbase.lib (Verkaufsbuilds);
Strmbasd.lib (Debugbuilds)