Bagikan melalui


Jam Induk

Minidriver dapat menyinkronkan aliran data ke pengukur waktu yang dibuat oleh minidriver lain; beberapa aliran data dapat disinkronkan ke satu pengukur waktu. Jika pin menggunakan atau menghasilkan jam master seperti itu, minidriver harus mendukung KSPROPERTY_STREAM_MASTERCLOCK. Klien juga dapat menggunakan properti ini untuk mengatur jam master untuk pin. Pin yang melakukan operasi rendering dan capturing sering menggunakan jam master. Minidriver bertanggung jawab untuk merilis referensi jam setelah penghentian.

Antarmuka ke jam master adalah objek file yang mendukung metode, properti, dan peristiwa.

Semua kueri terhadap objek file hanya tersedia di PASSIVE_LEVEL. Namun, kueri posisi jam juga didukung melalui penunjuk panggilan fungsi langsung yang tersedia di DISPATCH_LEVEL, yang valid selama objek file valid. Panggilan langsung ini harus diteruskan ke objek file jam sebagai parameter konteks.

Pegangan file diperoleh melalui permintaan pembuatan pada instans pin filter, seperti halnya pembuatan pin dilakukan oleh IRP_MJ_CREATE. Permintaan ini menyebabkan pegangan berkas dibuat, sama seperti pegangan berkas ke pin yang dibuat, dengan informasi konteksnya sendiri. Handel file ini kemudian diteruskan kembali ke pemanggil dan dapat digunakan untuk mengatur jam master untuk filter mode kernel. Pada saat filter diberi jam master grafik, instans pin dapat meminta objek file induk untuk menentukan apakah ia memiliki jam master.

Ketika filter diberikan handle file untuk jam master ini, filter kemudian dapat digunakan untuk meminta properti. Jika jam master didasarkan pada filter mode kernel, jam tersebut harus mendukung antarmuka untuk mengkueri handel file ke bagian mode kernel dari jam master. Jika antarmuka tidak didukung, maka diasumsikan bahwa jam berbasis mode pengguna, dan filter mode kernel tidak dapat disinkronkan ke antarmuka tersebut.

Filter proksi DirectShow yang meminta pegangan jam utama kemudian meneruskannya ke pegangan berkas filter mode kernel dasar. Filter kernel mode memreferensikan objek file yang mendasar. Jika filter sudah memiliki jam master, filter akan menghapus referensi dari objek file dan menggunakan handle baru. Untuk melakukan ini, filter harus dalam status Berhenti.

Waktu fisik pada objek jam master sering kali berbasis perangkat keras. Jika filter yang menyajikan jam master tidak memiliki jam fisik, maka waktu streaming berlangsung sesuai dengan stempel waktu data yang disajikan. Dalam situasi seperti itu, stempel waktu dapat berhenti karena kurangnya data.

Waktu fisik di belakang jam utama mungkin dari jarak jauh, dalam hal ini adalah tanggung jawab proksi lokal untuk memberikan pembacaan waktu yang akurat. Misalnya, proksi memiliki tanggung jawab untuk mengimbangi penundaan di seluruh koneksi 1394, atau rata-rata penundaan di seluruh jaringan. Selain itu, jika beberapa filter kernel lainnya adalah proksi untuk perangkat kedua pada bus 1394 yang sama, kedua perangkat dapat menegosiasikan metode privat untuk berinteraksi dengan jam master. Dalam kasus seperti itu, perangkat harus menggunakan antarmuka privat untuk menentukan jenis jam untuk memverifikasi kompatibilitas.