Qualcomm Camera HAL3: Resumen de puntos técnicos de desarrollo del proyecto

Resumir y organizar algunos puntos técnicos desarrollados por Qualcomm Camera HAL3.

Haga un registro para poder consultarlo fácilmente más adelante.

1. Directorio, entonces, archivo de configuración

productName es el nombre del proyecto

  • out Target路径:\out\target\product\productName\
  • chi-cdk:\proveedor\qcom\proprietary\chi-cdk\
  • Nodo ldc:\vendor\qcom\proprietary\chi-cdk\oem\qcom\node\ldc\
  • Así compilado por nodo:\vendor\lib64\camera\components\
  • caso de uso compilado de la siguiente manera: \vendor\lib64\com.qti.chiusecaseselector.so (debe compilar el caso de uso después de modificar el xml de la canalización)
  • compilado por chi-cdk: \vendor\lib64\hw\com.qti.chi.override.so
  • Caso de uso xml: chi-cdk\oem\qcom\topology\titan\fillmore\fillmore_usecase.xml
  • Pipelines xml文件: chi-cdk\oem\qcom\topology\titan\usecase-components\usecases\UsecaseZSL\pipelines\
  • Archivo de etiqueta de proveedor: chi-cdk\oem\qcom\vendortag\chivendortagoemdefines.h
  • RealTimeFeature.xml: chi-cdk\oem\qcom\topology\titan\usecase-components\segments\fillmore\RealTimeFeature.xml
  • camxoverridesettings.txt: un método de depuración temporal proporcionado por Qualcomm a los desarrolladores para controlar la impresión de registros, el volcado de datos, etc. En proveedor/etc/camera/ en el directorio del dispositivo, usted mismo debe crear manualmente los directorios cámara y camxoverridesettings.txt.

2. Rutas relacionadas con el conductor:

archivo bin: /vendor/lib64/camera (si elimina el archivo bin hasta que solo quede uno, solo se instalará uno cuando el controlador esté encendido, y solo esta cámara se abrirá cuando la cámara esté encendida)

Archivo de configuración:

  • \proveedor\qcom\proprietary\chi-cdk\oem\qcom\buildbins\build\android\binary_taro
  • /proveedor/qcom/proprietary/chi-cdk/oem/qcom/module

Archivo del controlador:

  • \vendor\qcom\proprietary\chi-cdk\oem\qcom\sensor\s5khm6

3.camxsettings.xml

Busque camxsettings.xml en /vendor/qcom/proprietary. Después de encontrarlo, cambie el valor de la variable definida en camxsettings.xml modificando camxoverridesettings.txt.

  • /vendor/etc/camera # echo enableDSM=FALSE >> camxoverridesettings.txt
  • /vendor/etc/camera # cat camxoverridesettings.txt

4.Configuración de registro de camxoverridesettings.txt:

registro de chi: Por ejemplo: CHX_LOG_ERROR(fmt, args);

adb shell "echo overrideLogLevels=0x1f >> /vendor/etc/camera/camxoverridesettings.txt"

O: adb shell setprop seller.debug.camera.overrideLogLevels 0x1F (definido en camxsettings.xml, diferentes códigos pueden ser diferentes)

Registros normalmente abiertos (ábralos según sea necesario, todos los registros se perderán y el rendimiento se verá afectado):

hal/núcleo/chi

  • adb shell "echo logInfoMask=0x50080 >> /vendor/etc/camera/camxoverridesettings.txt"   
  • adb shell setprop persist.vendor.camera.logVerboseMask 0xFFFFFFFF
  • adb shell setprop persist.vendor.camera.logEntryExitMask 0xFFFFFFFF
  • adb shell setprop persist.vendor.camera.logInfoMask 0xFFFFFFFF
  • adb shell setprop persist.vendor.camera.logWarningMask 0xFFFFFFFF
  • adb shell setprop persist.vendor.camera.logConfigMask 0xFFFFFFFF
  • adb shell setprop persist.vendor.camera.systemLogEnable VERDADERO
  • adb shell setprop persist.vendor.camera.logLogDRQMask 0xFFFFFFFF

