资讯详情

Camx关键流程和log

一、重要log关键字: cameraservice::conn //查看api和camera id

camxpipeline.cpp "Topology: Creating Pipeline %s, numNodes %d isSensorInput %d isRealTime %d", //查看pipeline和node数 "Topology::%s Node::%s Type %d numInputPorts %d numOutputPorts %d", "Topology: Pipeline[%s] Link: Node::%s(outPort %d) --> (inPort %d) Node::%s using format %d" ///检查一切pipeline和link node

chxsensorselectmode.cpp "cameraId:%d, Selected Usecase: %d, SelectedMode W=%d, H=%d, FPS:%d, NumBatchedFrames:%d, modeIndex:%d" //检查最终选择usecase(见底部SensorModeSelectUseCase)和sensormode以及modeIndex

CHX_LOG_CONFIG("Session_parameters FPS range %d:%d, previewFPS %d, videoFPS %d " "BatchSize: %u HALOutputBufferCombined %d FPS: %u SkipPattern: %u, " "cameraId = %d selected use case = %d", minSessionFps, maxSessionFps, m_previewFPS, m_videoFPS, m_usecaseNumBatchedFrames, m_HALOutputBufferCombined, m_usecaseMaxFPS, *m_pStatsSkipPattern, logicalCameraId, selectedUsecaseId);

CHX_LOG_CONFIG("MultiCamera usecase selected"); CHX_LOG_CONFIG("ZSL usecase selected"); CHX_LOG_CONFIG("Raw JPEG usecase selected"); CHX_LOG_CONFIG("Default usecase selected");

CHX_LOG_INFO("usecase ID:%d",usecaseId); ///最终选择usecaseId

