1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "imx600.h"
17 #include <vector>
18
19 namespace OHOS::Camera {
IMPLEMENT_SENSOR(Imx600)20 IMPLEMENT_SENSOR(Imx600)
21 Imx600::Imx600() : ISensor("imx600") {}
22
~Imx600()23 Imx600::~Imx600() {}
24
InitPhysicalSize(Camera::CameraMetadata & camera_meta_data)25 void Imx600::InitPhysicalSize(Camera::CameraMetadata& camera_meta_data)
26 {
27 ISensor::InitPhysicalSize(camera_meta_data);
28 }
29
InitAntiBandingModes(Camera::CameraMetadata & camera_meta_data)30 void Imx600::InitAntiBandingModes(Camera::CameraMetadata& camera_meta_data)
31 {
32 ISensor::InitAntiBandingModes(camera_meta_data);
33 }
34
InitAeFpsTarget(Camera::CameraMetadata & camera_meta_data)35 void Imx600::InitAeFpsTarget(Camera::CameraMetadata& camera_meta_data)
36 {
37 std::vector<int32_t> availableAeFpsTarget = {
38 15,
39 30,
40 };
41 camera_meta_data.addEntry(OHOS_CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES, availableAeFpsTarget.data(),
42 availableAeFpsTarget.size());
43 }
44
InitCompensationRange(Camera::CameraMetadata & camera_meta_data)45 void Imx600::InitCompensationRange(Camera::CameraMetadata& camera_meta_data)
46 {
47 ISensor::InitCompensationRange(camera_meta_data);
48 }
49
InitSensitivityRange(Camera::CameraMetadata & camera_meta_data)50 void Imx600::InitSensitivityRange(Camera::CameraMetadata& camera_meta_data)
51 {
52 ISensor::InitSensitivityRange(camera_meta_data);
53 }
54
Init(Camera::CameraMetadata & camera_meta_data)55 void Imx600::Init(Camera::CameraMetadata& camera_meta_data)
56 {
57 InitPhysicalSize(camera_meta_data);
58 InitAntiBandingModes(camera_meta_data);
59
60 std::vector<uint8_t> aeAvailableModes = {
61 OHOS_CAMERA_AE_MODE_ON,
62 };
63 camera_meta_data.addEntry(OHOS_CONTROL_AE_AVAILABLE_MODES, aeAvailableModes.data(),
64 aeAvailableModes.size());
65
66 InitAeFpsTarget(camera_meta_data);
67 InitCompensationRange(camera_meta_data);
68
69 const camera_rational_t aeCompensationStep[] = {{0, 1}};
70 camera_meta_data.addEntry(OHOS_CONTROL_AE_COMPENSATION_STEP, aeCompensationStep, 1);
71
72 std::vector<uint8_t> availableAwbModes = {
73 OHOS_CAMERA_AWB_MODE_OFF,
74 };
75 camera_meta_data.addEntry(OHOS_CONTROL_AWB_AVAILABLE_MODES, availableAwbModes.data(),
76 availableAwbModes.size());
77
78 InitSensitivityRange(camera_meta_data);
79
80 uint8_t faceDetectMode = OHOS_CAMERA_FACE_DETECT_MODE_OFF;
81 camera_meta_data.addEntry(OHOS_STATISTICS_FACE_DETECT_MODE, &faceDetectMode,
82 1);
83 }
84 } // namespace OHOS::Camera