Aprendizaje de la arquitectura de Android Qualcomm Camx: Capítulo 1

Los artículos sobre la introducción de la arquitectura Camx de Qualcomm siguen siendo raros. Haré todo lo posible para hablar lo más posible y dejarlo claro y claro ~

Este artículo se divide en los siguientes puntos para ampliar:

1) Diagrama de arquitectura general de Camx;

2) Componentes y conceptos básicos de Camx;

3) Estructura de directorio de código Camx;

1. Diagrama de arquitectura general de Camx

Los modelos actuales de Android, que utilizan chips Qualcomm, utilizan básicamente la arquitectura camx.

La antigua arquitectura se llamaba mm-camera La principal diferencia entre la arquitectura camx y la arquitectura anterior era la migración del código de la capa de interfaz del chip de hardware / qcomvendor / qcom / owner /.

Veamos primero el diagrama de arquitectura general de camx:

Diagrama de arquitectura de Qualcomm camxEn la figura anterior, podemos ver que en la capa hal, Qualcomm combina su propio chip hardware y agrega una capa de lógica. Esta capa de lógica se denomina internamente arquitectura camx.

Echemos un vistazo a la arquitectura de Qualcomm camx ¿Cuál es el flujo general de datos de la cámara?Flujo de procesamiento de datos de la cámara Qualcomm

  1. En la figura anterior, podemos ver claramente que los datos de la cámara salen del sensor, primero a través de IFE, y luego se dividen en dos situaciones: vista previa / video y foto. Si es una vista previa o un video, IPE lo procesa primero y finalmente lo envía a la pantalla. Si se trata de tomar una foto, BSP la procesa primero, luego a través del codificador JPEG y finalmente se guarda como una salida de imagen.

  2. IFE, IPE, BPS, JPEG, representan una unidad de procesamiento de hardware dentro del chip. El procesamiento de datos en estas unidades aún es relativamente complicado. En diferentes unidades de procesamiento, se llevará a cabo algún procesamiento de algoritmos complejos. Hay un entendimiento y un concepto basico.

IFE: interfaz de imagen 
IPE: motor de procesamiento de imágenes 
BPS: código de copia de la sección de procesamiento de Bayer

Dos, conceptos y componentes básicos de Camx

Una arquitectura siempre se compone de algunos componentes básicos A continuación, entendamos cuáles son los componentes básicos de la arquitectura camx.

1) UseCase

Un conjunto de transmisiones configuradas por el cliente combinado con un conjunto de 
propiedades estáticas que especifican el procesamiento de esas transmisiones 
( un conjunto de transmisiones configuradas por el cliente combinado con un conjunto de propiedades estáticas que especifican el procesamiento de esas transmisiones ). 

Consulte createCaptureSession en Android CameraDevice. documentación

Ver createCaptureSession en Android CameraDevice

Luego combinamos el siguiente código para entenderlo.

Los amigos que están familiarizados con la API de Camera2 (no importa si no está familiarizado con ella, lo dejaré en claro) deben saber que el siguiente código establece tanto la superficie de vista previa como la superficie de video, y luego crea una sesión, lo que significa que se requiere una vista previa de los datos de la cámara para grabar y grabar. Suponiendo que el tamaño que configuré para la vista previa es 1080 x 720 y el video es 1080p, entonces esta vista previa 1080 x 720 + video 1080p es un caso de uso (caso de uso). Otra analogía.

// UseCase: 预览 + 录像
List <Surface> superficies = new ArrayList <> (); 

if (previewSurface! = null && previewSurface.isValid ()) { 
  superficies.add (previewSurface); 
  mPreviewBuilder.addTarget (previewSurface); 
} 

if (mMediaRecorder! = null && mMediaRecorderSurface! = null  
      && mMediaRecorderSurface.isValid ()) { 
  superficies.add (mMediaRecorderSurface); 
  mPreviewBuilder.addTarget (mMediaRecorderSurface); 
} 

mCameraDevice.createCaptureSession (superficies, ..., ...); 复制 代码

UseCase tiene muchas clases derivadas en camx. Aquí es donde camx crea diferentes objetos de casos de uso para diferentes flujos para administrar y seleccionar funciones, y crear canalizaciones y sesiones.

Clase derivada de UseCase

2) Característica

Representa una función específica. Las características de Qualcomm incluyen HDR (alto rango dinámico), SuperNight (escena súper nocturna), MFNR (reducción de ruido de múltiples cuadros), etc., caso de uso para seleccionar la característica correspondiente y luego asociar un conjunto de tuberías, la capa superior envía una solicitud de solicitud, la capa hal solicitará seleccionar la característica correspondiente.Diagrama de clases de entidad

