Tham chiếu cấu trúc camera3_stream

Tham chiếu cấu trúc camera3_stream

#include < camera3.h >

Trường dữ liệu

int luồng_type
uint32_t chiều rộng
uint32_t chiều cao
int định dạng
uint32_t cách sử dụng
uint32_t max_buffers
trống * riêng tư
android_dataspace_t không gian dữ liệu
int Vòng xoay
trống * dành riêng [7]

miêu tả cụ thể

camera3_stream_t:

Một tay cầm cho một luồng đầu vào hoặc đầu ra của một camera. Một luồng được xác định bởi khung theo độ phân giải và định dạng bộ đệm của nó, đồng thời bởi HAL với các cờ sử dụng gralloc và số lượng bộ đệm tối đa trong chuyến bay.

Các cấu trúc luồng được sở hữu bởi khung, nhưng các con trỏ tới camera3_stream được truyền vào HAL bởi configure_streams() vẫn 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ả các thành viên được kiểm soát bởi khung camera3_stream đều không thể thay đổi sau khi camera3_stream được chuyể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.

Nếu lệnh gọi configure_streams() trả về một lỗi không nghiêm trọng, thì tất cả cá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 hiển thị điểm cuối của luồng. Trong DEVICE_API_VERSION_3_1, điều này đã được thay đổi để chia sẻ cờ sử dụng của người tiêu dùng trên các luồng mà máy ảnh là nhà sản xuất (loại luồng OUTPUT và BIDIRECTIONAL), hãy xem trường sử dụng bên dưới.

Định nghĩa tại dòng 1523 của file camera3.h .

Tài liệu hiện trường

android_dataspace_t data_space

Trường mô tả nội dung của bộ đệm. Định dạng và kích thước bộ đệm xác định bố cục bộ nhớ và cấu trúc của bộ đệm luồng, trong khi dataSpace xác định ý nghĩa của dữ liệu trong bộ đệ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 độ sâu được yêu cầu. Xem system/core/include/system/graphics.h để biết 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 nên truy cập. dataSpace phải được giả sử là HAL_DATASPACE_UNKNOWN và không gian màu thích hợp, v.v., phải được xác định từ cờ sử dụng và định dạng.

= CAMERA_DEVICE_API_VERSION_3_3:

Luôn được thiết lập bởi dịch vụ camera. HAL phải sử dụng dataSpace này để định cấu hình luồng cho 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 được thiết lập bởi dịch vụ camera. HAL phải sử dụng dataSpace này để định cấu hình luồng cho 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 định nghĩa không gian dữ liệu V0 trong Graphics.h

Định nghĩa tại dòng 1648 của file camera3.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ị từ 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 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED được sử dụng thì mô-đun gralloc nền tảng sẽ chọn đị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 của máy ảnh phải kiểm tra bộ đệm được chuyển đến nó trong lệnh gọi register_stream_buffers() tiếp theo để có được chi tiết định dạng dành riêng cho việc triển khai, nếu cần.

>= CAMERA_DEVICE_API_VERSION_3_2:

register_stream_buffers() sẽ không được khung gọi, vì vậy HAL nên định cấu hình ISP và đường dẫn cảm biến hoàn toàn dựa trên kích thước, cờ sử dụng và định dạng cho các luồng đã định cấu hình.

Định nghĩa tại dòng 1565 của file camera3.h .

chiều cao uint32_t

Chiều cao tính bằng pixel của vùng đệm trong luồng này

Định nghĩa tại dòng 1542 của file camera3.h .

uint32_t max_buffers

Số lượng bộ đệm tối đa mà thiết bị HAL có thể cần phải loại bỏ khỏi hàng đợi cùng một lúc. Thiết bị HAL có thể không có nhiều bộ đệm đang hoạt động từ luồng này hơn giá trị này.

Định nghĩa tại dòng 1608 của file camera3.h .

void* riêng tư

Xử lý thông tin riêng tư HAL cho luồng. Sẽ không được kiểm tra bởi mã khung.

Định nghĩa tại dòng 1614 của file camera3.h .

void* dành riêng [7]

Định nghĩa tại dòng 1677 của file camera3.h .

xoay vòng int

Vòng quay đầu ra bắt buộc của luồng, một trong các giá trị camera3_stream_rotation_t. Điều này phải được HAL kiểm tra cùng với chiều rộng và chiều cao của luồng. Ví dụ: nếu xoay 90 độ và chiều rộng và chiều cao luồng lần lượt là 720 và 1280, dịch vụ máy ảnh sẽ cung cấp bộ đệm có kích thước 720x1280 và HAL sẽ chụp ảnh 1280x720 và xoay hình ảnh 90 độ ngược chiều kim đồng hồ. Trường xoay không hoạt động khi loại luồng được nhập. 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ỳ thao tác xoay nào trên hình ảnh đầu ra.

>= CAMERA_DEVICE_API_VERSION_3_3:

Luôn được thiết lập bởi dịch vụ camera. HAL phải kiểm tra trường này trong quá trình cấu hình luồng và trả về -EINVAL nếu HAL không thể thực hiện thao tác xoay như vậy. HAL phải luôn hỗ trợ CAMERA3_STREAM_ROTATION_0, do đó, lệnh gọi configure_streams() không được thất bại do xoay vòng không được hỗ trợ nếu trường xoay của tất cả các luồng là CAMERA3_STREAM_ROTATION_0.

Định nghĩa tại dòng 1674 của file camera3.h .

int luồng_type

Loại luồng, một trong các giá trị camera3_stream_type_t.

Định nghĩa tại dòng 1532 của file camera3.h .

cách sử dụng uint32_t

Cờ sử dụng gralloc cho luồng này, khi 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 các luồng đầu ra, đây là các cờ sử dụng của nhà sản xuất HAL. Đối với các luồng đầu vào, đây là các cờ sử dụng của người tiêu dùng HAL. Các cờ sử dụng từ nhà sản xuất và người tiêu dùng sẽ được kết hợp với nhau rồi chuyển đến mô-đun gralloc HAL của nền tảng để phân bổ bộ đệm gralloc cho mỗi luồng.

Thông tin phiên bản:

== CAMERA_DEVICE_API_VERSION_3_0:

Không có giá trị ban đầu nào được đảm bảo khi được truyền qua configure_streams(). HAL không được sử dụng trường này làm đầu vào và phải ghi lên trường này bằng các cờ sử dụng của nó.

>= 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 giá trị này là cờ sử dụng của người tiêu dùng. HAL có thể sử dụng các cờ tiêu 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 giá trị này là 0. Đối với tất cả các luồng được truyền qua configure_streams(), HAL phải ghi lên trường này bằng các cờ sử dụng của nó.

Định nghĩa tại dòng 1601 của file camera3.h .

chiều rộng uint32_t

Chiều rộng tính bằng pixel của vùng đệm trong luồng này

Định nghĩa tại dòng 1537 của file camera3.h .


Tài liệu cho cấu trúc này được tạo từ tệp sau:
  • phần cứng/libhardware/bao gồm/phần cứng/ camera3.h