1 /*
2 * Copyright (c) 2021 iSoftStone Device Co., Ltd.
3 *
4 * HDF is dual licensed: you can use it either under the terms of
5 * the GPL, or the BSD license, at your option.
6 * See the LICENSE file in the root of this repository for complete details.
7 */
8
9 #include "imx600.h"
10 #include <vector>
11
12 namespace OHOS::Camera {
IMPLEMENT_SENSOR(Imx600)13 IMPLEMENT_SENSOR(Imx600)
14 Imx600::Imx600() : ISensor("imx600") {}
15
~Imx600()16 Imx600::~Imx600() {}
17
InitPhysicalSize(CameraStandard::CameraMetadata & camera_meta_data)18 void Imx600::InitPhysicalSize(CameraStandard::CameraMetadata& camera_meta_data)
19 {
20 ISensor::InitPhysicalSize(camera_meta_data);
21 }
22
InitAntiBandingModes(CameraStandard::CameraMetadata & camera_meta_data)23 void Imx600::InitAntiBandingModes(CameraStandard::CameraMetadata& camera_meta_data)
24 {
25 ISensor::InitAntiBandingModes(camera_meta_data);
26 }
27
InitAeFpsTarget(CameraStandard::CameraMetadata & camera_meta_data)28 void Imx600::InitAeFpsTarget(CameraStandard::CameraMetadata& camera_meta_data)
29 {
30 std::vector<int32_t> availableAeFpsTarget = {
31 15,
32 30,
33 };
34 camera_meta_data.addEntry(OHOS_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, availableAeFpsTarget.data(),
35 availableAeFpsTarget.size());
36 }
37
InitCompensationRange(CameraStandard::CameraMetadata & camera_meta_data)38 void Imx600::InitCompensationRange(CameraStandard::CameraMetadata& camera_meta_data)
39 {
40 ISensor::InitCompensationRange(camera_meta_data);
41 }
42
InitSensitivityRange(CameraStandard::CameraMetadata & camera_meta_data)43 void Imx600::InitSensitivityRange(CameraStandard::CameraMetadata& camera_meta_data)
44 {
45 ISensor::InitSensitivityRange(camera_meta_data);
46 }
47
Init(CameraStandard::CameraMetadata & camera_meta_data)48 void Imx600::Init(CameraStandard::CameraMetadata& camera_meta_data)
49 {
50 InitPhysicalSize(camera_meta_data);
51 InitAntiBandingModes(camera_meta_data);
52
53 std::vector<uint8_t> aeAvailableModes = {
54 OHOS_CAMERA_AE_MODE_ON,
55 };
56 camera_meta_data.addEntry(OHOS_CONTROL_AE_AVAILABLE_MODES, aeAvailableModes.data(),
57 aeAvailableModes.size());
58
59 InitAeFpsTarget(camera_meta_data);
60 InitCompensationRange(camera_meta_data);
61
62 const camera_rational_t aeCompensationStep[] = {{0, 1}};
63 camera_meta_data.addEntry(OHOS_CONTROL_AE_COMPENSATION_STEP, aeCompensationStep, 1);
64
65 std::vector<uint8_t> availableAwbModes = {
66 OHOS_CAMERA_AWB_MODE_OFF,
67 };
68 camera_meta_data.addEntry(OHOS_CONTROL_AWB_AVAILABLE_MODES, availableAwbModes.data(),
69 availableAwbModes.size());
70
71 InitSensitivityRange(camera_meta_data);
72
73 uint8_t faceDetectMode = OHOS_CAMERA_FACE_DETECT_MODE_OFF;
74 camera_meta_data.addEntry(OHOS_STATISTICS_FACE_DETECT_MODE, &faceDetectMode,
75 1);
76 }
77 } // namespace OHOS::Camera
78