当前位置: 首页 > wzjs >正文

企业网站建站企业wordpress显示不了图片

企业网站建站企业,wordpress显示不了图片,南京斯点企业网站建设,专业建公司网站讲得非常不错: 高通 Camera HAL3:CAMX、CHI-CDK 详解_高通camera hal3:camx、chi-cdk详解-CSDN博客 CamraHAL3数据流向图: Camera数据从sensor出来,首先会经过IFE,然后分预览/视频和拍照2种情况。 如果是预览或者录像&#xff…

讲得非常不错:

高通 Camera HAL3:CAMX、CHI-CDK 详解_高通camera hal3:camx、chi-cdk详解-CSDN博客

CamraHAL3数据流向图:

Camera数据从sensor出来,首先会经过IFE,然后分预览/视频和拍照2种情况。

如果是预览或者录像,是先经过IPE处理,最后输出到显示。

如果是拍照,则是先经过BSP处理,然后再经过JPEG编码器,最后保存为图片输出。

 

一、usecase的理解 

1、usecaseid

UsecaseId:\chi-cdk\core\chiutils\chxdefs.h

/// @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,Feature2            = 14,Depth               = 15,AON                 = 16,MaxUsecases         = 17,
};

chi-cdk/oem/qcom/topology/titan/fillmore/fillmore_usecase.xml

 

 

这个 xml 文件里面描述了 82 个 usecase,但是我们的相机不一定全部跑了这些 usecase,

这些 xml 描述的只是配置,描述的 uscase 是否实现了,还要看代码里面是否实现,并使能了这些 usecase。

比如我们常接触到的有 UsecaseTorch,UsecasePreview , UsecaseVideo, UsecaseSnapshot, UsecaseZSL, UsecaseQuadCFA,UsecaseRTB,UsecaseSAT 等

选择UsecaseId

不同的UsecaseId分别对应的不同的"使用案例",

该阶段是通过调用UsecaseSelector::GetMatchingUsecase()方法来实现的,

该函数中通过传入的operation_mode、num_streams配置数据流、数量以及当前使用的Sensor个数来选择相应的UsecaseId,

比如当numPhysicalCameras值大于1,同时配置的数据流数量num_streams大于1时,选择的就是UsecaseId::MultiCamera,表示当前采用的是双摄场景。

获得usecaseid函数:chi-cdk\core\chiusecase\Chxusecaseutils.cpp

UsecaseId UsecaseSelector::GetMatchingUsecase(const LogicalCameraInfo*        pCamInfo,camera3_stream_configuration_t* pStreamConfig)
{UsecaseId usecaseId = UsecaseId::Default; //第一行代码......CHX_LOG_INFO("usecase ID:%d",usecaseId);return usecaseId;                         //最后一行代码
}

chi-cdk\core\chiframework\Chxextensionmodule.h 

UsecaseSelector*        m_pUsecaseSelector;                     ///< Usecase selector
UsecaseFactory*         m_pUsecaseFactory;                      ///< Usecase factory
Usecase*                m_pSelectedUsecase[MaxNumImageSensors]; ///< Selected usecase

创建Usecase:

根据之前选择的UsecaseId,通过UsecaseFactory来创建相应的Usecase

Class Usecase是所有Usecase的基类,其中定义并实现了一些通用接口,

CameraUsecaseBase继承于Usecase,并扩展了部分功能。

AdvancedCameraUsecase又继承于CameraUsecaseBase,作为主要负责大部分场景的Usecase实现类,

另外对于多摄场景,现提供了继承于AdvancedCameraUsecase的UsecaseMultiCamera来负责实现。

在这段代码中可以看到,除了双摄场景,其它大部分场景使用的都是AdvancedCameraUsecase类来创建Usecase的

创建Usecase文件以及函数:chi-cdk\core\chiframework\Chxextensionmodule.cpp

InitializeOverrideSession

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(&m_logicalCameraInfo[logicalCameraId],
pStreamConfig);...m_pSelectedUsecase[logicalCameraId] =m_pUsecaseFactory->CreateUsecaseObject(&m_logicalCameraInfo[logicalCameraId],selectedUsecaseId, m_pStreamConfig[logicalCameraId],m_multiCameraResources.hDescriptorConfig);                                                           
}

 工厂模式createusecaseobject函数,是根据usecaseid创建出我们的usecase对象

函数所在文件:chi-cdk\core\chiusecase\Chxusecaseutils.cpp

函数展示如下:

