CBaseReferenceClock-Klasse
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
Die CBaseReferenceClock
-Klasse implementiert eine Referenzuhr.
Geschützte Membervariablen | BESCHREIBUNG |
---|---|
m_pSchedule | CAMSchedule-Objekt , das Planungsaufgaben für die Uhr verarbeitet. |
Geschützte Methoden | BESCHREIBUNG |
~CBaseReferenceClock | Destruktormethode. |
Öffentliche Methoden | BESCHREIBUNG |
CBaseReferenceClock | Konstruktormethode. |
GetPrivateTime | Ruft die Echtzeit von der Uhr ab. |
SetTimeDelta | Passt die interne Uhrzeit an. |
GetSchedule | Ruft einen Zeiger auf das Zeitplanungsobjekt der Uhr ab. |
TriggerThread | Aktiviert den Workerthread, der die Planung übernimmt. |
IReferenceClock-Methoden | BESCHREIBUNG |
GetTime | Ruft die aktuelle Referenzzeit ab. |
AdviseTime | Erstellt eine One-Shot-Empfehlungsanforderung. |
AdvisePeriodic | Erstellt eine regelmäßige Empfehlungsanforderung. |
Unadvise | Entfernt eine ausstehende Empfehlungsanforderung. |
IReferenceClockTimerControl-Methoden | BESCHREIBUNG |
GetDefaultTimerResolution | Gibt die aktuelle Auflösung des Timers der Referenzuhr zurück. |
SetDefaultTimerResolution | Legt die Auflösung des Timers der Referenzuhr fest. |
Hilfsfunktionen | BESCHREIBUNG |
ConvertToMillisekunden | Konvertiert eine Referenzzeit in Millisekunden. |
Bemerkungen
Diese Klasse implementiert eine Referenzuhr, die die Schnittstellen IReferenceClock und IReferenceClockTimerControl unterstützt. Wenn ein Filter beispielsweise eine Referenzuhr für das Filterdiagramm bereitstellen kann, kann er mithilfe dieser Klasse die Uhr implementieren, indem er auf ein Hardwaregerät zugreift.
Das CBaseReferenceClock
-Objekt behält zwei unterschiedliche Zeitwerte bei:
- Intern gibt die CBaseReferenceClock::GetPrivateTime-Methode die tatsächliche Zeit zurück, die von der Uhr beibehalten wird.
- Extern gibt die CBaseReferenceClock::GetTime-Methode die Referenzzeit für das Filterdiagramm zurück.
Es ist gültig, dass die interne Uhr über kurze Zeiträume rückwärts läuft. Wenn die Uhr beispielsweise nach vorne driftet, kann der Filter sie rückwärts anpassen. (Siehe CBaseReferenceClock::SetTimeDelta.) Die GetTime-Methode verwendet die von GetPrivateTime gemeldeten Zeitwerte. Die Referenzzeit nimmt jedoch monoton zu; Mit anderen Worten, es wird nie rückwärts ausgeführt. Wenn die interne Uhr daher rückwärts läuft, meldet GetTime weiterhin die alte Zeit, bis die interne Uhr aufgeholt wird.
Die beiden Methoden können beispielsweise die folgenden Sequenzen zurückgeben:
GetPrivateTime: 105, 106, 103, 104, 105, 106, 107, 108
GetTime: 105, 106, 106, 106, 106, 106, 107, 108
Beim dritten Takt springt die interne Uhr rückwärts auf 103. Die GetTime-Methode meldet weiterhin 106, bis die interne Uhr aufgeholt wird.
Standardmäßig gibt GetPrivateTime die Systemzeit über einen Aufruf der timeGetTime-Funktion zurück. Ein Filter, der eine Referenzuhr von einem externen Gerät bereitstellt, kann eine der folgenden Aktionen ausführen:
- Überschreiben Sie GetPrivateTime , um die Uhrzeit vom Gerät zurückzugeben.
- Überwachen Sie die Diskrepanz zwischen der Gerätezeit und der Systemzeit, und rufen Sie SetTimeDelta auf, um Korrekturen vorzunehmen.
Diese Klasse verwendet ein CAMSchedule-Objekt , um die Planung von Empfehlungsanforderungen zu verarbeiten. Ausführliche Informationen finden Sie in der Dokumentation zur CAMSchedule-Klasse .
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|