Tài liệu tham khảo về cấu trúc camera_info

Tài liệu tham khảo về cấu trúc camera_info

#include < camera_common.h >

Trường dữ liệu

int  hướng về phía
 
int  hướng
 
uint32_t  device_version
 
const camera_metadata_t static_camera_characteristics
 
int  resource_cost
 
char **  conflicting_devices
 
size_t  conflicting_devices_length
 

Nội dung mô tả chi tiết

Định nghĩa tại dòng 161 của tệp camera_common.h .

Tài liệu về trường

char** conflicting_devices

Một mảng gồm các mã thiết bị máy ảnh được biểu thị dưới dạng chuỗi kết thúc bằng NULL, cho biết các thiết bị khác không thể được mở đồng thời khi thiết bị máy ảnh này đang được sử dụng.

Trường này dùng để cho biết thiết bị máy ảnh này là một thiết bị tổng hợp của một số thiết bị máy ảnh khác hoặc có các phần phụ thuộc phần cứng cấm sử dụng đồng thời. Nếu không có phần phụ thuộc nào, thì giá trị NULL có thể được trả về trong trường này để cho biết điều này.

Dịch vụ máy ảnh sẽ không bao giờ mở đồng thời bất kỳ thiết bị nào trong danh sách này khi thiết bị máy ảnh này đang mở.

Dịch vụ máy ảnh sẽ không dọn dẹp các chuỗi được trỏ đến trong trường này và phải giữ nguyên trong khi thiết bị này được cắm điện.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 trở xuống:

Không hợp lệ. Có thể giả định là NULL. Không đọc trường này.

CAMERA_MODULE_API_VERSION_2_4 trở lên:

Luôn hợp lệ.

Định nghĩa tại dòng 404 của tệp camera_common.h .

size_t conflicting_devices_length

Chiều dài của mảng được cung cấp trong trường conflicting_devices.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 trở xuống:

Không hợp lệ. Có thể giả định là 0. Không đọc trường này.

CAMERA_MODULE_API_VERSION_2_4 trở lên:

Luôn hợp lệ.

Định nghĩa tại dòng 419 của tệp camera_common.h .

uint32_t device_version

Giá trị của camera_device_t.common.version.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Không hợp lệ. Có thể giả định là CAMERA_DEVICE_API_VERSION_1_0. Không đọc trường này.

CAMERA_MODULE_API_VERSION_2_0 trở lên:

Luôn hợp lệ

Định nghĩa tại dòng 219 của tệp camera_common.h .

int facing

Hướng mà máy ảnh hướng đến. Xem system/core/include/system/camera.h để biết định nghĩa về hướng máy ảnh.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 trở xuống:

Giá trị này phải là CAMERA_FACING_BACK hoặc CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 trở lên:

Giá trị này phải là CAMERA_FACING_BACK, CAMERA_FACING_FRONT hoặc CAMERA_FACING_EXTERNAL.

Định nghĩa tại dòng 177 của tệp camera_common.h .

hướng int

Hướng của hình ảnh máy ảnh. Giá trị này là góc mà hình ảnh của máy ảnh cần được xoay theo chiều kim đồng hồ để hiển thị chính xác trên màn hình theo hướng tự nhiên. Giá trị này phải là 0, 90, 180 hoặc 270.

Ví dụ: giả sử một thiết bị có màn hình cao tự nhiên. Cảm biến máy ảnh mặt sau được gắn theo hướng ngang. Bạn đang nhìn vào màn hình. Nếu cạnh trên của cảm biến máy ảnh được căn chỉnh với cạnh phải của màn hình theo hướng tự nhiên, thì giá trị phải là 90. Nếu mặt trên của cảm biến máy ảnh mặt trước được căn chỉnh với bên phải màn hình, thì giá trị phải là 270.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 trở xuống:

Có hiệu lực trong tất cả phiên bản camera_module .

CAMERA_MODULE_API_VERSION_2_4 trở lên:

Có hiệu lực nếu hướng máy ảnh là CAMERA_FACING_BACK hoặc CAMERA_FACING_FRONT, không hợp lệ nếu hướng máy ảnh là CAMERA_FACING_EXTERNAL.

Định nghĩa tại dòng 202 của tệp camera_common.h .

int resource_cost

