Bagikan melalui


Kelas CBaseReferenceClock

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Hierarki kelas cbasereferenceclock

Kelas CBaseReferenceClock mengimplementasikan jam referensi.

Variabel Anggota yang Dilindungi Deskripsi
m_pSchedule Objek CAMSchedule yang menangani tugas penjadwalan untuk jam.
Metode yang Dilindungi Deskripsi
~CBaseReferenceClock Metode destruktor.
Metode Publik Deskripsi
CBaseReferenceClock Metode konstruktor.
GetPrivateTime Mengambil real time dari jam.
SetTimeDelta Menyesuaikan waktu jam internal.
GetSchedule Mengambil penunjuk ke objek penjadwalan jam.
TriggerThread Membangunkan utas pekerja yang menangani penjadwalan.
Metode IReferenceClock Deskripsi
GetTime Mengambil waktu referensi saat ini.
AdviseTime Membuat permintaan saran satu bidikan.
AdvisePeriodic Membuat permintaan saran berkala.
Tidak diawasi Menghapus permintaan saran yang tertunda.
Metode IReferenceClockTimerControl Deskripsi
GetDefaultTimerResolution Mengembalikan resolusi timer jam referensi saat ini.
SetDefaultTimerResolution Mengatur resolusi timer jam referensi.
Fungsi Pembantu Deskripsi
ConvertToMilliseconds Mengonversi waktu referensi menjadi milidetik.

Keterangan

Kelas ini mengimplementasikan jam referensi yang mendukung antarmuka IReferenceClock dan IReferenceClockTimerControl . Jika filter dapat menyediakan jam referensi untuk grafik filter misalnya, dengan mengakses perangkat keras, filter dapat menggunakan kelas ini untuk mengimplementasikan jam.

Objek CBaseReferenceClock mempertahankan dua nilai waktu yang berbeda:

Hal ini berlaku untuk jam internal untuk berjalan mundur selama periode singkat. Misalnya, jika jam melayang ke depan, filter dapat menyesuaikannya mundur. (Lihat CBaseReferenceClock::SetTimeDelta.) Metode GetTime menggunakan nilai waktu yang dilaporkan oleh GetPrivateTime. Namun, waktu referensi meningkat secara monoton; dengan kata lain, itu tidak pernah berjalan mundur. Oleh karena itu, jika jam internal berjalan mundur, GetTime terus melaporkan waktu lama sampai jam internal mengejar ketinggalan.

Misalnya, dua metode mungkin mengembalikan urutan berikut:

GetPrivateTime: 105, 106, 103, 104, 105, 106, 107, 108
GetTime:        105, 106, 106, 106, 106, 106, 107, 108

Pada jam ketiga, jam internal melompat mundur ke 103. Metode GetTime terus melaporkan 106 hingga jam internal mengejar ketinggalan.

Secara default, GetPrivateTime mengembalikan waktu sistem, melalui panggilan ke fungsi timeGetTime . Filter yang menyediakan jam referensi dari perangkat eksternal dapat melakukan salah satu hal berikut ini:

  • Ambil alih GetPrivateTime untuk mengembalikan waktu dari perangkat.
  • Pantau perbedaan antara waktu perangkat dan waktu sistem, dan panggil SetTimeDelta untuk melakukan koreksi.

Kelas ini menggunakan objek CAMSchedule untuk menangani penjadwalan permintaan saran. Untuk detailnya, lihat dokumentasi untuk kelas CAMSchedule .

Persyaratan

Persyaratan Nilai
Header
Refclock.h (termasuk Streams.h)
Pustaka
Strmbase.lib (build ritel);
Strmbasd.lib (build debug)