Sungguh menakjubkan betapa banyak dokumentasi Anda dapat menemukan untuk Video4Linux2 - dan tidak ada yang benar-benar menjelaskan apa Video4Linux adalah .
Pertama, Video4Linux2 adalah kerangka kerja driver Linux . Driver framework sebenarnya tidak mengontrol perangkat secara langsung. Sebagai gantinya, mereka menyediakan model abstrak dari beberapa kelas perangkat, dalam hal ini perangkat video untuk digunakan aplikasi. Kerangka kerja pengemudi memberikan tiga manfaat utama:
- Menyediakan API terpadu untuk aplikasi yang dapat digunakan dengan berbagai perangkat fisik, baik yang terhubung dengan USB, PCIe, MIPI, Ethernet atau jenis bus transportasi data lainnya
- Dalam kernel, frameworks berisi jenis kode yang dibutuhkan di hampir semua driver perangkat dari kelas tertentu, sehingga sangat mengurangi volume kode yang berbeda.
- Di kernel, frameworks menyediakan cetak biru untuk menulis driver level bawah baru yang sebenarnya mengendalikan perangkat keras, sehingga menyederhanakan pengembangan driver.
Jadi, driver V4L2 adalah driver tingkat tinggi yang menggerakkan driver UVC, yang menggerakkan driver USB yang mungkin mengendarai driver perangkat keras yang bahkan lebih rendah.
Model Matryoshka ini sangat umum di pohon driver kernel Linux. V4L2 adalah salah satu contoh yang lebih kompleks karena beberapa perangkat kamera memerlukan akses kelompok besar sub-perangkat dalam beberapa lapisan yang mengontrol kamera dan merutekan output kamera di antara berbagai komponen seperti pengolah gambar.
Anda masih dapat mengakses driver UVC langsung dari userspace menggunakan file perangkat dan panggilan sistem "ioctl", tanpa melalui driver V4L2, dan Anda masih dapat mengakses driver USB yang mendasarinya langsung dari userspace menggunakan file perangkat itu dan "ioctl".
Menjadi kerangka kerja umum yang menyediakan fungsionalitas yang umum untuk berbagai perangkat, V4L2 tidak memberi Anda semua fungsionalitas yang dapat disediakan oleh driver UVC (dengan asumsi bahwa perangkat Anda benar-benar menyediakan fungsionalitas UVC lebih banyak daripada yang diperlukan untuk mendukung V4L2) .
Jadi jika Anda memiliki perangkat UVC yang menyediakan semua fungsi yang ditentukan dalam spesifikasi UVC, maka untuk benar-benar menggunakan beberapa fungsi ini, Anda perlu mengakses driver UVC langsung melalui file perangkat dan sistem "ioctl" panggilan, dengan asumsi bahwa driver UVC kernel Linux sebenarnya mendukung semua spesifikasi UVC.
Namun, arti dari
Implementasi driver uvcvideo hanya mematuhi API V4L2
adalah bahwa dalam driver Linux kernel UVC saat ini sebenarnya tidak memberikan dukungan fungsi UVC lebih dari yang diperlukan untuk V4L2.
Dukungan V4L2 di kernel tidak dengan sendirinya memberikan dukungan UVC atau USB atau dukungan perangkat keras USB tingkat rendah.