高通平台--camera驱动代码结构

1、camx/src/core

sensor、manager、pipeline等结构的实现

camxpipeline.h

 /// @brief Pipeline create input data
 struct PipelineCreateInputData
 {
     ChiContext*               pChiContext;                  ///< ChiContext pointer
     const PipelineDescriptor* pPipelineDescriptor;          ///< Pipeline descriptor
     UINT                      pipelineIndex;                ///< Pipeline Index from the Session
     BOOL                      isRealTime;                   ///< Is it a real time pipeline


     BOOL                      isSecureMode;                 ///< Mode of pipeline Secure/Non-secure
  };

 

  /// @brief Pipeline create output data
  struct PipelineCreateOutputData
  {
      Pipeline*                pPipeline;                 ///< Created pipeline
      UINT32                   numInputs;                 ///< Number of inputs
      /// @todo (CAMX-1512) Instead of Chi structures use wrappers
      ChiPipelineInputOptions* pPipelineInputOptions;     ///< Input buffer requirements for the create pipeline
  };

camxnode.h

  /// @brief Node create input data                                                                                                                                                                                                  
  struct NodeCreateInputData
  {
      const PerNodeInfo*           pNodeInfo;            ///< Node info
      Camera3Stream**              ppCamera3Streams;     ///< Camera3 streams
      Pipeline*                    pPipeline;            ///< Pipeline pointer
      UINT                         pipelineNodeIndex;    ///< This node instance's index in the pipeline nodes
      const HwFactory*             pFactory;             ///< HwFactory pointer
      ChiContext*                  pChiContext;          ///< Chi Context
      ChiNodeCallbacks*            pChiNodeCallbacks;    ///< CHINode callbacks pointer
      CHIAFALGORITHMCALLBACKS*     pAFAlgoCallbacks;     ///< Algo Calllback Interface for Chi
      CHIAECALGORITHMCALLBACKS*    pAECAlgoCallbacks;    ///< Algo Calllback Interface for Chi
      CHIAWBALGORITHMCALLBACKS*    pAWBAlgoCallbacks;    ///< Algo Calllback Interface for Chi
      CHIAFDALGORITHMCALLBACKS*    pAFDAlgoCallbacks;    ///< Algo Calllback Interface for Chi
      CHIASDALGORITHMCALLBACKS*    pASDAlgoCallbacks;    ///< Algo Calllback Interface for Chi
      CHIPDLIBRARYCALLBACKS*       pPDLibCallbacks;      ///< Algo Calllback Interface for Chi
      CHIISPHVXALGORITHMCALLBACKS* pHVXAlgoCallbacks;    ///< HVX Algo Callback Interface for Chi
  };
  /// @brief Node create output data
 struct NodeCreateOutputData                                                                                                                                                                                                        
  {
      Node*           pNode;                                ///< Created node object pointer
      const CHAR*     pNodeName;                            ///< Name of the node (filled in the by the derived node)
      NodeCreateFlags createFlags;                          ///< Create flags
      UINT            maxNumCmdBufferManagers;              ///< Max require number of command buffer managers
     UINT            maxOutputPorts;                       ///< Max number of output ports supported
      UINT            maxInputPorts;                        ///< Max number of input ports supported
      BufferGroup     bufferComposite;                      ///< Buffer composite info
  };


  /// @brief Node capture request data.
  struct NodeProcessRequestData
  {
      CaptureRequest*      pCaptureRequest;                    ///< Stream configuration pointer
      DependencyUnit       dependencyInfo[MaxDependencies];    ///< List of Dependency info that will be reported back
                                                              ///  to topology. Each element in the list is a set of
                                                               ///  property and buffer dependencies
      UINT                 numDependencyLists;                 ///  Number of entries in the Dependency List
      PerBatchedFrameInfo* pPerBatchedFrameInfo;               ///< Per batched frame info
      INT32                processSequenceId;                  ///< Identifier for the node to track its processing order
      BOOL                 bindIOBuffers;                      ///< Flag indicating whether node requested input, output buffers                                                                                                     
                                                               ///  to be available on this sequenceId
      BOOL                 isSequenceIdInternal;               ///< True if processSequenceId belongs to base node
  };
 

camxsession.h

 /// @brief Pipeline descriptor handle used to describe a pipeline
  struct PipelineDescriptor
  {
      PerPipelineInfo         pipelineInfo;                               ///< Pipeline info that will be used to create the
                                                                          ///  actual pipeline object
      UINT                    numOutputs;                                 ///< Number of outputs (<= MaxPipelineOutputs)
      PipelineOutputData      outputData[MaxPipelineOutputs];             ///< Output data
      UINT                    numInputs;                                  ///< Number of inputs  (<= MaxPipelineInputs)
      PipelineInputData       inputData[MaxPipelineInputs];               ///< Input data for this pipeline
      PipelineDescriptorFlags flags;                                      ///< Flags
      UINT                    numBatchedFrames;                           ///< Number of framework frames batched
      UINT                    maxFPSValue;                                ///< maxFPSValue info of batched frames
      UINT32                  cameraId;                                   ///< Camera Id of pipeline
      CHAR                    pipelineName[MaxStringLength256];           ///< Name of this pipeline
      VOID*                   pPrivData;                                  ///< Camx private data, carrying pipeline obj ptr.
      MetaBuffer*             pSessionMetadata;                           ///< Metadata buffer published by the Chi Usecase
  };
 

 

2、camx/src/core/hal

camera provider 在hal的接口实现

3、camx/src/core/chi

主要是于chi api的函数映射相关文件

4、camx/src/swl

软件流程和node实现,包括stats、jpeg、sensor等

5、camx/src/hwl

硬件相关流程与node的实现,平台支持。包括ife,bps,ipe等

6、vendor/qcom/proprietary/chi-cdk/vendor

chi api ,即hal3的拓展部分

actuator :VCM驱动配置

sensor:sensor驱动配置

eeprom:eeprom驱动配置

module:模组驱动配置

flash:闪光灯驱动配置

fd:人脸参数配置

tuning:效果调试参数

ois:ois驱动配置

node:各个node的实现

topology:拓扑图xml

 

后续高通代码逻辑结构会在这里继续补充

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值