Referencia de la estructura camera3_stream
#include <
camera3.h
>
Campos de datos |
|
int | stream_type |
uint32_t | width width |
uint32_t | height |
int | formato |
uint32_t | uso |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | rotación |
void * | reservado [7] |
Descripción detallada
camera3_stream_t:
Es un identificador de una sola transmisión de entrada o salida de la cámara. El framework define una transmisión por su resolución y formato de búfer, y, además, por el sistema HAL con las marcas de uso de gralloc y el recuento máximo de búferes en curso.
El framework es propietario de las estructuras de flujo, pero los punteros a un camera3_stream que configure_streams() pasa al HAL son válidos hasta el final de la primera llamada posterior a configure_streams() que no incluya camera3_stream como argumento, o hasta el final de la llamada a close().
Todos los miembros controlados por el framework de camera3_stream son inmutables una vez que camera3_stream se pasa a configure_streams(). El HAL solo puede cambiar los parámetros controlados por el HAL durante una llamada a configure_streams(), excepto el contenido del puntero privado.
Si una llamada a configure_streams() muestra un error no fatal, todas las transmisiones activas permanecen válidas como si no se hubiera llamado a configure_streams().
El extremo de la transmisión no es visible para el dispositivo HAL de la cámara. En DEVICE_API_VERSION_3_1, se cambió para compartir marcas de uso del consumidor en transmisiones en las que la cámara es un productor (tipos de transmisiones OUTPUT y BIDIRECTIONAL). Consulta el campo de uso a continuación.
Documentación de campos
android_dataspace_t data_space |
Es un campo que describe el contenido del búfer. El formato y las dimensiones del búfer definen el diseño y la estructura de la memoria de los búferes de transmisión, mientras que dataSpace define el significado de los datos dentro del búfer.
Para la mayoría de los formatos, dataSpace define el espacio de color de los datos de la imagen. Además, para algunos formatos, dataSpace indica si se solicitan datos basados en imágenes o en profundidad. Consulta system/core/include/system/graphics.h para obtener detalles sobre los formatos y los valores válidos de dataSpace para cada formato.
Información de la versión:
< CAMERA_DEVICE_API_VERSION_3_3:
No está definido y no se debe acceder a él. Se debe suponer que dataSpace es HAL_DATASPACE_UNKNOWN, y el espacio de color adecuado, etc., se debe determinar a partir de las marcas de uso y el formato.
= CAMERA_DEVICE_API_VERSION_3_3:
Siempre lo establece el servicio de la cámara. HAL debe usar este espacio de datos para configurar la transmisión en el espacio de color correcto o para seleccionar entre las salidas de color y profundidad, si es compatible. Los valores del espacio de datos son las definiciones heredadas en graphics.h.
>= CAMERA_DEVICE_API_VERSION_3_4:
Siempre se establece mediante el servicio de la cámara. HAL debe usar este espacio de datos para configurar la transmisión en el espacio de color correcto o para seleccionar entre las salidas de color y profundidad, si es compatible. Los valores del espacio de datos se establecen con las definiciones del espacio de datos V0 en graphics.h.
formato int |
Es el formato de píxeles de los búferes de esta transmisión. El formato es un valor de la lista HAL_PIXEL_FORMAT_* en system/core/include/system/graphics.h o de los encabezados específicos del dispositivo.
Si se usa HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, el módulo gralloc de la plataforma seleccionará un formato según las marcas de uso que proporciona el dispositivo de la cámara y el otro extremo de la transmisión.
<= CAMERA_DEVICE_API_VERSION_3_1:
El dispositivo HAL de la cámara debe inspeccionar los búferes que se le entregan en la llamada posterior register_stream_buffers() para obtener los detalles del formato específicos de la implementación, si es necesario.
>= CAMERA_DEVICE_API_VERSION_3_2:
El framework no llamará a register_stream_buffers(), por lo que el sistema HAL debe configurar el ISP y la canalización del sensor en función únicamente de los tamaños, las marcas de uso y los formatos de las transmisiones configuradas.
altura de uint32_t |
uint32_t max_buffers |
void* priv |
Rotación de int |
Es la rotación de salida requerida de la transmisión, uno de los valores de camera3_stream_rotation_t. HAL debe inspeccionar esto junto con el ancho y la altura de la transmisión. Por ejemplo, si la rotación es de 90 grados y el ancho y la altura de la transmisión son 720 y 1280, respectivamente, el servicio de la cámara proporcionará búferes de tamaño 720 × 1280, y HAL debe capturar una imagen de 1280 × 720 y rotar la imagen 90 grados en sentido contrario a las manecillas del reloj. El campo de rotación no realiza ninguna acción cuando el tipo de transmisión es de entrada. El HAL de la cámara debe ignorar el campo de rotación para un flujo de entrada.
<= CAMERA_DEVICE_API_VERSION_3_2:
No está definido y no se debe acceder a él. HAL no debe aplicar ninguna rotación en las imágenes de salida.
>= CAMERA_DEVICE_API_VERSION_3_3:
Siempre se establece según el servicio de la cámara. HAL debe inspeccionar este campo durante la configuración de la transmisión y muestra -EINVAL si no puede realizar esa rotación. HAL siempre debe admitir CAMERA3_STREAM_ROTATION_0, por lo que una llamada a configure_streams() no debe fallar para una rotación no admitida si el campo de rotación de todas las transmisiones es CAMERA3_STREAM_ROTATION_0.
int stream_type |
Uso de uint32_t |
Las marcas de uso de gralloc para esta transmisión, según lo necesite el sistema HAL. Las marcas de uso se definen en gralloc.h (GRALLOC_USAGE_*) o en encabezados específicos del dispositivo.
En el caso de los flujos de salida, estas son las marcas de uso del productor de HAL. En el caso de los flujos de entrada, estas son las marcas de uso del consumidor de HAL. Las marcas de uso del productor y del consumidor se combinarán y, luego, se pasarán al módulo HAL de gralloc de la plataforma para asignar los búferes de gralloc para cada transmisión.
Información de la versión:
== CAMERA_DEVICE_API_VERSION_3_0:
No se garantiza ningún valor inicial cuando se pasa a través de configure_streams(). HAL no puede usar este campo como entrada y debe escribir sobre este campo con sus marcas de uso.
>= CAMERA_DEVICE_API_VERSION_3_1:
Para stream_type OUTPUT y BIDIRECTIONAL, cuando se pasa a través de configure_streams(), el valor inicial de este es las marcas de uso del consumidor. El HAL puede usar estas marcas de consumidor para decidir la configuración de la transmisión. Para stream_type INPUT, cuando se pasa a través de configure_streams(), el valor inicial es 0. Para todas las transmisiones que se pasan a través de configure_streams(), el HAL debe escribir en este campo con sus marcas de uso.
Ancho de uint32_t |
La documentación de esta struct se generó a partir del siguiente archivo:
- hardware/libhardware/include/hardware/ camera3.h