• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) Texas Instruments - http://www.ti.com/
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 
19 
20 #ifndef CAMERA_PROPERTIES_H
21 #define CAMERA_PROPERTIES_H
22 
23 #include <utils/KeyedVector.h>
24 #include <utils/String8.h>
25 #include <stdio.h>
26 #include <dirent.h>
27 #include <errno.h>
28 #include <stdio.h>
29 #include <string.h>
30 #include <ctype.h>
31 #include "cutils/properties.h"
32 
33 namespace android {
34 
35 #define MAX_CAMERAS_SUPPORTED 2
36 #define MAX_SIMUL_CAMERAS_SUPPORTED 1
37 #define MAX_PROP_NAME_LENGTH 50
38 #define MAX_PROP_VALUE_LENGTH 2048
39 
40 #define EXIF_MAKE_DEFAULT "default_make"
41 #define EXIF_MODEL_DEFAULT "default_model"
42 
43 // Class that handles the Camera Properties
44 class CameraProperties
45 {
46 public:
47     static const char INVALID[];
48     static const char CAMERA_NAME[];
49     static const char CAMERA_SENSOR_INDEX[];
50     static const char ORIENTATION_INDEX[];
51     static const char FACING_INDEX[];
52     static const char S3D_SUPPORTED[];
53     static const char SUPPORTED_PREVIEW_SIZES[];
54     static const char SUPPORTED_PREVIEW_FORMATS[];
55     static const char SUPPORTED_PREVIEW_FRAME_RATES[];
56     static const char SUPPORTED_PICTURE_SIZES[];
57     static const char SUPPORTED_PICTURE_FORMATS[];
58     static const char SUPPORTED_THUMBNAIL_SIZES[];
59     static const char SUPPORTED_WHITE_BALANCE[];
60     static const char SUPPORTED_EFFECTS[];
61     static const char SUPPORTED_ANTIBANDING[];
62     static const char SUPPORTED_EXPOSURE_MODES[];
63     static const char SUPPORTED_EV_MIN[];
64     static const char SUPPORTED_EV_MAX[];
65     static const char SUPPORTED_EV_STEP[];
66     static const char SUPPORTED_ISO_VALUES[];
67     static const char SUPPORTED_SCENE_MODES[];
68     static const char SUPPORTED_FLASH_MODES[];
69     static const char SUPPORTED_FOCUS_MODES[];
70     static const char REQUIRED_PREVIEW_BUFS[];
71     static const char REQUIRED_IMAGE_BUFS[];
72     static const char SUPPORTED_ZOOM_RATIOS[];
73     static const char SUPPORTED_ZOOM_STAGES[];
74     static const char SUPPORTED_IPP_MODES[];
75     static const char SMOOTH_ZOOM_SUPPORTED[];
76     static const char ZOOM_SUPPORTED[];
77     static const char PREVIEW_SIZE[];
78     static const char PREVIEW_FORMAT[];
79     static const char PREVIEW_FRAME_RATE[];
80     static const char ZOOM[];
81     static const char PICTURE_SIZE[];
82     static const char PICTURE_FORMAT[];
83     static const char JPEG_THUMBNAIL_SIZE[];
84     static const char WHITEBALANCE[];
85     static const char EFFECT[];
86     static const char ANTIBANDING[];
87     static const char EXPOSURE_MODE[];
88     static const char EV_COMPENSATION[];
89     static const char ISO_MODE[];
90     static const char FOCUS_MODE[];
91     static const char SCENE_MODE[];
92     static const char FLASH_MODE[];
93     static const char JPEG_QUALITY[];
94     static const char BRIGHTNESS[];
95     static const char SATURATION[];
96     static const char SHARPNESS[];
97     static const char CONTRAST[];
98     static const char IPP[];
99     static const char GBCE[];
100     static const char AUTOCONVERGENCE[];
101     static const char AUTOCONVERGENCE_MODE[];
102     static const char MANUALCONVERGENCE_VALUES[];
103     static const char SENSOR_ORIENTATION[];
104     static const char SENSOR_ORIENTATION_VALUES[];
105     static const char REVISION[];
106     static const char FOCAL_LENGTH[];
107     static const char HOR_ANGLE[];
108     static const char VER_ANGLE[];
109     static const char EXIF_MAKE[];
110     static const char EXIF_MODEL[];
111     static const char JPEG_THUMBNAIL_QUALITY[];
112     static const char MAX_FOCUS_AREAS[];
113     static const char MAX_FD_HW_FACES[];
114     static const char MAX_FD_SW_FACES[];
115 
116     static const char PARAMS_DELIMITER [];
117 
118     static const char S3D2D_PREVIEW[];
119     static const char S3D2D_PREVIEW_MODES[];
120     static const char VSTAB[];
121     static const char VSTAB_SUPPORTED[];
122     static const char FRAMERATE_RANGE[];
123     static const char FRAMERATE_RANGE_IMAGE[];
124     static const char FRAMERATE_RANGE_VIDEO[];
125     static const char FRAMERATE_RANGE_SUPPORTED[];
126 
127     static const char DEFAULT_VALUE[];
128 
129     static const char AUTO_EXPOSURE_LOCK[];
130     static const char AUTO_EXPOSURE_LOCK_SUPPORTED[];
131     static const char AUTO_WHITEBALANCE_LOCK[];
132     static const char AUTO_WHITEBALANCE_LOCK_SUPPORTED[];
133     static const char MAX_NUM_METERING_AREAS[];
134     static const char METERING_AREAS[];
135     static const char MAX_NUM_FOCUS_AREAS[];
136 
137     static const char VIDEO_SNAPSHOT_SUPPORTED[];
138 
139     static const char VIDEO_SIZE[];
140     static const char SUPPORTED_VIDEO_SIZES[];
141     static const char PREFERRED_PREVIEW_SIZE_FOR_VIDEO[];
142 
143     CameraProperties();
144     ~CameraProperties();
145 
146     // container class passed around for accessing properties
147     class Properties
148     {
149         public:
Properties()150             Properties()
151             {
152                 mProperties = new DefaultKeyedVector<String8, String8>(String8(DEFAULT_VALUE));
153                 char property[PROPERTY_VALUE_MAX];
154                 property_get("ro.product.manufacturer", property, EXIF_MAKE_DEFAULT);
155                 property[0] = toupper(property[0]);
156                 set(EXIF_MAKE, property);
157                 property_get("ro.product.model", property, EXIF_MODEL_DEFAULT);
158                 property[0] = toupper(property[0]);
159                 set(EXIF_MODEL, property);
160             }
~Properties()161             ~Properties()
162             {
163                 delete mProperties;
164             }
165             ssize_t set(const char *prop, const char *value);
166             ssize_t set(const char *prop, int value);
167             const char* get(const char * prop);
168             void dump();
169 
170         protected:
171             const char* keyAt(unsigned int);
172             const char* valueAt(unsigned int);
173 
174         private:
175             DefaultKeyedVector<String8, String8>* mProperties;
176 
177     };
178 
179     ///Initializes the CameraProperties class
180     status_t initialize();
181     status_t loadProperties();
182     int camerasSupported();
183     int getProperties(int cameraIndex, Properties** properties);
184 
185 private:
186 
187     uint32_t mCamerasSupported;
188     int mInitialized;
189     mutable Mutex mLock;
190 
191     Properties mCameraProps[MAX_CAMERAS_SUPPORTED];
192 
193 };
194 
195 };
196 
197 #endif //CAMERA_PROPERTIES_H
198 
199