Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
需求
需要支持三个USB Camera,系统默认支持的是两颗。
解决方法:
以下是rockchip给的patch,不过是有缺失的:
diff --git a/CameraHal/CameraHal_Module.cpp b/CameraHal/CameraHal_Module.cpp
index 27e0f54..fa99a38 100755
--- a/CameraHal/CameraHal_Module.cpp
+++ b/CameraHal/CameraHal_Module.cpp
@@ -684,6 +684,7 @@ int camera_get_number_of_cameras(void)
memset(&camInfoTmp[0],0x00,sizeof(rk_cam_info_t));
memset(&camInfoTmp[1],0x00,sizeof(rk_cam_info_t));
+ memset(&camInfoTmp[2],0x00,sizeof(rk_cam_info_t));
profiles = camera_board_profiles::getInstance();
nCamDev = profiles->mDevieVector.size();
@@ -691,25 +692,25 @@ int camera_get_number_of_cameras(void)
if (nCamDev>0) {
camera_board_profiles::LoadSensor(profiles);
char sensor_ver[32];
-
+
for (i=0; (i<nCamDev); i++)
{
LOGE("load sensor name(%s) connect %d\n", profiles->mDevieVector[i]->mHardInfo.mSensorInfo.mSensorName, profiles->mDevieVector[i]->mIsConnect);
if(profiles->mDevieVector[i]->mIsConnect==1){
rk_sensor_info *pSensorInfo = &(profiles->mDevieVector[i]->mHardInfo.mSensorInfo);
- camInfoTmp[cam_cnt&0x01].pcam_total_info = profiles->mDevieVector[i];
- strncpy(camInfoTmp[cam_cnt&0x01].device_path, pSensorInfo->mCamsysDevPath, sizeof(camInfoTmp[cam_cnt&0x01].device_path));
- strncpy(camInfoTmp[cam_cnt&0x01].driver, pSensorInfo->mSensorDriver, sizeof(camInfoTmp[cam_cnt&0x01].driver));
+ camInfoTmp[cam_cnt].pcam_total_info = profiles->mDevieVector[i];
+ strncpy(camInfoTmp[cam_cnt].device_path, pSensorInfo->mCamsysDevPath, sizeof(camInfoTmp[cam_cnt].device_path));
+ strncpy(camInfoTmp[cam_cnt].driver, pSensorInfo->mSensorDriver, sizeof(camInfoTmp[cam_cnt].driver));
unsigned int SensorDrvVersion = profiles->mDevieVector[i]->mLoadSensorInfo.mpI2cInfo->sensor_drv_version;
memset(version,0x00,sizeof(version));
sprintf(version,"%d.%d.%d",((SensorDrvVersion&0xff0000)>>16),
((SensorDrvVersion&0xff00)>>8),SensorDrvVersion&0xff);
if(pSensorInfo->mFacing == RK_CAM_FACING_FRONT){
- camInfoTmp[cam_cnt&0x01].facing_info