Tổng "chi phí" tài nguyên khi sử dụng máy ảnh này, được biểu thị dưới dạng giá trị số nguyên trong phạm vi [0, 100], trong đó 100 thể hiện tổng mức sử dụng tài nguyên dùng chung là nút thắt cổ chai giới hạn của hệ thống con máy ảnh. Đây có thể là một ước tính rất sơ bộ và được dùng làm gợi ý cho dịch vụ máy ảnh để xác định thời điểm không cho phép nhiều ứng dụng đồng thời mở các máy ảnh khác nhau do dịch vụ máy ảnh quảng cáo.

Dịch vụ máy ảnh phải có khả năng đồng thời mở và sử dụng bất kỳ tổ hợp thiết bị máy ảnh nào do HAL hiển thị, trong đó tổng chi phí tài nguyên của các máy ảnh này <= 100. Để xác định chi phí, mỗi thiết bị máy ảnh phải được giả định là được định cấu hình và hoạt động ở tốc độ khung hình và chế độ cài đặt kích thước luồng tiêu tốn nhiều tài nguyên nhất có trong chế độ cài đặt cấu hình hiển thị cho thiết bị đó thông qua siêu dữ liệu máy ảnh.

Dịch vụ máy ảnh vẫn có thể cố gắng mở đồng thời các tổ hợp thiết bị máy ảnh có tổng chi phí tài nguyên > 100. Quá trình này có thể thành công hoặc không thành công. Nếu thành công, các tổ hợp cấu hình không được hỗ trợ do các hạn chế về tài nguyên khi có nhiều thiết bị đang mở sẽ không thành công trong các lệnh gọi định cấu hình. Nếu tổng chi phí tài nguyên <= 100, thì việc mở và định cấu hình sẽ không bao giờ gặp lỗi đối với bất kỳ chế độ cài đặt cấu hình luồng nào hoặc các chức năng khác của thiết bị thường sẽ thành công đối với một thiết bị khi đó là thiết bị máy ảnh duy nhất đang mở.

Trường này sẽ được dùng để xác định xem các ứng dụng chạy nền có được phép sử dụng thiết bị máy ảnh này trong khi các ứng dụng khác đang sử dụng các thiết bị máy ảnh khác hay không. Lưu ý: dịch vụ máy ảnh sẽ không bao giờ cho phép nhiều ứng dụng đồng thời mở cùng một thiết bị máy ảnh.

Ví dụ về trường hợp sử dụng:

Ví dụ: 1: Thiết bị máy ảnh 0 = Máy ảnh sau Thiết bị máy ảnh 1 = Máy ảnh trước

  • Việc sử dụng cả hai thiết bị máy ảnh sẽ làm tốc độ khung hình bị chậm đáng kể do băng thông ISP bị hạn chế.

Cấu hình:

Camera Device 0 - resource_cost = 51 conflicting_devices = null Camera Device 1 - resource_cost = 51 conflicting_devices = null

Kết quả:

Vì tổng chi phí tài nguyên > 100, nên nếu một ứng dụng có mức độ ưu tiên cao hơn mở một trong hai thiết bị, thì dịch vụ máy ảnh sẽ không cho phép bất kỳ ứng dụng nào có mức độ ưu tiên thấp hơn mở một trong hai thiết bị đó. Nếu một ứng dụng có mức độ ưu tiên thấp hơn đang sử dụng một thiết bị mà một ứng dụng có mức độ ưu tiên cao hơn sau đó cố gắng mở, thì ứng dụng có mức độ ưu tiên thấp hơn sẽ buộc phải ngắt kết nối với thiết bị.

Nếu ứng dụng có mức độ ưu tiên cao nhất chọn, thì ứng dụng đó vẫn có thể cố gắng mở cả hai thiết bị (vì các thiết bị này không được liệt kê là xung đột trong trường conflicting_devices), nhưng việc sử dụng các thiết bị này có thể không thành công trong các lệnh gọi mở hoặc định cấu hình.

Ví dụ: 2: Thiết bị máy ảnh 0 = Máy ảnh sau bên trái Thiết bị máy ảnh 1 = Máy ảnh sau bên phải Thiết bị máy ảnh 2 = Máy ảnh âm thanh nổi kết hợp sử dụng cả cảm biến máy ảnh sau bên phải và bên trái mà thiết bị 0 và 1 sử dụng Thiết bị máy ảnh 3 = Máy ảnh trước

  • Do các hạn chế về phần cứng, bạn có thể mở tối đa 2 camera cùng một lúc. Bạn không bao giờ được sử dụng máy ảnh âm thanh nổi kết hợp cùng lúc với một trong hai thiết bị máy ảnh sau (thiết bị 0, 1) và thường cần quá nhiều băng thông để sử dụng cùng lúc với máy ảnh trước (thiết bị 3).