CHX_LOG("Selected EISv3 usecase"); CHX_LOG("Selected EISv2 usecase"); CHX_LOG_INFO("usecase %s, pipelineName %s",///最终选择usecase pSelectedUsecase->pUsecaseName, pSelectedUsecase->pPipelineTargetCreateDesc->pPipelineName);

二、usecaseId和usecase关键流程: CDKResult ExtensionModule::InitializeOverrideSession( uint32_t logicalCameraId, const camera3_device_t* pCamera3Device, const chi_hal_ops_t* chiHalOps, camera3_stream_configuration_t* pStreamConfig, int* pIsOverrideEnabled, VOID** pPrivate) { selectedUsecaseId = m_pUsecaseSelector->GetMatchingUsecase(...) //选择的usecaseId CHX_LOG_CONFIG("Session_parameters FPS range %d:%d, previewFPS %d, videoFPS %d " "BatchSize: %u HALOutputBufferCombined %d FPS: %u SkipPattern: %u, " &nbp;                "cameraId = %d selected use case = %d",                        minSessionFps,                        maxSessionFps,                        m_previewFPS,                        m_videoFPS,                        m_usecaseNumBatchedFrames,                        m_HALOutputBufferCombined,                        m_usecaseMaxFPS,                        *m_pStatsSkipPattern,                        logicalCameraId,                        selectedUsecaseId);

   m_pSelectedUsecase[logicalCameraId] = m_pUsecaseFactory->CreateUsecaseObject(...)  //根据usecaseId,创建usecase }

chxusecaseutils.cpp UsecaseId UsecaseSelector::GetMatchingUsecase(     const LogicalCameraInfo*        pCamInfo,     camera3_stream_configuration_t* pStreamConfig,     cam_app_type appType) { CHX_LOG_CONFIG("MultiCamera usecase selected"); CHX_LOG_CONFIG("ZSL usecase selected"); CHX_LOG_CONFIG("Raw + JPEG usecase selected"); CHX_LOG_CONFIG("Default usecase selected");

CHX_LOG_INFO("usecase ID:%d",usecaseId);  //最终选择的usecaseId }

chxusecaseutils.cpp ChiUsecase* UsecaseSelector::DefaultMatchingUsecase(     camera3_stream_configuration_t* pStreamConfig) {     CHX_LOG_INFO("Adding prune setting #%u - %s = %s", pruneSettings.numSettings, pGroup, pType);     CHX_LOG("Only selecting GPU usecases");     CHX_LOG("UsecaseVideoHFRNo3A is selected for HFR");     CHX_LOG("Selected EISv3 usecase");     CHX_LOG("Selected EISv2 usecase");     CHX_LOG_INFO("usecase %s, pipelineName %s",        //最终选择的usecase             pSelectedUsecase->pUsecaseName, pSelectedUsecase->pPipelineTargetCreateDesc->pPipelineName); }

chxusecaseutils.cpp Usecase* UsecaseFactory::CreateUsecaseObject(     LogicalCameraInfo*              pLogicalCameraInfo,     ///< camera info     UsecaseId                       usecaseId,              ///< Usecase Id     camera3_stream_configuration_t* pStreamConfig)          ///< Stream config {     switch (usecaseId)     {         case UsecaseId::PreviewZSL:         case UsecaseId::VideoLiveShot:             pUsecase = AdvancedCameraUsecase::Create(pLogicalCameraInfo, pStreamConfig, usecaseId);             break;         case UsecaseId::MultiCamera:             ...             pUsecase = UsecaseDualCamera::Create(pLogicalCameraInfo, pStreamConfig); ...             pUsecase = UsecaseMultiCamera::Create(pLogicalCameraInfo, pStreamConfig); ....             break;         case UsecaseId::Torch:             pUsecase = UsecaseTorch::Create(pLogicalCameraInfo, pStreamConfig);             break;         case UsecaseId::SuperSlowMotionFRC:             pUsecase = UsecaseSuperSlowMotionFRC::Create(pLogicalCameraInfo, pStreamConfig);             break;         ...     } }

chxadvancedcamerausecase.cpp AdvancedCameraUsecase* AdvancedCameraUsecase::Create(     LogicalCameraInfo*              pCameraInfo,     camera3_stream_configuration_t* pStreamConfig,     UsecaseId                       usecaseId) {      pAdvancedCameraUsecase->Initialize(pCameraInfo, pStreamConfig, usecaseId); }

CDKResult AdvancedCameraUsecase::Initialize(     LogicalCameraInfo*              pCameraInfo,   ///< Camera info     camera3_stream_configuration_t* pStreamConfig, ///< Stream configuration     UsecaseId                       usecaseId)     ///< Identifier for the usecase function {     FeatureSetup(pStreamConfig);     SelectUsecaseConfig(pCameraInfo, pStreamConfig); }

CDKResult AdvancedCameraUsecase::SelectUsecaseConfig(     LogicalCameraInfo*              pCameraInfo,   ///< Camera info     camera3_stream_configuration_t* pStreamConfig)  ///< Stream configuration {     if ((UsecaseId::PreviewZSL    == m_usecaseId) ||         (UsecaseId::YUVInBlobOut  == m_usecaseId) ||         (UsecaseId::VideoLiveShot == m_usecaseId) ||         (UsecaseId::MultiCamera   == m_usecaseId) ||         (UsecaseId::QuadCFA       == m_usecaseId) ||         (UsecaseId::RawJPEG       == m_usecaseId))     {         ConfigureStream(pCameraInfo, pStreamConfig);         BuildUsecase(pCameraInfo, pStreamConfig);     } else {         m_pChiUsecase = UsecaseSelector::DefaultMatchingUsecase(pStreamConfig);     } }

AdvancedCameraUsecase::ConfigureStream(..) {     AdvancedCameraUsecase::ConfigFdStream() //在640x480的基础上进行裁剪,     // 4:3 -> 640x480     // 16:9 -> 640x360     // 1:1 -> 480x480     // 20:9 -> 640x288  (全屏2400x1080,20:9) }

/// @brief Usecase identifying enums

enum class UsecaseId {     NoMatch             = 0,     Default             = 1,     Preview             = 2,     PreviewZSL          = 3,     MFNR                = 4,     MFSR                = 5,     MultiCamera         = 6,     QuadCFA             = 7,     RawJPEG             = 8,     MultiCameraVR       = 9,     Torch               = 10,     YUVInBlobOut        = 11,     VideoLiveShot       = 12,     SuperSlowMotionFRC  = 13,     VivoReprocess       = 14,     MaxUsecases         = 15, };

/// @brief This enumerates usecases for sensor select mode enum SensorModeSelectUseCase {     UsecaseFastAEC = 0,     ///< Fast AEC     UsecaseQuadra,          ///< Quadra     UsecaseHFR,             ///< High frame rate  //2     UsecaseIHDR,            ///< Interlaced HDR     UsecaseRHDR,            ///< RHDR      //4     UsecaseVHDR,            ///< Video HDR     UsecaseSnapshot,        ///< Snapshot    //6     UsecaseVideoPreview,    ///< Video preview   //7     UsecaseFS,              ///< Fast shutter     UsecaseRTBO,            ///< RTB     //9     UsecaseFD,              ///< FD      //10     UsecaseVideo8K,         ///< Video8K     UsecaseVideo,           ///< Video     UsecaseUNBINNING,       ///Remosaic ROI     UsecaseVideoSurperEis,   ///< VideoSurperEis     MaxModeSelectUsecase    ///< Max };

标签: 集成电路cc2520rhdr

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台