Tham chiếu cấu trúc camera3_stream
#include <
camera3.h
>
Trường dữ liệu |
|
int | stream_type |
uint32_t | width |
uint32_t | height |
int | định dạng |
uint32_t | cách sử dụng |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | xoay |
void * | reserved [7] |
Nội dung mô tả chi tiết
camera3_stream_t:
Một handle (tên gọi) đến một luồng đầu vào hoặc đầu ra của máy ảnh. Luồng được xác định bởi khung theo độ phân giải và định dạng bộ đệm, đồng thời được xác định bởi HAL bằng cờ sử dụng gralloc và số lượng bộ đệm tối đa trong chuyến bay.
Khung này sở hữu các cấu trúc luồng, nhưng con trỏ đến camera3_stream được truyền vào HAL bằng configure_streams() sẽ hợp lệ cho đến khi kết thúc lệnh gọi configure_streams() tiếp theo đầu tiên không bao gồm camera3_stream làm đối số hoặc cho đến khi kết thúc lệnh gọi close().
Tất cả thành phần do khung camera3_stream kiểm soát đều không thể thay đổi sau khi camera3_stream được truyền vào configure_streams(). HAL chỉ có thể thay đổi các tham số do HAL kiểm soát trong lệnh gọi configure_streams(), ngoại trừ nội dung của con trỏ riêng tư.
Nếu lệnh gọi configure_streams() trả về lỗi không nghiêm trọng, thì tất cả luồng đang hoạt động vẫn hợp lệ như thể configure_streams() chưa được gọi.
Thiết bị HAL của máy ảnh không thấy được điểm cuối của luồng. Trong DEVICE_API_VERSION_3_1, giá trị này đã được thay đổi để chia sẻ cờ sử dụng của người dùng trên các luồng mà máy ảnh là nhà sản xuất (các loại luồng OUTPUT và BIDIRECTIONAL), hãy xem trường sử dụng bên dưới.
Tài liệu về trường
android_dataspace_t data_space |
Một trường mô tả nội dung của vùng đệm. Định dạng và kích thước vùng đệm xác định bố cục và cấu trúc bộ nhớ của vùng đệm luồng, trong khi dataSpace xác định ý nghĩa của dữ liệu trong vùng đệm.
Đối với hầu hết các định dạng, dataSpace xác định không gian màu của dữ liệu hình ảnh. Ngoài ra, đối với một số định dạng, dataSpace cho biết liệu dữ liệu dựa trên hình ảnh hay chiều sâu có được yêu cầu hay không. Hãy xem system/core/include/system/graphics.h để biết thông tin chi tiết về các định dạng và giá trị dataSpace hợp lệ cho từng định dạng.
Thông tin phiên bản:
< CAMERA_DEVICE_API_VERSION_3_3:
Không được xác định và không được truy cập. Bạn nên giả định dataSpace là HAL_DATASPACE_UNKNOWN và hệ màu thích hợp, v.v. sẽ được xác định từ cờ sử dụng và định dạng.
= CAMERA_DEVICE_API_VERSION_3_3:
Luôn do dịch vụ camera đặt. HAL phải sử dụng dataSpace này để định cấu hình luồng thành không gian màu chính xác hoặc để chọn giữa đầu ra màu và độ sâu nếu được hỗ trợ. Các giá trị không gian dữ liệu là các định nghĩa cũ trong graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4:
Luôn do dịch vụ camera đặt. HAL phải sử dụng dataSpace này để định cấu hình luồng thành không gian màu chính xác hoặc để chọn giữa đầu ra màu và độ sâu nếu được hỗ trợ. Các giá trị không gian dữ liệu được đặt bằng cách sử dụng các định nghĩa không gian dữ liệu V0 trong graphics.h
định dạng int |
Định dạng pixel cho vùng đệm trong luồng này. Định dạng là một giá trị trong danh sách HAL_PIXEL_FORMAT_* trong system/core/include/system/graphics.h hoặc từ các tiêu đề dành riêng cho thiết bị.
Nếu bạn sử dụng HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, thì mô-đun gralloc của nền tảng sẽ chọn một định dạng dựa trên cờ sử dụng do thiết bị máy ảnh cung cấp và điểm cuối khác của luồng.
<= CAMERA_DEVICE_API_VERSION_3_1:
Thiết bị HAL máy ảnh phải kiểm tra các vùng đệm được chuyển cho thiết bị đó trong lệnh gọi register_stream_buffers() tiếp theo để lấy thông tin chi tiết về định dạng dành riêng cho quá trình triển khai, nếu cần.
>= CAMERA_DEVICE_API_VERSION_3_2:
Khung sẽ không gọi register_stream_buffers(), vì vậy, HAL phải định cấu hình ISP và quy trình cảm biến dựa hoàn toàn vào kích thước, cờ sử dụng và định dạng cho các luồng đã định cấu hình.
uint32_t height |
uint32_t max_buffers |
void* priv |
xoay int |
Độ xoay đầu ra bắt buộc của luồng, một trong các giá trị camera3_stream_rotation_t. HAL phải kiểm tra thông tin này cùng với chiều rộng và chiều cao của luồng. Ví dụ: nếu độ xoay là 90 độ và chiều rộng và chiều cao của luồng lần lượt là 720 và 1280, thì dịch vụ máy ảnh sẽ cung cấp vùng đệm có kích thước 720x1280 và HAL sẽ chụp ảnh 1280x720 và xoay ảnh 90 độ ngược chiều kim đồng hồ. Trường độ xoay không hoạt động khi loại luồng là dữ liệu đầu vào. Camera HAL phải bỏ qua trường xoay cho luồng đầu vào.
<= CAMERA_DEVICE_API_VERSION_3_2:
Không được xác định và không được truy cập. HAL không được áp dụng bất kỳ chế độ xoay nào cho hình ảnh đầu ra.
>= CAMERA_DEVICE_API_VERSION_3_3:
Luôn do dịch vụ máy ảnh đặt. HAL phải kiểm tra trường này trong quá trình định cấu hình luồng và trả về -EINVAL nếu HAL không thể thực hiện việc xoay như vậy. HAL phải luôn hỗ trợ CAMERA3_STREAM_ROTATION_0, vì vậy, lệnh gọi configure_streams() không được thất bại đối với chế độ xoay không được hỗ trợ nếu trường xoay của tất cả các luồng là CAMERA3_STREAM_ROTATION_0.
int stream_type |
Cách sử dụng uint32_t |
Cờ sử dụng gralloc cho luồng này, nếu HAL cần. Cờ sử dụng được xác định trong gralloc.h (GRALLOC_USAGE_*) hoặc trong tiêu đề dành riêng cho thiết bị.
Đối với luồng đầu ra, đây là các cờ sử dụng của nhà sản xuất HAL. Đối với luồng đầu vào, đây là các cờ sử dụng của người dùng HAL. Cờ sử dụng của nhà sản xuất và nhà tiêu dùng sẽ được kết hợp với nhau, sau đó được chuyển đến mô-đun HAL gralloc của nền tảng để phân bổ vùng đệm gralloc cho mỗi luồng.
Thông tin phiên bản:
== CAMERA_DEVICE_API_VERSION_3_0:
Không đảm bảo giá trị ban đầu khi được truyền qua configure_streams(). HAL không được sử dụng trường này làm dữ liệu đầu vào và phải ghi đè trường này bằng cờ sử dụng.
>= CAMERA_DEVICE_API_VERSION_3_1:
Đối với stream_type OUTPUT và BIDIRECTIONAL, khi được truyền qua configure_streams(), giá trị ban đầu của thuộc tính này là cờ sử dụng của người dùng. HAL có thể sử dụng các cờ người dùng này để quyết định cấu hình luồng. Đối với stream_type INPUT, khi được truyền qua configure_streams(), giá trị ban đầu của thuộc tính này là 0. Đối với tất cả các luồng được truyền qua configure_streams(), HAL phải ghi đè trường này bằng cờ sử dụng.
uint32_t width |
Tài liệu cho cấu trúc này được tạo từ tệp sau:
- hardware/libhardware/include/hardware/ camera3.h