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.]
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.
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 CPosPassThru CRendererPosPassThru-Objekt . |
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|