Bagikan melalui


Kelas CRefTime

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan 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 Pengambilan Audio/Video 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 creftime

Kelas CRefTime adalah kelas pembantu untuk mengelola waktu referensi.

Waktu referensi adalah satuan waktu yang diwakili dalam unit 100 nanodetik. Kelas ini memiliki tata letak data yang sama dengan jenis data REFERENCE_TIME , tetapi menambahkan beberapa metode dan operator yang menyediakan fungsi perbandingan, konversi, dan aritmatika. Untuk informasi selengkapnya tentang waktu referensi, lihat Waktu dan Jam di DirectShow.

Variabel Anggota Publik Deskripsi
m_time Menentukan nilai REFERENCE_TIME .
Metode Publik Deskripsi
CRefTime Metode konstruktor.
GetUnits Mengambil waktu referensi dalam unit 100-nanodetik.
Milidetik Mengonversi waktu referensi menjadi milidetik.
Operator Deskripsi
operator REFERENCE_TIME() Melemparkan objek ke jenis data REFERENCE_TIME .
operator= Menetapkan waktu referensi baru.
operator+= Menambahkan dua kali referensi.
operator = Mengurangi satu waktu referensi dari waktu lainnya.

Keterangan

Ada potensi perangkap dengan menggunakan kelas ini. Jika Anda menerapkan operator += dengan objek CRefTime sebagai operand kiri dan variabel jenis LONG sebagai pengoperasi kanan, pengkompilasi akan secara implisit memaksa operand kanan ke dalam objek CRefTime . Koersi ini menggunakan konstruktor CRefTime yang mengonversi milidetik menjadi unit REFERENCE_TIME; akibatnya, operand kanan dikalikan dengan 10.000:

CRefTime rt;   // rt.m_time is 0.
LONG val = 20;
rt += val;    // Coerce val to CRefTime, rt.m_time is now 200,000.

Namun, hal yang sama tidak terjadi menggunakan operator + :

CRefTime rt;   // rt.m_time is 0.
LONG val = 20;
rt = rt + val; // CRefTime, rt.m_time is 20.

Persyaratan

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