app测试面试题及答案,Camera camx hal-架构,2024最新爱奇艺Android社招面试题目

    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
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值