• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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