Cấu hình:

Camera Device 0 - resource_cost = 50 conflicting_devices = { 2 } Camera Device 1 - resource_cost = 50 conflicting_devices = { 2 } Camera Device 2 - resource_cost = 100 conflicting_devices = { 0, 1 } Camera Device 3 - resource_cost = 50 conflicting_devices = null

Kết quả:

Dựa trên các trường conflicting_devices, dịch vụ máy ảnh đảm bảo rằng các nhóm thiết bị đang mở sau đây sẽ không bao giờ được phép: { 1, 2 }, { 0, 2 }.

Dựa trên các trường resource_cost, nếu một ứng dụng trên nền trước có mức độ ưu tiên cao đang sử dụng thiết bị máy ảnh 0, thì ứng dụng ở chế độ nền sẽ được phép mở thiết bị máy ảnh 1 hoặc 3 (nhưng sẽ buộc phải ngắt kết nối lại nếu ứng dụng trên nền trước mở một thiết bị khác).

Ứng dụng có mức độ ưu tiên cao nhất vẫn có thể cố gắng mở đồng thời thiết bị 0, 2 và 3, nhưng HAL có thể không mở hoặc định cấu hình các lệnh gọi cho tổ hợp này.

Ví dụ: 3: Thiết bị máy ảnh 0 = Máy ảnh sau Thiết bị máy ảnh 1 = Máy ảnh trước Thiết bị máy ảnh 2 = Máy ảnh trước tiết kiệm pin sử dụng cùng một cảm biến với thiết bị 1, nhưng chỉ hiển thị các độ phân giải luồng hình ảnh có thể dùng được ở chế độ tiết kiệm pin

  • Không thể sử dụng cả hai máy ảnh trước (thiết bị 1, 2) cùng lúc do cảm biến vật lý dùng chung. Bạn có thể không sử dụng được máy ảnh sau và máy ảnh trước "có công suất cao" (thiết bị 1) đối với một số cấu hình phát trực tuyến do các giới hạn về phần cứng, nhưng bạn có thể luôn sử dụng tuỳ chọn máy ảnh trước "có công suất thấp" vì máy ảnh này có phần cứng chuyên dụng đặc biệt.

    Cấu hình:

    Camera Device 0 - resource_cost = 100 conflicting_devices = null Camera Device 1 - resource_cost = 100 conflicting_devices = { 2 } Camera Device 2 - resource_cost = 0 conflicting_devices = { 1 } Kết quả:

    Dựa trên các trường conflicting_devices, dịch vụ máy ảnh đảm bảo rằng các nhóm thiết bị đang mở sau đây sẽ không bao giờ được phép: { 1, 2 }.

    Dựa trên các trường resource_cost, chỉ ứng dụng có mức độ ưu tiên cao nhất mới có thể cố gắng mở cả thiết bị 0 và 1 cùng một lúc. Nếu một ứng dụng có mức độ ưu tiên cao hơn không sử dụng thiết bị 1 hoặc 2, thì một ứng dụng chạy nền có mức độ ưu tiên thấp có thể mở thiết bị 2 (nhưng sẽ buộc phải ngắt kết nối nếu một ứng dụng có mức độ ưu tiên cao hơn sau đó mở thiết bị 1 hoặc 2).

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 trở xuống:

Không hợp lệ. Có thể giả định là 100. Không đọc trường này.

CAMERA_MODULE_API_VERSION_2_4 trở lên:

Luôn hợp lệ.

Định nghĩa tại dòng 376 của tệp camera_common.h .

const camera_metadata_t * static_camera_characteristics

Các đặc điểm cố định của máy ảnh, bao gồm tất cả siêu dữ liệu máy ảnh tĩnh được chỉ định trong system/media/camera/docs/docs.html. Đây phải là bộ đệm siêu dữ liệu đã được sắp xếp và phương thức gọi không được sửa đổi hoặc giải phóng bộ đệm này. Con trỏ phải luôn hợp lệ trong suốt thời gian hoạt động của mô-đun máy ảnh và các giá trị trong đó không được thay đổi sau khi được get_camera_info() trả về.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0:

Không hợp lệ. Không có đặc điểm bổ sung. Không đọc trường này.

CAMERA_MODULE_API_VERSION_2_0 trở lên:

Hợp lệ nếu device_version >= CAMERA_DEVICE_API_VERSION_2_0. Không đọc nếu không.

Định nghĩa tại dòng 241 của tệp camera_common.h .


Tài liệu cho cấu trúc này được tạo từ tệp sau: