OpenHarmony开发者论坛
标题:
rk3568 openharmony 6.1双摄像头(前后摄)camera_host_config.hcs要如何配置,相机应用才能看到2个摄像头,并能够来回切换?
[打印本页]
作者:
andyang
时间:
2026-6-26 17:12
标题:
rk3568 openharmony 6.1双摄像头(前后摄)camera_host_config.hcs要如何配置,相机应用才能看到2个摄像头,并能够来回切换?
[md]### 【问题描述】
1. 介绍问题现象和发生的背景
2个gc05a2 sensor,前后摄,目前无法在相机应用中看到2个摄像头并能来回切
2. 相关的代码(请勿使用截图)
camera_host_config.hcs文件root {
module="sample";
vdiLibList = [
"libcamera_host_vdi_impl_1.0.z.so"
];
camera_host_config {
match_attr = "camera_host_interface";
template ability {
logicCameraId = "lcam001";
physicsCameraIds = [
"CAMERA_FIRST",
"CAMERA_SECOND"
];
metadata {
aeAvailableAntiBandingModes = [
"OHOS_CONTROL_AE_ANTIBANDING_MODE_OFF",
"OHOS_CONTROL_AE_ANTIBANDING_MODE_50HZ",
"OHOS_CONTROL_AE_ANTIBANDING_MODE_60HZ",
"OHOS_CONTROL_AE_ANTIBANDING_MODE_AUTO"
];
aeAvailableModes = ["OHOS_CONTROL_AE_MODE_ON"];
availableFpsRange = [15, 30];
aeCompensationRange = [0, 0];
aeCompensationSteps = [0, 1];
availableAwbModes = [
"OHOS_CONTROL_AWB_MODE_OFF"
];
sceneModesOverrides = [
"OHOS_CONTROL_AE_MODE_ON",
"OHOS_CONTROL_AWB_MODE_AUTO"
];
aeLockAvailable = "OHOS_CONTROL_AE_LOCK_AVAILABLE_FALSE";
awbLockAvailable = "OHOS_CONTROL_AWB_LOCK_AVAILABLE_FALSE";
sensitivityRange = [32, 2400];
exposureTimeRange = [100000, 200000000];
faceDetectMode = "OHOS_STATISTICS_FACE_DETECT_MODE_OFF";
maxFaceCount = 0;
flashAvailable = "OHOS_FLASH_INFO_AVAILABLE_FALSE";
lensFacing = "OHOS_LENS_FACING_FRONT";
opticalStabilizations = ["OHOS_LENS_OPTICAL_STABILIZATION_MODE_OFF"];
maxDigitalZoom = "1";
availableCharacteristicsKeys = [
"OHOS_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES",
"OHOS_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES",
"OHOS_CONTROL_AE_AVAILABLE_MODES",
"OHOS_ABILITY_FPS_RANGES",
"OHOS_CONTROL_AE_COMPENSATION_RANGE",
"OHOS_CONTROL_AE_COMPENSATION_STEP",
"OHOS_CONTROL_AVAILABLE_EFFECTS",
"OHOS_CONTROL_AVAILABLE_SCENE_MODES",
"OHOS_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES",
"OHOS_CONTROL_AWB_AVAILABLE_MODES",
"OHOS_CONTROL_MAX_REGIONS",
"OHOS_CONTROL_SCENE_MODE_OVERRIDES",
"OHOS_CONTROL_AE_LOCK_AVAILABLE",
"OHOS_CONTROL_AWB_LOCK_AVAILABLE",
"OHOS_CONTROL_AVAILABLE_MODES",
"OHOS_JPEG_AVAILABLE_THUMBNAIL_SIZES",
"OHOS_JPEG_MAX_SIZE",
"OHOS_SENSOR_INFO_PIXEL_ARRAY_SIZE",
"OHOS_SENSOR_INFO_ACTIVE_ARRAY_SIZE",
"OHOS_SENSOR_INFO_SENSITIVITY_RANGE",
"OHOS_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT",
"OHOS_SENSOR_INFO_EXPOSURE_TIME_RANGE",
"OHOS_SENSOR_ORIENTATION",
"OHOS_SENSOR_AVAILABLE_TEST_PATTERN_MODES",
"OHOS_SENSOR_INFO_PHYSICAL_SIZE",
"OHOS_SENSOR_INFO_TIMESTAMP_SOURCE",
"OHOS_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES",
"OHOS_STATISTICS_INFO_MAX_FACE_COUNT",
"OHOS_SYNC_MAX_LATENCY",
"OHOS_FLASH_INFO_AVAILABLE",
"OHOS_LENS_INFO_AVAILABLE_APERTURES",
"OHOS_LENS_FACING",
"OHOS_LENS_INFO_AVAILABLE_FOCAL_LENGTHS",
"OHOS_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION",
"OHOS_LENS_INFO_HYPERFOCAL_DISTANCE",
"OHOS_LENS_INFO_MINIMUM_FOCUS_DISTANCE",
"OHOS_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES",
"OHOS_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM",
"OHOS_SCALER_AVAILABLE_STREAM_CONFIGURATIONS",
"OHOS_SCALER_AVAILABLE_STALL_DURATIONS",
"OHOS_SCALER_AVAILABLE_MIN_FRAME_DURATIONS",
"OHOS_SCALER_CROPPING_TYPE",
"OHOS_INFO_SUPPORTED_HARDWARE_LEVEL",
"OHOS_REQUEST_PARTIAL_RESULT_COUNT",
"OHOS_REQUEST_PIPELINE_MAX_DEPTH",
"OHOS_REQUEST_MAX_NUM_OUTPUT_STREAMS",
"OHOS_REQUEST_MAX_NUM_INPUT_STREAMS",
"OHOS_REQUEST_AVAILABLE_CAPABILITIES"
];
availableRequestKeys = [
"OHOS_CONTROL_AE_MODE",
"OHOS_CONTROL_AE_EXPOSURE_COMPENSATION",
"OHOS_CONTROL_AE_PRECAPTURE_TRIGGER",
"OHOS_CONTROL_AE_TARGET_FPS_RANGE",
"OHOS_CONTROL_AE_ANTIBANDING_MODE",
"OHOS_CONTROL_AWB_MODE",
"OHOS_CONTROL_AWB_LOCK",
"OHOS_FLASH_MODE",
"OHOS_STATISTICS_FACE_DETECT_MODE",
"OHOS_NOISE_REDUCTION_MODE",
"OHOS_COLOR_CORRECTION_ABERRATION_MODE",
"OHOS_LENS_APERTURE",
"OHOS_LENS_OPTICAL_STABILIZATION_MODE",
"OHOS_CONTROL_MODE",
"OHOS_CONTROL_CAPTURE_INTENT"
];
availableResultKeys = [
"OHOS_CONTROL_AE_STATE",
"OHOS_CONTROL_AE_LOCK",
"OHOS_CONTROL_AWB_STATE",
"OHOS_CONTROL_AWB_LOCK",
"OHOS_LENS_STATE",
"OHOS_REQUEST_PIPELINE_DEPTH",
"OHOS_SCALER_CROP_REGION",
"OHOS_SENSOR_TIMESTAMP",
"OHOS_SENSOR_ROLLING_SHUTTER_SKEW",
"OHOS_SENSOR_EXPOSURE_TIME",
"OHOS_STATISTICS_LENS_SHADING_MAP_MODE",
"OHOS_STATISTICS_SCENE_FLICKER",
"OHOS_JPEG_SIZE",
"OHOS_JPEG_QUALITY",
"OHOS_JPEG_ORIENTATION"
];
}
}
ability_01 :: ability {
logicCameraId = "lcam001";
physicsCameraIds = [
"CAMERA_FIRST"
];
metadata {
aeAvailableAntiBandingModes = [
"OHOS_CAMERA_AE_ANTIBANDING_MODE_OFF"
];
aeAvailableModes = ["OHOS_CAMERA_AE_MODE_OFF"];
availableFpsRange = [30, 30];
cameraPosition = "OHOS_CAMERA_POSITION_BACK";
cameraType = "OHOS_CAMERA_TYPE_WIDE_ANGLE";
cameraConnectionType ="OHOS_CAMERA_CONNECTION_TYPE_BUILTIN";
cameraMemoryType ="OHOS_CAMERA_MEMORY_USERPTR";
faceDetectMaxNum = "10";
aeCompensationRange = [0, 0];
aeCompensationSteps = [0, 0];
availableAwbModes = [
"OHOS_CAMERA_AWB_MODE_OFF"
];
sensitivityRange = [32, 2400];
faceDetectMode = "OHOS_CAMERA_FACE_DETECT_MODE_OFF";
availableCharacteristicsKeys = [
"OHOS_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES",
"OHOS_CONTROL_AE_AVAILABLE_MODES",
"OHOS_ABILITY_FPS_RANGES",
"OHOS_CONTROL_AE_COMPENSATION_RANGE",
"OHOS_CONTROL_AE_COMPENSATION_STEP",
"OHOS_CONTROL_AWB_AVAILABLE_MODES",
"OHOS_JPEG_AVAILABLE_THUMBNAIL_SIZES",
"OHOS_JPEG_MAX_SIZE",
"OHOS_SENSOR_INFO_PIXEL_ARRAY_SIZE",
"OHOS_SENSOR_INFO_ACTIVE_ARRAY_SIZE",
"OHOS_SENSOR_INFO_SENSITIVITY_RANGE",
"OHOS_SENSOR_INFO_PHYSICAL_SIZE",
];
availableRequestKeys = [
"OHOS_CONTROL_AE_MODE",
"OHOS_CONTROL_AE_EXPOSURE_COMPENSATION",
"OHOS_CONTROL_AE_TARGET_FPS_RANGE",
"OHOS_CONTROL_AE_ANTIBANDING_MODE",
"OHOS_CONTROL_AWB_MODE",
"OHOS_CONTROL_AWB_LOCK",
"OHOS_STATISTICS_FACE_DETECT_MODE"
];
availableResultKeys = [
"OHOS_CONTROL_AE_LOCK",
"OHOS_CONTROL_AWB_LOCK",
"OHOS_SENSOR_EXPOSURE_TIME",
"OHOS_JPEG_SIZE",
"OHOS_JPEG_QUALITY",
"OHOS_JPEG_ORIENTATION"
];
focalLength = "24.0";
focusAvailableModes = [
"OHOS_CAMERA_FOCUS_MODE_MANUAL",
"OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO",
"OHOS_CAMERA_FOCUS_MODE_AUTO",
"OHOS_CAMERA_FOCUS_MODE_LOCKED"
];
exposureAvailableModes = [
"OHOS_CAMERA_EXPOSURE_MODE_MANUAL",
"OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO",
"OHOS_CAMERA_EXPOSURE_MODE_LOCKED",
"OHOS_CAMERA_EXPOSURE_MODE_AUTO"
];
meterAvailableModes = [
"OHOS_CAMERA_SPOT_METERING",
"OHOS_CAMERA_REGION_METERING",
"OHOS_CAMERA_OVERALL_METERING"
];
flashAvailableModes = [
"OHOS_CAMERA_FLASH_MODE_CLOSE",
"OHOS_CAMERA_FLASH_MODE_OPEN",
"OHOS_CAMERA_FLASH_MODE_AUTO",
"OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN"
];
mirrorSupported = "OHOS_CAMERA_MIRROR_OFF";
//basicAvailableConfigurations = [1, 640, 480, 4, 1280, 960];
basicAvailableConfigurations = [1, 2592, 1944, 4, 2592, 1944];
extendAvailableConfigurations = [0, 0, 1, 640, 480, 0, -1, 1, 1, 640, 480, 30, -1, 2, 4, 1280, 960, 0, -1, -1];
sensorOrientationSupported = "270";
videoStabilizationAvailableModes = [
"OHOS_CAMERA_VIDEO_STABILIZATION_OFF"
];
flashAvailable = "OHOS_CAMERA_FLASH_FALSE";
afAvailable = [
"OHOS_CAMERA_AF_MODE_OFF"
];
zoomRatioRange = [
"1.0",
"1.0"
];
jpegOrientation= "270";
jpegQuality= "2";
}
}
ability_02 :: ability {
logicCameraId = "lcam002";
physicsCameraIds = [
"CAMERA_SECOND"
];
metadata {
aeAvailableAntiBandingModes = [
"OHOS_CAMERA_AE_ANTIBANDING_MODE_OFF"
];
aeAvailableModes = ["OHOS_CAMERA_AE_MODE_OFF"];
availableFpsRange = [30, 30];
cameraPosition = "OHOS_CAMERA_POSITION_FRONT";
cameraType = "OHOS_CAMERA_TYPE_WIDE_ANGLE";
cameraConnectionType ="OHOS_CAMERA_CONNECTION_TYPE_BUILTIN";
cameraMemoryType ="OHOS_CAMERA_MEMORY_USERPTR";
faceDetectMaxNum = "10";
aeCompensationRange = [0, 0];
aeCompensationSteps = [0, 0];
availableAwbModes = [
"OHOS_CAMERA_AWB_MODE_OFF"
];
sensitivityRange = [32, 2400];
faceDetectMode = "OHOS_CAMERA_FACE_DETECT_MODE_OFF";
availableCharacteristicsKeys = [
"OHOS_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES",
"OHOS_CONTROL_AE_AVAILABLE_MODES",
"OHOS_ABILITY_FPS_RANGES",
"OHOS_CONTROL_AE_COMPENSATION_RANGE",
"OHOS_CONTROL_AE_COMPENSATION_STEP",
"OHOS_CONTROL_AWB_AVAILABLE_MODES",
"OHOS_JPEG_AVAILABLE_THUMBNAIL_SIZES",
"OHOS_JPEG_MAX_SIZE",
"OHOS_SENSOR_INFO_PIXEL_ARRAY_SIZE",
"OHOS_SENSOR_INFO_ACTIVE_ARRAY_SIZE",
"OHOS_SENSOR_INFO_SENSITIVITY_RANGE",
"OHOS_SENSOR_INFO_PHYSICAL_SIZE",
];
availableRequestKeys = [
"OHOS_CONTROL_AE_MODE",
"OHOS_CONTROL_AE_EXPOSURE_COMPENSATION",
"OHOS_CONTROL_AE_TARGET_FPS_RANGE",
"OHOS_CONTROL_AE_ANTIBANDING_MODE",
"OHOS_CONTROL_AWB_MODE",
"OHOS_CONTROL_AWB_LOCK",
"OHOS_STATISTICS_FACE_DETECT_MODE"
];
availableResultKeys = [
"OHOS_CONTROL_AE_LOCK",
"OHOS_CONTROL_AWB_LOCK",
"OHOS_SENSOR_EXPOSURE_TIME",
"OHOS_JPEG_SIZE",
"OHOS_JPEG_QUALITY",
"OHOS_JPEG_ORIENTATION"
];
focalLength = "24.0";
focusAvailableModes = [
"OHOS_CAMERA_FOCUS_MODE_MANUAL",
"OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO",
"OHOS_CAMERA_FOCUS_MODE_AUTO",
"OHOS_CAMERA_FOCUS_MODE_LOCKED"
];
exposureAvailableModes = [
"OHOS_CAMERA_EXPOSURE_MODE_MANUAL",
"OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO",
"OHOS_CAMERA_EXPOSURE_MODE_LOCKED",
"OHOS_CAMERA_EXPOSURE_MODE_AUTO"
];
meterAvailableModes = [
"OHOS_CAMERA_SPOT_METERING",
"OHOS_CAMERA_REGION_METERING",
"OHOS_CAMERA_OVERALL_METERING"
];
flashAvailableModes = [
"OHOS_CAMERA_FLASH_MODE_CLOSE",
"OHOS_CAMERA_FLASH_MODE_OPEN",
"OHOS_CAMERA_FLASH_MODE_AUTO",
"OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN"
];
mirrorSupported = "OHOS_CAMERA_MIRROR_OFF";
//basicAvailableConfigurations = [1, 640, 480, 4, 1280, 960];
basicAvailableConfigurations = [3, 2592, 1944, 4, 2592, 1944];
extendAvailableConfigurations = [0, 0, 1, 640, 480, 0, -1, 1, 1, 640, 480, 30, -1, 2, 4, 1280, 960, 0, -1, -1];
sensorOrientationSupported = "270";
videoStabilizationAvailableModes = [
"OHOS_CAMERA_VIDEO_STABILIZATION_OFF"
];
flashAvailable = "OHOS_CAMERA_FLASH_FALSE";
afAvailable = [
"OHOS_CAMERA_AF_MODE_OFF"
];
zoomRatioRange = [
"1.0",
"1.0"
];
jpegOrientation= "270";
jpegQuality= "2";
}
}
}
}
3. 运行结果、错误截图
[ 1.161177] gc05a2 2-003f: driver version: 00.01.01
[ 1.161252] gc05a2 2-003f: Failed to get power-gpios, maybe no use
[ 1.161406] gc05a2 2-003f: Failed to get pwdn-gpios
[ 1.161471] gc05a2 2-003f: supply avdd not found, using dummy regulator
[ 1.161693] gc05a2 2-003f: supply dovdd not found, using dummy regulator
[ 1.161812] gc05a2 2-003f: supply dvdd not found, using dummy regulator
[ 1.161896] gc05a2 2-003f: lane_num(2) pixel_rate(178612800)
[ 1.161921] gc05a2 2-003f: could not get default pinstate
[ 1.161935] gc05a2 2-003f: could not get sleep pinstate
[ 1.169684] gc05a2 reg 3f0 return 0x5
[ 1.170180] mmc2: SDHCI controller on fe310000.sdhci [fe310000.sdhci] using ADMA
[ 1.170262] gc05a2 reg 3f1 return 0xa2
[ 1.170273] gc05a2 2-003f: detected gc05a2 sensor
[ 1.170529] rockchip-csi2-dphy csi2-dphy2: dphy2 matches m01_f_gc05a2 2-003f:bus type 5
[ 1.171295] gc05a2 4-0037: driver version: 00.01.01
[ 1.171380] gc05a2 4-0037: Failed to get power-gpios, maybe no use
[ 1.171464] gc05a2 4-0037: Failed to get pwdn-gpios
[ 1.171523] gc05a2 4-0037: supply avdd not found, using dummy regulator
[ 1.171745] gc05a2 4-0037: supply dovdd not found, using dummy regulator
[ 1.171858] gc05a2 4-0037: supply dvdd not found, using dummy regulator
[ 1.171927] gc05a2 4-0037: lane_num(2) pixel_rate(178612800)
[ 1.171953] gc05a2 4-0037: could not get default pinstate
[ 1.171967] gc05a2 4-0037: could not get sleep pinstate
[ 1.179859] gc05a2 reg 3f0 return 0x5
[ 1.180424] gc05a2 reg 3f1 return 0xa2
[ 1.180452] gc05a2 4-0037: detected gc05a2 sensor
[ 1.180529] rockchip-csi2-dphy csi2-dphy1: dphy1 matches m00_b_gc05a2 4-0037:bus type 5
sensor均正常识别到,且在android11系统下,板子所有硬件都已经调通,包括双sensor,在android的相机应用中可以正常看到2个摄像头并正常切换
4. 我尝试过的解决方法和结果
反复调整camera_host_config.hcs文件,均无法实现
5. 我想要达到的结果
能够在相机应用上看到2个摄像头,且能正常切换
### 【运行环境】
硬件:rk3568嵌入式设备
ROM版本:
DevEvoStudio版本:未使用
SDK版本:openharmony 6.1
[/md]
欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/)
Powered by Discuz! X3.5