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 "CameraProperties.h" 25 26 #define CAMERA_ROOT "CameraRoot" 27 #define CAMERA_INSTANCE "CameraInstance" 28 29 namespace Ti { 30 namespace Camera { 31 32 // lower entries have higher priority 33 static const char* g_camera_adapters[] = { 34 #ifdef OMAP4_SUPPORT_OMX_CAMERA_ADAPTER 35 "libomxcameraadapter.so", 36 #endif 37 #ifdef OMAP4_SUPPORT_USB_CAMERA_ADAPTER 38 "libusbcameraadapter.so" 39 #endif 40 }; 41 42 /********************************************************* 43 CameraProperties - public function implemetation 44 **********************************************************/ 45 46 CameraProperties::CameraProperties() : mCamerasSupported(0) 47 { 48 LOG_FUNCTION_NAME; 49 50 mCamerasSupported = 0; 51 mInitialized = 0; 52 53 LOG_FUNCTION_NAME_EXIT; 54 } 55 56 CameraProperties::~CameraProperties() 57 { 58 LOG_FUNCTION_NAME; 59 60 LOG_FUNCTION_NAME_EXIT; 61 } 62 63 64 // Initializes the CameraProperties class 65 status_t CameraProperties::initialize() 66 { 67 LOG_FUNCTION_NAME; 68 69 status_t ret; 70 71 android::AutoMutex lock(mLock); 72 73 if(mInitialized) 74 return NO_ERROR; 75 76 ret = loadProperties(); 77 78 if (ret == NO_ERROR) { 79 mInitialized = 1; 80 } 81 82 LOG_FUNCTION_NAME_EXIT; 83 84 return ret; 85 } 86 87 extern "C" status_t CameraAdapter_Capabilities(CameraProperties::Properties* properties_array, 88 int starting_camera, int max_camera, int & supported_cameras); 89 90 ///Loads all the Camera related properties 91 status_t CameraProperties::loadProperties() 92 { 93 LOG_FUNCTION_NAME; 94 95 status_t ret = NO_ERROR; 96 97 //Must be re-initialized here, since loadProperties() could potentially be called more than once. 98 mCamerasSupported = 0; 99 100 // adapter updates capabilities and we update camera count 101 const status_t err = CameraAdapter_Capabilities(mCameraProps, mCamerasSupported, 102 MAX_CAMERAS_SUPPORTED, mCamerasSupported); 103 104 if(err != NO_ERROR) { 105 CAMHAL_LOGE("error while getting capabilities"); 106 ret = UNKNOWN_ERROR; 107 } else if (mCamerasSupported == 0) { 108 CAMHAL_LOGE("camera busy. properties not loaded. num_cameras = %d", mCamerasSupported); 109 ret = UNKNOWN_ERROR; 110 } else if (mCamerasSupported > MAX_CAMERAS_SUPPORTED) { 111 CAMHAL_LOGE("returned too many adapaters"); 112 ret = UNKNOWN_ERROR; 113 } else { 114 CAMHAL_LOGI("num_cameras = %d", mCamerasSupported); 115 116 for (int i = 0; i < mCamerasSupported; i++) { 117 mCameraProps[i].setSensorIndex(i); 118 mCameraProps[i].dump(); 119 } 120 } 121 122 CAMHAL_LOGV("mCamerasSupported = %d", mCamerasSupported); 123 LOG_FUNCTION_NAME_EXIT; 124 return ret; 125 } 126 127 // Returns the number of Cameras found 128 int CameraProperties::camerasSupported() 129 { 130 LOG_FUNCTION_NAME; 131 return mCamerasSupported; 132 } 133 134 } // namespace Camera 135 } // namespace Ti 136