Lớp trừu tượng phần cứng (HAL) cho máy ảnh

Lớp trừu tượng phần cứng máy ảnh (HAL) của Android kết nối các cấp độ cao hơn API khung máy ảnh trong android.hardware.camera2 với trình điều khiển và phần cứng máy ảnh cơ bản của bạn. Kể từ Android 13, quá trình phát triển giao diện HAL của máy ảnh sẽ sử dụng AIDL. Android 8.0 đã ra mắt Treble, chuyển đổi API HAL của máy ảnh sang một giao diện ổn định do ngôn ngữ mô tả giao diện HAL (HIDL) xác định. Nếu trước đây bạn đã phát triển một mô-đun HAL cho máy ảnh và trình điều khiển cho Android 7.0 và thấp hơn, hãy lưu ý đến những thay đổi trong quy trình camera.

HAL máy ảnh AIDL

Đối với các thiết bị chạy Android 13 trở lên, khung máy ảnh sẽ hỗ trợ các HAL máy ảnh AIDL. Khung máy ảnh cũng hỗ trợ các HAL máy ảnh HIDL, tuy nhiên, các tính năng máy ảnh được thêm vào Android 13 trở lên chỉ có sẵn thông qua giao diện HAL máy ảnh AIDL. Để triển khai tính năng đó trên những thiết bị nâng cấp lên Nhà sản xuất thiết bị phải chạy Android 13 trở lên di chuyển quy trình HAL từ sử dụng giao diện máy ảnh HIDL sang máy ảnh AIDL giao diện.

Để tìm hiểu về các ưu điểm của AIDL, hãy xem AIDL cho HAL.

Triển khai lớp trừu tượng phần cứng (HAL) cho máy ảnh AIDL

Để tham khảo cách triển khai HAL máy ảnh AIDL, hãy xem hardware/google/camera/common/hal/aidl_service/.

Thông số kỹ thuật HAL của máy ảnh AIDL nằm ở các vị trí sau:

Đối với các thiết bị di chuyển sang AIDL, nhà sản xuất thiết bị có thể cần sửa đổi chính sách SELinux của Android (sepolicy) và các tệp RC tuỳ thuộc vào cấu trúc mã.

Xác thực HAL máy ảnh AIDL

Để kiểm thử việc triển khai lớp trừu tượng phần cứng (HAL) cho máy ảnh AIDL, hãy đảm bảo thiết bị vượt qua tất cả thử nghiệm CTS và VTS. Android 13 ra mắt AIDL VTS thử nghiệm, VtsAidlHalCameraProvider_TargetTest.cpp.

Tính năng của Camera HAL3

Mục đích của việc thiết kế lại API Máy ảnh Android là tăng đáng kể khả năng của ứng dụng trong việc kiểm soát hệ thống con máy ảnh trên thiết bị Android, đồng thời sắp xếp lại API để API hoạt động hiệu quả và dễ bảo trì hơn. Thông tin bổ sung kiểm soát giúp tạo ứng dụng máy ảnh chất lượng cao trên Android dễ dàng hơn thiết bị có thể hoạt động đáng tin cậy trên nhiều sản phẩm trong khi vẫn đang sử dụng các thuật toán dành riêng cho thiết bị bất cứ khi nào có thể để tối đa hoá chất lượng và hiệu suất.

Phiên bản 3 của hệ thống con máy ảnh sắp xếp các chế độ hoạt động thành một chế độ xem hợp nhất duy nhất. Chế độ này có thể được dùng để triển khai bất kỳ chế độ nào trước đó và một số chế độ khác, chẳng hạn như chế độ chụp liên tiếp. Điều này giúp người dùng kiểm soát tốt hơn đối với tiêu điểm và độ phơi sáng, cũng như có nhiều chế độ xử lý hậu kỳ hơn, chẳng hạn như giảm nhiễu, độ tương phản và làm sắc nét. Hơn nữa, chế độ xem đơn giản này giúp nhà phát triển ứng dụng dễ dàng sử dụng nhiều chức năng của máy ảnh hơn.

