summaryrefslogtreecommitdiff
path: root/CameraParameters.cpp (plain)
blob: 6fecf22f9c522c5ecc7dad57a4fc136a81d8904a
1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17
18#define LOG_TAG "CAMHAL_CameraParameters"
19#include "CameraHal.h"
20#include "CameraProperties.h"
21
22namespace android {
23
24const char CameraProperties::INVALID[]="prop-invalid-key";
25const char CameraProperties::CAMERA_NAME[]="prop-camera-name";
26const char CameraProperties::CAMERA_SENSOR_INDEX[]="prop-sensor-index";
27const char CameraProperties::ORIENTATION_INDEX[]="prop-orientation";
28const char CameraProperties::FACING_INDEX[]="prop-facing";
29const char CameraProperties::S3D_SUPPORTED[]="prop-s3d-supported";
30const char CameraProperties::SUPPORTED_PREVIEW_SIZES[] = "prop-preview-size-values";
31const char CameraProperties::SUPPORTED_PREVIEW_FORMATS[] = "prop-preview-format-values";
32const char CameraProperties::SUPPORTED_PREVIEW_FRAME_RATES[] = "prop-preview-frame-rate-values";
33const char CameraProperties::SUPPORTED_PICTURE_SIZES[] = "prop-picture-size-values";
34const char CameraProperties::SUPPORTED_PICTURE_FORMATS[] = "prop-picture-format-values";
35const char CameraProperties::SUPPORTED_THUMBNAIL_SIZES[] = "prop-jpeg-thumbnail-size-values";
36const char CameraProperties::SUPPORTED_WHITE_BALANCE[] = "prop-whitebalance-values";
37const char CameraProperties::SUPPORTED_EFFECTS[] = "prop-effect-values";
38const char CameraProperties::SUPPORTED_ANTIBANDING[] = "prop-antibanding-values";
39const char CameraProperties::SUPPORTED_EXPOSURE_MODES[] = "prop-exposure-mode-values";
40const char CameraProperties::SUPPORTED_EV_MAX[] = "prop-ev-compensation-max";
41const char CameraProperties::SUPPORTED_EV_MIN[] = "prop-ev-compensation-min";
42const char CameraProperties::SUPPORTED_EV_STEP[] = "prop-ev-compensation-step";
43const char CameraProperties::SUPPORTED_ISO_VALUES[] = "prop-iso-mode-values";
44const char CameraProperties::SUPPORTED_SCENE_MODES[] = "prop-scene-mode-values";
45const char CameraProperties::SUPPORTED_FLASH_MODES[] = "prop-flash-mode-values";
46const char CameraProperties::SUPPORTED_FOCUS_MODES[] = "prop-focus-mode-values";
47const char CameraProperties::REQUIRED_PREVIEW_BUFS[] = "prop-required-preview-bufs";
48const char CameraProperties::REQUIRED_IMAGE_BUFS[] = "prop-required-image-bufs";
49const char CameraProperties::SUPPORTED_ZOOM_RATIOS[] = "prop-zoom-ratios";
50const char CameraProperties::SUPPORTED_ZOOM_STAGES[] = "prop-zoom-stages";
51const char CameraProperties::SUPPORTED_IPP_MODES[] = "prop-ipp-values";
52const char CameraProperties::SMOOTH_ZOOM_SUPPORTED[] = "prop-smooth-zoom-supported";
53const char CameraProperties::ZOOM_SUPPORTED[] = "prop-zoom-supported";
54const char CameraProperties::PREVIEW_SIZE[] = "prop-preview-size-default";
55const char CameraProperties::PREVIEW_FORMAT[] = "prop-preview-format-default";
56const char CameraProperties::PREVIEW_FRAME_RATE[] = "prop-preview-frame-rate-default";
57const char CameraProperties::ZOOM[] = "prop-zoom-default";
58const char CameraProperties::PICTURE_SIZE[] = "prop-picture-size-default";
59const char CameraProperties::PICTURE_FORMAT[] = "prop-picture-format-default";
60const char CameraProperties::JPEG_THUMBNAIL_SIZE[] = "prop-jpeg-thumbnail-size-default";
61const char CameraProperties::WHITEBALANCE[] = "prop-whitebalance-default";
62const char CameraProperties::EFFECT[] = "prop-effect-default";
63const char CameraProperties::ANTIBANDING[] = "prop-antibanding-default";
64const char CameraProperties::EXPOSURE_MODE[] = "prop-exposure-mode-default";
65const char CameraProperties::EV_COMPENSATION[] = "prop-ev-compensation-default";
66const char CameraProperties::ISO_MODE[] = "prop-iso-mode-default";
67const char CameraProperties::FOCUS_MODE[] = "prop-focus-mode-default";
68const char CameraProperties::SCENE_MODE[] = "prop-scene-mode-default";
69const char CameraProperties::FLASH_MODE[] = "prop-flash-mode-default";
70const char CameraProperties::JPEG_QUALITY[] = "prop-jpeg-quality-default";
71const char CameraProperties::CONTRAST[] = "prop-contrast-default";
72const char CameraProperties::BRIGHTNESS[] = "prop-brightness-default";
73const char CameraProperties::SATURATION[] = "prop-saturation-default";
74const char CameraProperties::SHARPNESS[] = "prop-sharpness-default";
75const char CameraProperties::IPP[] = "prop-ipp-default";
76const char CameraProperties::GBCE[] = "prop-gbce-default";
77const char CameraProperties::S3D2D_PREVIEW[] = "prop-s3d2d-preview";
78const char CameraProperties::S3D2D_PREVIEW_MODES[] = "prop-s3d2d-preview-values";
79const char CameraProperties::AUTOCONVERGENCE[] = "prop-auto-convergence";
80const char CameraProperties::AUTOCONVERGENCE_MODE[] = "prop-auto-convergence-mode";
81const char CameraProperties::MANUALCONVERGENCE_VALUES[] = "prop-manual-convergence-values";
82const char CameraProperties::VSTAB[] = "prop-vstab-default";
83const char CameraProperties::VSTAB_SUPPORTED[] = "prop-vstab-supported";
84const char CameraProperties::REVISION[] = "prop-revision";
85const char CameraProperties::FOCAL_LENGTH[] = "prop-focal-length";
86const char CameraProperties::HOR_ANGLE[] = "prop-horizontal-angle";
87const char CameraProperties::VER_ANGLE[] = "prop-vertical-angle";
88const char CameraProperties::FRAMERATE_RANGE[] = "prop-framerate-range-default";
89const char CameraProperties::FRAMERATE_RANGE_IMAGE[] = "prop-framerate-range-image-default";
90const char CameraProperties::FRAMERATE_RANGE_VIDEO[]="prop-framerate-range-video-default";
91const char CameraProperties::FRAMERATE_RANGE_SUPPORTED[]="prop-framerate-range-values";
92const char CameraProperties::SENSOR_ORIENTATION[]= "sensor-orientation";
93const char CameraProperties::SENSOR_ORIENTATION_VALUES[]= "sensor-orientation-values";
94const char CameraProperties::EXIF_MAKE[] = "prop-exif-make";
95const char CameraProperties::EXIF_MODEL[] = "prop-exif-model";
96const char CameraProperties::JPEG_THUMBNAIL_QUALITY[] = "prop-jpeg-thumbnail-quality-default";
97const char CameraProperties::MAX_FOCUS_AREAS[] = "prop-max-focus-areas";
98const char CameraProperties::MAX_FD_HW_FACES[] = "prop-max-fd-hw-faces";
99const char CameraProperties::MAX_FD_SW_FACES[] = "prop-max-fd-sw-faces";
100const char CameraProperties::AUTO_EXPOSURE_LOCK[] = "prop-auto-exposure-lock";
101const char CameraProperties::AUTO_EXPOSURE_LOCK_SUPPORTED[] = "prop-auto-exposure-lock-supported";
102const char CameraProperties::AUTO_WHITEBALANCE_LOCK[] = "prop-auto-whitebalance-lock";
103const char CameraProperties::AUTO_WHITEBALANCE_LOCK_SUPPORTED[] = "prop-auto-whitebalance-lock-supported";
104const char CameraProperties::MAX_NUM_METERING_AREAS[] = "prop-max-num-metering-areas";
105const char CameraProperties::METERING_AREAS[] = "prop-metering-areas";
106const char CameraProperties::VIDEO_SNAPSHOT_SUPPORTED[] = "prop-video-snapshot-supported";
107const char CameraProperties::VIDEO_SIZE[] = "video-size";
108const char CameraProperties::SUPPORTED_VIDEO_SIZES[] = "prop-video-size-values";
109const char CameraProperties::PREFERRED_PREVIEW_SIZE_FOR_VIDEO[] = "preferred-preview-size-for-video";
110
111const char CameraProperties::PIXEL_FORMAT_RGB24[] = "rgb24";
112const char CameraProperties::RELOAD_WHEN_OPEN[]="prop-reload-key";
113#ifdef AMLOGIC_VIRTUAL_CAMERA_SUPPORT
114const char CameraProperties::DEVICE_NAME[] = "device_name";
115#endif
116
117const char CameraProperties::DEFAULT_VALUE[] = "";
118
119const char CameraProperties::PARAMS_DELIMITER []= ",";
120
121// Returns the properties class for a specific Camera
122// Each value is indexed by the CameraProperties::CameraPropertyIndex enum
123int CameraProperties::getProperties(int cameraIndex, CameraProperties::Properties** properties)
124{
125 LOG_FUNCTION_NAME;
126
127 //LOGD("%s %d cameraIndex=%d mCamerasSupported=%d", __func__, __LINE__, cameraIndex, mCamerasSupported);
128 if((unsigned int)cameraIndex >= mCamerasSupported)
129 {
130 LOG_FUNCTION_NAME_EXIT;
131 return -EINVAL;
132 }
133
134 *properties = mCameraProps+cameraIndex;
135
136 LOG_FUNCTION_NAME_EXIT;
137 return 0;
138}
139
140ssize_t CameraProperties::Properties::set(const char *prop, const char *value)
141{
142 if(!prop)
143 return -EINVAL;
144 if(!value)
145 value = DEFAULT_VALUE;
146
147 return mProperties->replaceValueFor(String8(prop), String8(value));
148}
149
150ssize_t CameraProperties::Properties::set(const char *prop, int value)
151{
152 char s_val[30];
153
154 sprintf(s_val, "%d", value);
155
156 return set(prop, s_val);
157}
158
159const char* CameraProperties::Properties::get(const char * prop)
160{
161 String8 value = mProperties->valueFor(String8(prop));
162 return value.string();
163}
164
165void CameraProperties::Properties::dump()
166{
167 for (size_t i = 0; i < mProperties->size(); i++)
168 {
169 CAMHAL_LOGVB("%s = %s\n",
170 mProperties->keyAt(i).string(),
171 mProperties->valueAt(i).string());
172 }
173}
174
175const char* CameraProperties::Properties::keyAt(unsigned int index)
176{
177 if(index < mProperties->size())
178 {
179 return mProperties->keyAt(index).string();
180 }
181 return NULL;
182}
183
184const char* CameraProperties::Properties::valueAt(unsigned int index)
185{
186 if(index < mProperties->size())
187 {
188 return mProperties->valueAt(index).string();
189 }
190 return NULL;
191}
192
193};
194