3) nodo

Node es un módulo abstracto único con funciones de procesamiento independientes, que puede ser una unidad de software o una unidad de hardware. El nodo es una clase padre muy importante en camx. Es un nodo intermedio que procesa las solicitudes de la cámara y se utiliza para procesar las solicitudes emitidas por la canalización.

 El nodo Node es muy importante en la arquitectura camx chi, y el procesamiento de datos se realiza a través del nodo Node empaquetado.

nodo nodo

4) tubería

Colección de una serie de nodos. La canalización proporciona una colección de todos los recursos para una única función específica y mantiene todos los recursos de hardware y el flujo de datos.

5) sesión

Una colección de varias canalizaciones relacionadas, que se utiliza para administrar la unidad de control abstracta de la canalización, que contiene al menos una canalización, controla todos los recursos de hardware y controla el flujo de solicitudes y la entrada y salida de datos dentro de cada canalización.

6) Enlace

Defina los puertos de conexión (puerto de entrada y puerto de salida) de diferentes puertos.

7) Puerto

Como puertos de entrada y salida de Node, utilice el archivo XML de definición de estructura SrcPort y DstPort.

image.png

8) Topologías

Una topología es un gráfico acíclico dirigido (DAG) que especifica una instanciación de 
un caso de uso 
(la topología es un gráfico acíclico dirigido (DAG)  ) 

Definición XML de casos de uso y topologías asociadas 

Para CamX, este gráfico define el HW, SW y no Nodos de procesamiento de Qualcomm  
y el flujo de datos entre los nodos

Relación entre componentes

Finalmente, resumamos la relación entre los componentes básicos. De acuerdo con las necesidades de la capa superior, la secuencia correspondiente a la configuración se reducirá y el caso de uso correspondiente se seleccionará de acuerdo con la secuencia aplicada. Una vez completada la selección del caso de uso, se seleccionará la característica requerida y luego diferentes características se asociará con la tubería correspondiente. Sabemos que la canalización está compuesta por una serie de nodos y, finalmente, la secuencia de la configuración superior será procesada por cada nodo.

Relación entre componentes

En tercer lugar, la estructura del directorio de código

El código de camx está en el directorio vendor / qcom / owner /, dividido en dos grandes directorios, camx y chi-cdk.

1) Directorio en CamX

Catálogo en CamX

core está dividido en directorios hal y chi: almacena el módulo de implementación central de CamX 

hal /: hal / directorio 
chi / que implementa la interfaz hal3 : chi / directory 

hwl / que es responsable de la interacción de CHI /: almacena su propio algoritmo con Nodo de hardware de capacidad de computación independiente: administrado por csl 
swl /: nodo de tienda que no tiene potencia de computación independiente y debe depender de la CPU. 
csl /: es responsable del módulo de comunicación entre camx y el controlador de la cámara, y 
      proporciona un controlador de cámara unificado interfaz de control para camx

2) Directorio en chi-cdk

Directorio en chi-cdk

core /: Almacena los módulos centrales implementados por CHI, responsable de interactuar con Camx y realizar el marco general 
y el procesamiento comercial de CHI . 

oem / qcom / topolog /: almacenar información de configuración xml del caso de uso definido por el usuario 
oem / qcom / node /: almacenar nodos de función definidos por el usuario 
oem / qcom / module /: almacenar diferentes archivos de configuración del sensor, que son necesarios cuando se inicializa el sensor Usado . 
oem / qcom / tuning /: almacena archivos de configuración de parámetros de efectos en diferentes escenarios. 
oem / qcom / sensor /: almacena la única información de diferentes sensores y registra los parámetros de configuración 
oem / qcom / actuator /: almacena la información de configuración de diferentes módulos de enfoque. 
oem / qcom / ois /: almacena la información de configuración del módulo anti-vibración. 
oem / qcom / flash /: almacena la información de configuración del módulo flash. 
oem / qcom / eeprom /: almacena la información de configuración del módulo de almacenamiento externo eeprom. 
oem / qcom / fd /: almacena la información de configuración del módulo de reconocimiento facial. 
Copiar codigo

* He estado involucrado en el desarrollo relacionado con la cámara de Android durante 5 años,

* Actualmente trabajando en Shenzhen,

* Bienvenido a seguir las notas de Xiaochi de mi cuenta pública de WeChat  

* Espero comunicarme y aprender con más amigos ~

-------- 2021.03.27 Shenzhen 23:54

Supongo que te gusta

Origin blog.51cto.com/15152644/2679188
Recomendado
Clasificación