API mô hình hoá hệ thống phụ camera dưới dạng một quy trình chuyển đổi dữ liệu đầu vào các yêu cầu để chụp khung hình vào khung hình theo tỷ lệ 1:1. Các yêu cầu đóng gói tất cả thông tin cấu hình về việc thu thập và xử lý khung. Điều này bao gồm độ phân giải và định dạng pixel; cảm biến thủ công, ống kính và đèn flash kiểm soát; 3A chế độ hoạt động; RAW->Kiểm soát xử lý YUV; tạo số liệu thống kê; và cứ tiếp tục như vậy.

Nói một cách đơn giản, khung ứng dụng yêu cầu một khung từ hệ thống con máy ảnh và hệ thống con máy ảnh trả về kết quả cho luồng đầu ra. Ngoài ra, siêu dữ liệu chứa thông tin như không gian màu và độ bóng của ống kính sẽ được tạo cho mỗi tập hợp kết quả. Bạn có thể coi máy ảnh phiên bản 3 là một quy trình cho luồng một chiều của máy ảnh phiên bản 1. Công cụ này chuyển đổi từng ảnh chụp yêu cầu vào một hình ảnh do cảm biến chụp, hình ảnh này được xử lý thành:

  • Một đối tượng kết quả có siêu dữ liệu về lần chụp.
  • Một đến N vùng đệm dữ liệu hình ảnh, mỗi vùng đệm vào một nền tảng đích riêng.

Tập hợp các bề mặt đầu ra có thể được định cấu hình trước:

  • Mỗi nền tảng là một đích đến cho luồng vùng đệm hình ảnh của độ phân giải.
  • Bạn chỉ có thể định cấu hình một số ít nền tảng làm đầu ra cùng một lúc (~3).

Một yêu cầu chứa tất cả các chế độ cài đặt chụp mong muốn và danh sách các bề mặt đầu ra để đẩy vùng đệm hình ảnh vào cho yêu cầu này (trong tổng số nhóm đã định cấu hình). Bạn có thể yêu cầu một lần (với capture()) hoặc có thể lặp lại vô thời hạn (với setRepeatingRequest()). Ảnh chụp được ưu tiên hơn các yêu cầu lặp lại.

Mô hình dữ liệu máy ảnh

Hình 1. Kiểu hoạt động của lõi máy ảnh

Tổng quan về Camera HAL1

Phiên bản 1 của hệ thống con máy ảnh được thiết kế dưới dạng một hộp đen có cấp độ và 3 chế độ hoạt động sau:

  • Xem trước
  • Quay video
  • Chụp ảnh tĩnh

Mỗi chế độ có các khả năng hơi khác nhau và trùng lặp. Điều này khiến việc triển khai các tính năng mới như chế độ chụp liên tục trở nên khó khăn, vì chế độ này nằm giữa hai chế độ hoạt động.

Sơ đồ khối camera

Hình 2. Các thành phần của camera

Android 7.0 tiếp tục hỗ trợ lớp trừu tượng phần cứng (HAL1) cho camera vì nhiều thiết bị vẫn cần đến nó. Ngoài ra, dịch vụ máy ảnh Android hỗ trợ triển khai cả hai HAL (1 và 3). Điều này hữu ích khi bạn muốn hỗ trợ máy ảnh mặt trước có khả năng kém hơn bằng camera HAL1 và máy ảnh mặt sau tiên tiến hơn bằng camera HAL3.

Có một mô-đun HAL máy ảnh (có số phiên bản riêng) liệt kê nhiều thiết bị máy ảnh độc lập, mỗi thiết bị có số phiên bản riêng. Cần có mô-đun máy ảnh 2 trở lên để hỗ trợ thiết bị thế hệ 2 trở lên và các mô-đun máy ảnh đó có thể sử dụng kết hợp thiết bị máy ảnh phiên bản (điều này có nghĩa là khi chúng tôi cho biết Android hỗ trợ triển khai cả HAL).