Cámara Qualcomm HAL3: agregar una función

I. Descripción general

Tomando la función HDR como ejemplo, agregue una nueva función en CamX

  1. Obtenga datos de múltiples cuadros en el formato P010 de la función ascendente (upstream) como entrada
  2. algoritmo de ejecución de canalización (SWMFMergeYuv)
  3. Genere datos de un solo cuadro en el mismo formato que la salida y envíelos a la función de flujo descendente (flujo descendente)

2. Agregar

2.1 Derivar característica de la clase base de característica

2.1.1 Documentos importantes:

  • /chi-cdk/oem/qcom/feature2/chifeature2hdr/chifeature2hdr.cpp
  • /chi-cdk/oem/qcom/feature2/chifeature2hdr/chifeature2hdr.h
  • /chi-cdk /oem/qcom/feature2/chifeature2hdr/common/build/android/Android.mk

2.1.2 Funciones importantes

  • DoQueryCaps(){ }
  • CrearCaracterística(){ }
  • OnSelectFlowToExecuteRequest (){ }
  • HacerPrepareRequest(){ }
  • DoStreamNegotiation(){ }

2.2 Agregar descriptor de características (descriptor de características)

2.2.1 El descriptor de características CHI incluye los siguientes componentes detallados:

  • Descriptor del búfer de destino de entrada/salida de ChiFeature.
  • Descriptor del puerto de entrada/salida de ChiFeature.
  • Descriptor de canalizaciones ChiFeature.
  • Descriptor de información de sesión de ChiFeature.
  • Dependencia de entrada de ChiFeature y descriptor de configuración.
  • Descriptor de información de etapa ChiFeature

Los números de sesión, canalización y puerto comienzan en 0 y aumentan en 1

Si hay dos canalizaciones en una sesión, los ID de canalización son 0 y 1

2.2.2 Definiciones importantes:

proveedor\qcom\proprietary\chi-cdk\core\chifeature2\Chifeature2utils.h

Asegúrese de que todos los objetivos de entrada/salida estén enumerados en TargetStreamMap de chicature2utils.h

proveedor\qcom\proprietary\chi-cdk\core\chifeature2\Chifeature2utils.h

Agregar un nuevo tipo de característica a ChiFeature2Type

2.2.3 chifeature2HDRdescriptor.cpp se coloca en el directorio correcto

Coloque el archivo de descriptor de funciones chifeature2HDRdescriptor.cpp en el directorio de archivos correcto

2.2.4 Agregar ChiFeature2TargetDescriptor

La estructura ChiFeature2TargetDescriptor describe los objetivos de entrada/salida de la característica.

El nombre del búfer de destino de ChiFeature2TargetDescriptor debe ser coherente con el nombre del búfer de destino de la canalización (SWMFMergeYuv) utilizada por la función.

2.2.5 Agregar ChiFeature2PortDescriptor

La estructura ChiFeature2PortDescriptor describe los puertos de funciones, incluida la información de la sesión, la canalización, el índice del puerto, la dirección del puerto, el tipo de puerto y la asignación del puerto de funciones al destino.

2.2.6 Agregar ChiFeature2PipelineDescriptor

La estructura ChiFeature2PipelineDescriptor describe la información sobre la tubería en la característica.

2.2.7 Agregar ChiFeature2SessionDescriptor

La estructura ChiFeature2SessionDescriptor describe la información de la sesión en Feature

2.2.8 Agregar ChiFeature2StageDescriptor

ChiFeature2StageDescriptor descripción de la estructura Id. de etapa, nombre de etapa, puntero a la historia del descriptor de dependencia de entrada

2.2.9 Agregar el descriptor ChiFeature2 

La estructura ChiFeature2Descriptor describe el ID de la función, el nombre de la función y el número de etapas de la función, y apunta a la tabla de descriptores de sesión.

pFeatureName("HDRDemo") debe ser el mismo que ppCapabilities("HDRDemo ") en DoQueryCaps()

3. Utilice el descriptor de funciones (Descriptor) en Feature2

3.1 Incluir archivos descriptores de funciones y clases de funciones en Android.mk

/chi-cdk/oem/qcom/feature2/chifeature2hdr/common/build/android/Android.mk

# Block this if use generated
LOCAL_SRC_FILES := \
    chifeature2hdrdemo/chifeature2hdr.cpp \
    chifeature2graphselector/descriptors/nongenerated/chifeature2hdrdescriptor.cpp
LOCAL_INC_FILES := \
    chifeature2hdr/chifeature2hdr.h
# Binary name
LOCAL_MODULE := com.qti.feature2.hdr
...
include $(BUILD_SHARED_LIBRARY)

3.2 oem/Android.mk中 Incluye función HDR mk

/chi-cdk/oem/Android.mk

include $(CAMX_CHICDK_OEM_PATH)/qcom/feature2/chifeature2hdrdemo/common/build/android/Android.mk
include $(CAMX_CHICDK_OEM_PATH)/qcom/feature2/chifeature2realtimeserializer/common/build/android/Android.mk

3.3 PRODUCT_PACKAGES Incluir "Libración de clase de función HDR" en el archivo mk de configuración del proyecto

com.qti.feature2.hdrdemo.so es compilado y generado por .cpp y .h de la función HDR

/chi-cdk/configs/product.mk

PRODUCT_PACKAGES = com.qti.feature2.rawhdr
PRODUCT_PACKAGES = com.qti.feature2.hdrdemo
PRODUCT_PACKAGES = com.qti.feature2.rt

3.4 LOCAL_SHARED_LIBRARIES 中 Incluir "Libración de clase de característica HDR"

Cuando utilice la función HDRDemo en el selector de gráficos, debe agregar com.qti.feature2.hdrdemo a LOCAL_SHARED_LIBRARIES

/chi-cdk/oem/qcom/feature2/chifeature2graphselector/sm8350/build/android/Android.mk

LOCAL_SHARED_LIBRARIES = \
    com.qti.feature2.rawhdr \
    com.qti.feature2.hdrdemo \
    com.qti.feature2.swmf \

4. Fin

Supongo que te gusta

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