const HALCallbacks* pHALCallbacks,
Camera3StreamConfig* pStreamConfig,
BOOL* isOverrideEnabled,
VOID** ppPrivate);
/// @brief Defines the prototype for the torch mode status change callback method from to the framework. Please refer to
/// the torch_mode_status_change documentation in hardware/camera_common.h.
VOID (*CHIFinalizeOverrideSession)(
const Camera3Device* pCamera3Device,
UINT64* pSession,
VOID** ppPrivate);
/// @brief Called by the driver to inform about session closing
VOID (*CHITeardownOverrideSession)(
const Camera3Device* pCamera3Device,
UINT64* pSession,
VOID* pPrivate);
/// @brief Called by the driver to pass on capture request call to CHI
INT (*CHIOverrideProcessRequest)(
const Camera3Device* pCamera3Device,
Camera3CaptureRequest* pCaptureRequest,
VOID* pPrivate);
/// @brief Called by the driver to allow for additional override processing during open()
INT(*CHIExtendOpen)(
UINT32 cameraId,
VOID* pPrivateData);
/// @brief Called by the driver to allow for additional override processing during close()
INT(*CHIExtendClose)(
UINT32 cameraId,
VOID* pPrivateData);
/// @brief Called by the driver to allow override to remap special camera IDs into logical camera IDs
UINT32(*CHIRemapCameraId)(
UINT32 frameworkCameraId,
CameraIdRemapMode mode);
/// @brief Interface to allow various override-specific settings to be toggled.
UINT32(*CHIModifySettings)(
VOID* pPrivateData);
/// @brief Get any vendor tag specific request settings the override wants to get added to the default settings
VOID (*CHIGetDefaultRequestSettings)(
UINT32 frameworkCameraId,
INT requestTemplate,
const Metadata** pAdditionalMetadata);
/// @brief Called by the driver to allow for flush()
INT(*CHIOverrideFlush)(
const Camera3Device* pCamera3Device);
INT(*CHIParallelQuery) (INT num, char* list[]);
INT(*CHISetCallback) (void*);
};
typedef VOID(CHIHALOverrideEntry)(CHIAppCallbacks pCHIAppCallbacks);
这个结构体是函数指针,映射关系:`vendor/qcom/proprietary/camx/src/core/hal/camxhal3module.h`中定义了 CHIAppCallbacks m\_ChiAppCallbacks;
CHIAppCallbacks m_ChiAppCallbacks; ///< CHI HAL override entry
`vendor/qcom/proprietary/camx/src/core/hal/camxhal3module.cpp`中的 HAL3Module构造函数中,存在下面的执行语句:
CHIHALOverrideEntry funcCHIHALOverrideEntry =
reinterpret_cast<CHIHALOverrideEntry>(
CamX::OsUtils::LibGetAddr(m_hChiOverrideModuleHandle, "chi_hal_override_entry"));
if (NULL != funcCHIHALOverrideEntry)
{
funcCHIHALOverrideEntry(&m_ChiAppCallbacks); //对应到 chxextensioninterface.cpp 中的chi_hal_override_entry函数
CAMX_ASSERT(NULL != m_ChiAppCallbacks.CHIGetNumCameras);
CAMX_ASSERT(NULL != m_ChiAppCallbacks.CHIGetCameraInfo);
CAMX_ASSERT(NULL != m_ChiAppCallbacks.CHIFinalizeOverrideSession);
CAMX_ASSERT(NULL != m_Ch