Tính năng thông số phiên giúp giảm độ trễ bằng cách cho phép ứng dụng máy ảnh chủ động định cấu hình tập hợp con các tham số yêu cầu tốn kém, tức là phiên tham số, như một phần của giai đoạn khởi tạo phiên thu thập. Bằng cách này việc triển khai HAL của bạn sẽ nhận được các tham số ứng dụng khách trong quá trình giai đoạn cấu hình luồng thay vì yêu cầu chụp đầu tiên và có thể, tuỳ thuộc vào giá trị của họ, hãy chuẩn bị và xây dựng quy trình nội bộ nhiều hơn một cách hiệu quả.
Trong Android 10, bạn có thể cải thiện hiệu suất bằng cách sử dụng bạn có thể sử dụng tính năng truy vấn cấu hình lại phiên tuỳ chọn để kiểm soát nhiều hơn đối với logic cấu hình lại thông số phiên nội bộ. Để biết thêm thông tin, hãy xem Truy vấn cấu hình lại phiên.
Ví dụ và nguồn
Việc triển khai thông số phiên tham chiếu đã là một phần của CameraHal. HAL này sử dụng API Hal cũ. Phương thức liên kết CameraHal triển khai API HIDL của máy ảnh phải sử dụng HIDL tương ứng sessionParams để truy cập bất kỳ thông số phiên sắp tới mới nào trong khi định cấu hình luồng.
Ứng dụng máy ảnh có thể truy vấn các khoá của tất cả các tham số phiên được hỗ trợ bằng cách gọi
getAvailableSessionKeys()
và cuối cùng đặt giá trị ban đầu thông qua
setSessionParameters()
.
Triển khai
Việc triển khai CameraHal của bạn phải điền giá trị
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
trong siêu dữ liệu camera tĩnh tương ứng và cung cấp một tập hợp con
ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS
,
Tệp này chứa danh sách các khoá khó áp dụng cho mỗi khung hình và có thể
dẫn đến độ trễ không mong muốn khi được sửa đổi trong vòng đời của phiên chụp.
Ví dụ điển hình bao gồm các tham số đòi hỏi phần cứng tốn thời gian định cấu hình lại hoặc thay đổi quy trình máy ảnh nội bộ. Kiểm soát phiên vẫn có thể được sử dụng trong yêu cầu chụp nhưng khách hàng nên lưu ý rằng và dự kiến sẽ có độ trễ trong ứng dụng của họ.
Khung này giám sát tất cả các yêu cầu đến và nếu phát hiện thấy có sự thay đổi trong của một tham số phiên, nó sẽ định cấu hình lại nội bộ camera. Gói thuê bao mới cấu hình luồng được chuyển đến CameraHal, sau đó bao gồm cả phiên đã cập nhật các giá trị tham số được dùng để định cấu hình quy trình camera một cách hiệu quả.
Tuỳ chỉnh
Bạn có thể xác định các thẻ trong danh sách thông số phiên có sẵn được điền vào phía CameraHal. Tính năng này không hoạt động nếu CameraHal thoát khỏi danh sách thông số phiên có sẵn trống.
Xác nhận kết quả
CTS bao gồm các trường hợp mới sau đây để kiểm thử tham số phiên:
CameraDeviceTest#testSessionConfiguration
CameraDeviceTest#testCreateSessionWithParameters
CameraDeviceTest#testSessionParametersStateLeak
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
Nói chung, sau khi một thông số nhất định là một phần của danh sách khoá phiên, giá trị hiện tại được đưa vào trong thông số phiên được truyền trong luồng cấu hình ở lớp HAL.
Bạn phải chọn cẩn thận các thông số của phiên hoạt động. Các giá trị không được thay đổi thường xuyên, nếu có, giữa các cấu hình luồng. Các thông số thay đổi (chẳng hạn như ý định chụp) không phù hợp và thêm chúng vào danh sách tham số phiên có thể gây ra lỗi CTS do quá nhiều dữ liệu nội bộ cấu hình lại.
Truy vấn cấu hình lại phiên
Android 10 ra mắt một phiên không bắt buộc
định cấu hình lại tính năng truy vấn để
cải thiện hiệu suất dưới dạng cấu hình lại luồng nội bộ từ phiên
các sửa đổi giá trị tham số có thể làm giảm hiệu suất. Để giải quyết mối lo ngại này,
Phóng điện cường độ cao
ICameraDeviceSession
phiên bản 3.5 trở lên hỗ trợ
isReconfigurationRequired
, cung cấp quyền kiểm soát chi tiết đối với tham số phiên nội bộ
logic cấu hình lại. Khi bạn sử dụng phương pháp này, quá trình định cấu hình lại luồng có thể xảy ra
chính xác khi cần.
Các đối số cho isReconfigurationRequired
cung cấp thông tin bắt buộc về mọi thông số phiên đang chờ xử lý
sửa đổi, cho phép thực hiện nhiều loại tuỳ chỉnh theo thiết bị cụ thể.
Tính năng này chỉ được triển khai trong dịch vụ máy ảnh và lớp trừu tượng phần cứng (HAL) cho máy ảnh. Có không phải là API công khai. Nếu triển khai tính năng này, ứng dụng máy ảnh sẽ thấy mức cải thiện hiệu suất khi làm việc với các thông số phiên.
Triển khai
Để hỗ trợ truy vấn cấu hình lại phiên, bạn phải triển khai
isReconfigurationRequired
để kiểm tra xem việc định cấu hình lại luồng hoàn chỉnh có bắt buộc đối với
giá trị thông số phiên.
Nếu khách hàng thay đổi giá trị của bất kỳ thông số phiên được quảng cáo nào, thì máy ảnh
khung sẽ gọi isReconfigurationRequired
. Tuỳ thuộc vào các giá trị cụ thể, HAL quyết định liệu đoạn mã
bạn cần định cấu hình lại luồng. Nếu HAL trả về false
, máy ảnh
khung bỏ qua việc định cấu hình lại nội bộ. Nếu HAL trả về true
,
khung này sẽ định cấu hình lại các luồng và chuyển các giá trị thông số phiên mới
cho phù hợp.
Khung có thể gọi phương thức isReconfigurationRequired
vào một thời điểm
trước khi một yêu cầu có các tham số mới được gửi đến HAL và yêu cầu đó
có thể bị huỷ trước khi gửi. Do đó, HAL không được sử dụng thông tin này
để thay đổi hành vi của nó theo bất kỳ cách nào.
Việc triển khai HAL phải đáp ứng các yêu cầu sau:
- Khung này phải gọi được phương thức
isReconfigurationRequired
bất cứ lúc nào sau khi cấu hình phiên hoạt động. - Việc này không được ảnh hưởng đến hiệu suất của các yêu cầu camera đang chờ xử lý. Trong đặc biệt, không được có bất kỳ trục trặc hoặc chậm trễ nào trong khi máy ảnh thông thường phát trực tuyến.
Thiết bị và việc triển khai lớp trừu tượng phần cứng (HAL) phải đáp ứng được những yêu cầu sau các yêu cầu:
- Không được thay đổi các chế độ cài đặt của máy ảnh bằng phần cứng và phần mềm.
- Người dùng không được có tác động rõ ràng đến hiệu suất của camera.
isReconfigurationRequired
phương thức nhận các đối số sau:
oldSessionParams
: Thông số phiên từ phiên trước đó. Thường là các thông số phiên hiện có.newSessionParams
: Các thông số phiên mới do ứng dụng đặt.
Các mã trạng thái trả lại hàng dự kiến là:
OK
: Truy vấn yêu cầu định cấu hình lại thành công.METHOD_NOT_SUPPORTED
: Thiết bị camera không hỗ trợ cấu hình lại.INTERNAL_ERROR
: Không thể hoàn tất truy vấn cấu hình lại do lỗi nội bộ.
Giá trị trả về là:
true
: Cần phải định cấu hình lại luồng.false
: Bạn không cần phải định cấu hình lại luồng.
Để bỏ qua truy vấn cấu hình lại phiên, HAL trả về
METHOD_NOT_SUPPORTED
hoặc false
. Chế độ này dẫn đến dịch vụ máy ảnh mặc định
khi việc định cấu hình lại luồng được kích hoạt trên mỗi thông số phiên
thay đổi.
Xác nhận kết quả
Tính năng truy vấn cấu hình lại phiên có thể được xác thực bằng bài kiểm tra VTS
trường hợp trong
CameraHidlTest#configureStreamsWithSessionParameters
.