registro de camx:

  • adb shell "echo overrideLogLevels=0xF >> /vendor/etc/camera/camxoverridesettings.txt"
  • adb shell "echo logVerboseMask=0x1000 >> /vendor/etc/camera/camxoverridesettings.txt"
  • adb shell "echo logInfoMask=0xFFFFFFFF >> /vendor/etc/camera/camxoverridesettings.txt"

5. Seleccione el registro del gráfico de características:

Chifeature2graphselector.cpp:1549 SelectFeatureGraphforRequestFromTable()

Etiqueta:"Gráfico de características seleccionadas para solicitud:"

Por lo general, primero debe ejecutar el siguiente comando para imprimir el registro:

  • adb shell echo "overrideLogLevels=0x9" >>/vendor/etc/camera/camxoverridesettings.txt
  • adb shell echo overrideLogLevels=8 >>echo/vendor/etc/camera/camxoverridesettings.txt

Diferentes plataformas tienen diferentes detalles:

8350:

  • constante estática UINT32 CHX LOG CONFIG MASK =4:
  • adb shell echo overrideLogLevels=4 >>/vendor/etc/camera/camxoverridesettings.txt

8450:

  • adb shell overrideLogLevels=8 >>"echo/vendor/etc/camera/camxoverridesettings.txt
  • CHX LOG INFO("Gráfico de características seleccionadas para la solicitud %u: %spFeature2RequestObject->GetAppFrameNumber (),requestGraph. pGraphDesc->pFeatureGraphName);

sm4350:

  • adb shell "echo overrideLogLevels=4>>/vendor/etc/camera/camxoverridesettings.txt
  • CHX LOG CONFIG(Feature2Mapping: Gráfico de características seleccionadas: %s"pChiFeature2GraphDesc->pFeatureGraphName);

6.Cómo encontrar una tubería

Búsqueda de código:

Encuentre chifeature2rawhdrdescriptor.cpp

Buscar ChiFeature2PipelineDescriptor

Búsqueda de registros:

Etiqueta: "Transmisión activada"


7.Crear canalizaciones()

AdvancedCameraUsecase, UsecaseMultiCamera y otros casos de uso llamarán a CreatePipelines() para crear canalizaciones.

chifeature2 también llamará a CreatePipelines() para crear una canalización

Por ejemplo:

En el modo SAT, el modo de vista previa no es característica2 y el modo de fotografía es característica2:

//Tres canalizaciones creadas: SATOfflinePreview; RealtimePreviewSATO; Merge3YuvCustomTolYuv


8. Cómo encontrar el archivo de configuración del nodo de canalización:

1. ETIQUETA de registro: "StreamingOn for pipeline" Verifique la canalización actual
2. Busque el xml de la canalización en el directorio \vendor\qcom\proprietary\chi-cdk\oem\qcom\topology\titan
3. Busque en el xml de la canalización <CamxInclude segment=" xxxxxxxxxx"/>
4. Encuentre el xml de CamxInclude
5. Agregue el nodo


9. Agregue impresión de pila:

Agregue impresión de pila en \camx\src\core\hal\camxhal3stream.cpp

camx/src/lib/build/android/Android.mk Configuración LOCAL_SHARED_LIBRARIES += libutilscallstack

En el código donde desea imprimir la pila, agregue: android::CallStack stackprintf("xxxxxx");


10. Agregue una VendorTag para controlar la función:

Para obtener más información, consulte "Agregar una etiqueta de proveedor".

Cámara Qualcomm HAL3: agregue un blog-CSDN de VendorTag_shawn·xiao


11.Archivo de configuración de ID de cámara

chi-cdk\oem\qcom\multicamera\chimcxcameraconfig\configs\fillmore\fillmore_legacymc.xml


12. Verifique el impacto de los algoritmos en el nodo.

Puedes usar memcopy Node para excluir: 


13. Agregue propiedades del sistema de depuración a la capa inferior:

Archivo de encabezado: #include <cutils/properties.h>

Agregue en \chi-cdk\oem\qcom\node\awrawhdr\build\android\Android.mk:

LOCAL_SHARED_LIBRARIES :=

libcutils \

Ejemplo: if(property_get_int32("debug.vendor.camera.dumpawraw",0))


13. Ver registros de AEC:

Principalmente mira el segundo.

(1). 05-14 06:40:13.737 7710 7779 V CamX: [VERB][STATS_AEC] caecxcontrol.h:586: PrintFrameControl CID 1 función 0 fID 227 modo PerFrame omitido:0 flash apagado lux 276,5 ISO 640 (corto seguro largo) G 13.319 13.319 13.319 ET 60000000 60000000 60000000 SI 799110720 799110720 799110720 establecido 1 brillo establecido 1 FL 219.9 instantánea normal LED1 0 LED2 0 LEDAF 0 LEDFD 0 predictivo 1.0 duración del flash 0 compenDB 1.000 compenADRC 1.000 shortBlend 1.000000 FinalFlickerMode 1

(2) Ganancia:TiempoExp

14. Eliminar el tamaño QCFA de la configuración del controlador

Busque el archivo de configuración del controlador anotado

qssi12_7450/vendor/qcom/proprietary/chi-cdk/oem/qcom/sensor/s5khm6/s5khm6_sensor.xml

Encuentre la definición de Qcfa y elimínelas todas.


15. Encuentre los valores de exposición máximo, medio y mínimo.

\chi-cdk\core\chiframework\chimcxdevicecaps.cpp 

Función de valor de exposición de relleno: FillExposureTime()

\camx\src\core\camximagesensordata.cpp 

Obtenga la configuración del xml del sensor y calcule los valores de exposición mínimo, medio y máximo asignados: GetSensorStaticCapability()

/chi-cdk/oem/qcom/sensor/s5khm6/s5khm6_sensor.xml

Configurado en el archivo de configuración del controlador:
<exposureControllnfo>
<verticalOffset>10<verticalOffset>
<maxLineCount>65525<maxLineCount> 

16. Casos de uso y canalizaciones comunes

Lo mencioné en publicaciones de blog anteriores, así que lo enumeraré nuevamente.

Diferentes modelos tienen diferente rendimiento y posicionamiento del producto. Incluso si la línea base es la misma, el caso de uso, etc., puede ser diferente.

El enfoque de Qualcomm ofrece a los fabricantes de teléfonos móviles mucho espacio para la personalización: por ejemplo, para un determinado modelo, UseCase se puede reutilizar en escenarios y el canal correspondiente también se puede utilizar o reutilizar.

17. Modificar los permisos de los archivos.

Los resultados de la calibración se escriben en el parche de calib_result, pero los permisos del archivo 777 no se configuran correctamente, lo que hace que el archivo calib_result generado no tenga permisos legibles por terceros.

Se puede ver a través de adb shell ls -laZ calib_result como -rwx------

Modifique el parche de la siguiente manera: después de la depuración, el tercero puede leer calib_result y el permiso se convierte en -rwxrwxrwx:

{

        mode_t pCurMask = umask(0);

        ......

        umask(pCurMask);

}

18. Implemente el volcado yuv y raw configurando camxoverridesettings.txt

volcar crudo:

autoImageDumpMask=1 
offlineImageDumpOnly=FALSE 
reprocessDump=TRUE 
autoImageDump=TRUE 
autoInputImageDumpMask=0x1
autoImageDumpIFEoutputportMask=0xFB8

volcar yuv:

autoImageDumpMask=1 
offlineImageDumpOnly=FALSO 
reprocessDump=TRUE 
autoImageDump=TRUE  
autoImageDumpIPEoutputportMask=0x700

19. Continuará y seguirá agregándose 

Supongo que te gusta

Origin blog.csdn.net/geyichongchujianghu/article/details/131139208
Recomendado
Clasificación