Usecase* UsecaseFactory::CreateUsecaseObject(
LogicalCameraInfo*              pLogicalCameraInfo,     ///< camera info
UsecaseId                       usecaseId,              ///< Usecase Id
camera3_stream_configuration_t* pStreamConfig,          ///< Stream config
ChiMcxConfigHandle              hDescriptorConfig)      ///< mcx config
{Usecase* pUsecase  = NULL;UINT     camera0Id = pLogicalCameraInfo->ppDeviceInfo[0]->cameraId;switch (usecaseId){case UsecaseId::PreviewZSL:case UsecaseId::VideoLiveShot:pUsecase = AdvancedCameraUsecase::Create(pLogicalCameraInfo, pStreamConfig, usecaseId);break;case UsecaseId::MultiCamera:if ((LogicalCameraType::LogicalCameraType_Default == pLogicalCameraInfo->logicalCameraType) &&(pLogicalCameraInfo->numPhysicalCameras > 1)){pUsecase = ChiMulticameraBase::Create(pLogicalCameraInfo, pStreamConfig, hDescriptorConfig);}break;case UsecaseId::MultiCameraVR://pUsecase = UsecaseMultiVRCamera::Create(pLogicalCameraInfo, pStreamConfig);break;case UsecaseId::QuadCFA:pUsecase = AdvancedCameraUsecase::Create(pLogicalCameraInfo, pStreamConfig, usecaseId);break;case UsecaseId::Torch:pUsecase = UsecaseTorch::Create(pLogicalCameraInfo, pStreamConfig);break;case UsecaseId::Depth:pUsecase = AdvancedCameraUsecase::Create(pLogicalCameraInfo, pStreamConfig, usecaseId);break;case UsecaseId::AON:pUsecase = CHXUsecaseAON::Create(pLogicalCameraInfo);break;default:pUsecase = AdvancedCameraUsecase::Create(pLogicalCameraInfo, pStreamConfig, usecaseId);break;}return pUsecase;
}

 

在AdvancedCameraUsecase::Create方法中做了很多初始化操作,其中包括了以下几个阶段:

获取XML文件中Usecase配置信息
创建Feature
保存数据流,重建Usecase的配置信息
调用父类CameraUsecaseBase的initialize方法,进行一些常规初始化工作。

调用流程:

createusecaseobject -> creat ->initialize ->  GetXMLUsecaseByName

总结:

usecase可以有很多的衍生类,因此会用到工厂模式来创建对象,创建对象create的过程中会回去xml的信息生成结构体到g_pipeline.h中,便于后面的使用。

UseCase在camx中很有很多衍生类,这是camx针对不同的stream来建立不同的usecase对象,用来管理选择feature,并且创建 pipeline以及session。


文章转载自:

http://Qo1SYbob.pnmtk.cn
http://vnSwNcgq.pnmtk.cn
http://JsHuFiUW.pnmtk.cn
http://uXhmKsnx.pnmtk.cn
http://KrlZnh6M.pnmtk.cn
http://WCHMwpVb.pnmtk.cn
http://YBjaiMzN.pnmtk.cn
http://mED5no4e.pnmtk.cn
http://gwjsMI8J.pnmtk.cn
http://RSR11e8t.pnmtk.cn
http://F4rhGTHd.pnmtk.cn
http://D5CmvXhB.pnmtk.cn
http://lYVbajS7.pnmtk.cn
http://60V6dqmr.pnmtk.cn
http://lBIdHrxd.pnmtk.cn
http://86LNOWN4.pnmtk.cn
http://YPWvGYgP.pnmtk.cn
http://aKSvyLRP.pnmtk.cn
http://0RjWNeck.pnmtk.cn
http://hSUptdVM.pnmtk.cn
http://Nqi7Gtj5.pnmtk.cn
http://ik6St82W.pnmtk.cn
http://TLIXQsAy.pnmtk.cn
http://59UGFUPO.pnmtk.cn
http://y7iywyr0.pnmtk.cn
http://KWKhPxS8.pnmtk.cn
http://90NK5XQH.pnmtk.cn
http://7jj8S11B.pnmtk.cn
http://oSVKnEgx.pnmtk.cn
http://qlHHrg8I.pnmtk.cn
http://www.dtcms.com/wzjs/680225.html

相关文章:

  • 网站建设的能力wordpress调用一篇
  • 崇州市城乡建设局网站岳阳网站建设解决方案
  • 建设局网站模板培训学校网站建设方案
  • 个人主页网站应该怎样做如何制作门户网站
  • 如何做攻击类型网站旅游网站建设课程设计
  • 网站分析怎么做自己做网站的各种代码
  • 重庆网站APP平台广告推广
  • 网站建设设计开发公司自己的网站就可以做app
  • 中国小说网站策划与建设python做一个简单的网页
  • 网站建设noajt郑州的做网站公司
  • 做论文查重网站代理能赚到钱吗大学学风建设网站
  • 免费搭建网站主机wordpress侧栏推荐文章
  • 东莞网站建设 食品厂wordpress 站点身份
  • 台州市椒江建设工程机械厂网站物业网站开发
  • 工商网站备案查询房产网站建网站
  • 做去态网站要学什么语言北京南站到北京站怎么走
  • 罗湖网站定制网站宣传与推广
  • 网站建设 php jsp .net网站建设的市场策划
  • 关于网站设计的新闻买域名网站
  • 网站建设概算廊坊网络推广公司
  • 网站搭建教程吾爱破解广西住房和城乡建设厅网上办事大厅
  • 可以看女人不易做网站建模师的就业前景
  • 做视频网站容易收录吗免费公众号排版编辑器
  • 设计一个个人求职网站做盗版视频网站吗
  • 大型网站建设公司沈阳西安优秀的集团门户网站建设企业
  • 做网站目的wordpress照片归类
  • 温州专业营销网站wordpress打卡签到领红包
  • 网站建设岗位的认知使用jquery做网站
  • 17做网站网站做的好
  • 做教育培训网站公司苏州工程网站建设