Thật đáng ngạc nhiên khi bạn có thể tìm thấy bao nhiêu tài liệu cho Video4Linux2 - và không ai trong số đó thực sự giải thích Video4Linux là gì .
Đầu tiên, Video4Linux2 là khung trình điều khiển Linux . Trình điều khiển khung không thực sự kiểm soát các thiết bị trực tiếp. Thay vào đó, họ cung cấp một mô hình trừu tượng của một số loại thiết bị, trong trường hợp này là thiết bị video cho các ứng dụng sử dụng. Khung trình điều khiển cung cấp ba lợi ích chính:
- Cung cấp API hợp nhất cho các ứng dụng sử dụng với rất nhiều thiết bị vật lý, cho dù được kết nối bằng USB, PCIe, MIPI, Ethernet hoặc loại bus truyền dữ liệu khác
- Trong kernel, các khung chứa loại mã cần thiết trong hầu hết tất cả các trình điều khiển thiết bị của một lớp cụ thể, do đó giảm đáng kể khối lượng mã khác nhau
- Trong kernel, các khung công tác cung cấp một kế hoạch chi tiết để viết các trình điều khiển cấp thấp mới thực sự kiểm soát phần cứng, do đó đơn giản hóa việc phát triển trình điều khiển.
Vì vậy, trình điều khiển V4L2 là trình điều khiển cấp cao điều khiển trình điều khiển UVC, điều khiển trình điều khiển USB có thể đang lái trình điều khiển phần cứng cấp thấp hơn.
Mô hình Matryoshka này rất phổ biến trong cây trình điều khiển nhân Linux. V4L2 là một trong những ví dụ phức tạp hơn vì một số thiết bị máy ảnh yêu cầu truy cập các nhóm thiết bị phụ lớn trong một số lớp điều khiển máy ảnh và định tuyến đầu ra của máy ảnh trong số các thành phần khác nhau như bộ xử lý hình ảnh.
Bạn vẫn có thể truy cập trình điều khiển UVC trực tiếp từ không gian người dùng bằng tệp thiết bị và các cuộc gọi hệ thống "ioctl", mà không cần thông qua trình điều khiển V4L2 và bạn vẫn có thể truy cập trực tiếp trình điều khiển USB từ không gian người dùng bằng tệp thiết bị và "ioctl".
Là một khung chung cung cấp chức năng chung cho nhiều loại thiết bị, V4L2 không cung cấp cho bạn tất cả các chức năng mà trình điều khiển UVC có thể cung cấp (giả sử rằng thiết bị của bạn thực sự cung cấp nhiều chức năng UVC hơn mức cần thiết để hỗ trợ V4L2) .
Vì vậy, nếu bạn có một thiết bị UVC cung cấp tất cả các chức năng được chỉ định trong thông số UVC, thì để thực sự sử dụng một số chức năng này, bạn sẽ cần truy cập trực tiếp vào trình điều khiển UVC thông qua tệp thiết bị và hệ thống "ioctl" gọi, giả sử rằng trình điều khiển UVC nhân Linux trên thực tế hỗ trợ tất cả các đặc tả UVC.
Tuy nhiên, ý nghĩa của
Việc triển khai trình điều khiển uvcvideo chỉ tuân thủ API V4L2
là trong trình điều khiển UVC nhân Linux hiện tại trên thực tế không cung cấp bất kỳ hỗ trợ chức năng UVC nào nhiều hơn mức cần thiết cho V4L2.
Bản thân hỗ trợ V4L2 trong kernel không cung cấp hỗ trợ UVC hoặc USB hoặc hỗ trợ phần cứng USB cấp thấp hơn.