• 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 * @file CameraProperties.cpp
19 *
20 * This file maps the CameraHardwareInterface to the Camera interfaces on OMAP4 (mainly OMX).
21 *
22 */
23 
24 //#include "CameraHal.h"
25 #include <utils/threads.h>
26 
27 #include "DebugUtils.h"
28 #include "CameraProperties.h"
29 
30 #define CAMERA_ROOT         "CameraRoot"
31 #define CAMERA_INSTANCE     "CameraInstance"
32 
33 namespace android {
34 
35 // lower entries have higher priority
36 static const char* g_camera_adapters[] = {
37 #ifdef OMAP4_SUPPORT_OMX_CAMERA_ADAPTER
38     "libomxcameraadapter.so",
39 #endif
40 #ifdef OMAP4_SUPPORT_USB_CAMERA_ADAPTER
41     "libusbcameraadapter.so"
42 #endif
43 };
44 
45 /*********************************************************
46  CameraProperties - public function implemetation
47 **********************************************************/
48 
CameraProperties()49 CameraProperties::CameraProperties() : mCamerasSupported(0)
50 {
51     LOG_FUNCTION_NAME;
52 
53     mCamerasSupported = 0;
54     mInitialized = 0;
55 
56     LOG_FUNCTION_NAME_EXIT;
57 }
58 
~CameraProperties()59 CameraProperties::~CameraProperties()
60 {
61     LOG_FUNCTION_NAME;
62 
63     LOG_FUNCTION_NAME_EXIT;
64 }
65 
66 
67 // Initializes the CameraProperties class
initialize()68 status_t CameraProperties::initialize()
69 {
70     LOG_FUNCTION_NAME;
71 
72     status_t ret;
73 
74     Mutex::Autolock lock(mLock);
75 
76     if(mInitialized)
77         return NO_ERROR;
78 
79     ret = loadProperties();
80 
81     mInitialized = 1;
82 
83     LOG_FUNCTION_NAME_EXIT;
84 
85     return ret;
86 }
87 
88 extern "C" int CameraAdapter_Capabilities(CameraProperties::Properties* properties_array,
89                                           const unsigned int starting_camera,
90                                           const unsigned int max_camera);
91 
92 ///Loads all the Camera related properties
loadProperties()93 status_t CameraProperties::loadProperties()
94 {
95     LOG_FUNCTION_NAME;
96 
97     status_t ret = NO_ERROR;
98 
99     // adapter updates capabilities and we update camera count
100     mCamerasSupported = CameraAdapter_Capabilities(mCameraProps, mCamerasSupported, MAX_CAMERAS_SUPPORTED);
101 
102     if((int)mCamerasSupported < 0) {
103         ALOGE("error while getting capabilities");
104         ret = UNKNOWN_ERROR;
105     } else if (mCamerasSupported > MAX_CAMERAS_SUPPORTED) {
106         ALOGE("returned too many adapaters");
107         ret = UNKNOWN_ERROR;
108     } else {
109         ALOGE("num_cameras = %d", mCamerasSupported);
110 
111         for (unsigned int i = 0; i < mCamerasSupported; i++) {
112             mCameraProps[i].set(CAMERA_SENSOR_INDEX, i);
113             mCameraProps[i].dump();
114         }
115     }
116 
117     ALOGV("mCamerasSupported = %d", mCamerasSupported);
118     LOG_FUNCTION_NAME_EXIT;
119     return ret;
120 }
121 
122 // Returns the number of Cameras found
camerasSupported()123 int CameraProperties::camerasSupported()
124 {
125     LOG_FUNCTION_NAME;
126     return mCamerasSupported;
127 }
128 
129 };
130