NdkCameraManager.cpp revision ead9146f844ee194a4f4244ba8ae1a3aece12b63
1/* 2 * Copyright (C) 2015 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//#define LOG_NDEBUG 0 18#define LOG_TAG "NdkCameraManager" 19#define ATRACE_TAG ATRACE_TAG_CAMERA 20 21#include <utils/Log.h> 22#include <utils/Trace.h> 23 24#include <NdkCameraManager.h> 25#include "impl/ACameraManager.h" 26 27EXPORT 28ACameraManager* ACameraManager_create() { 29 ATRACE_CALL(); 30 return new ACameraManager(); 31} 32 33EXPORT 34void ACameraManager_delete(ACameraManager* manager) { 35 ATRACE_CALL(); 36 if (manager != nullptr) { 37 delete manager; 38 } 39} 40 41EXPORT 42camera_status_t ACameraManager_getCameraIdList( 43 ACameraManager* manager, ACameraIdList** cameraIdList) { 44 ATRACE_CALL(); 45 if (manager == nullptr || cameraIdList == nullptr) { 46 ALOGE("%s: invalid argument! manager %p, cameraIdList %p", 47 __FUNCTION__, manager, cameraIdList); 48 return ACAMERA_ERROR_INVALID_PARAMETER; 49 } 50 return manager->getCameraIdList(cameraIdList); 51} 52 53EXPORT 54void ACameraManager_deleteCameraIdList(ACameraIdList* cameraIdList) { 55 ATRACE_CALL(); 56 if (cameraIdList != nullptr) { 57 ACameraManager::deleteCameraIdList(cameraIdList); 58 } 59} 60 61EXPORT 62camera_status_t ACameraManager_registerAvailabilityCallback( 63 ACameraManager*, const ACameraManager_AvailabilityCallbacks *callback) { 64 ATRACE_CALL(); 65 if (callback == nullptr) { 66 ALOGE("%s: invalid argument! callback is null!", __FUNCTION__); 67 return ACAMERA_ERROR_INVALID_PARAMETER; 68 } 69 if (callback->onCameraAvailable == nullptr || callback->onCameraUnavailable == nullptr) { 70 ALOGE("%s: invalid argument! callback %p, " 71 "onCameraAvailable %p, onCameraUnavailable %p", 72 __FUNCTION__, callback, 73 callback->onCameraAvailable, callback->onCameraUnavailable); 74 return ACAMERA_ERROR_INVALID_PARAMETER; 75 } 76 CameraManagerGlobal::getInstance().registerAvailabilityCallback(callback); 77 return ACAMERA_OK; 78} 79 80EXPORT 81camera_status_t ACameraManager_unregisterAvailabilityCallback( 82 ACameraManager*, const ACameraManager_AvailabilityCallbacks *callback) { 83 ATRACE_CALL(); 84 if (callback == nullptr) { 85 ALOGE("%s: invalid argument! callback is null!", __FUNCTION__); 86 return ACAMERA_ERROR_INVALID_PARAMETER; 87 } 88 if (callback->onCameraAvailable == nullptr || callback->onCameraUnavailable == nullptr) { 89 ALOGE("%s: invalid argument! callback %p, " 90 "onCameraAvailable %p, onCameraUnavailable %p", 91 __FUNCTION__, callback, 92 callback->onCameraAvailable, callback->onCameraUnavailable); 93 return ACAMERA_ERROR_INVALID_PARAMETER; 94 } 95 CameraManagerGlobal::getInstance().unregisterAvailabilityCallback(callback); 96 return ACAMERA_OK; 97} 98 99EXPORT 100camera_status_t ACameraManager_getCameraCharacteristics( 101 ACameraManager* mgr, const char* cameraId, ACameraMetadata** chars){ 102 ATRACE_CALL(); 103 if (mgr == nullptr || cameraId == nullptr || chars == nullptr) { 104 ALOGE("%s: invalid argument! mgr %p cameraId %p chars %p", 105 __FUNCTION__, mgr, cameraId, chars); 106 return ACAMERA_ERROR_INVALID_PARAMETER; 107 } 108 return mgr->getCameraCharacteristics(cameraId, chars); 109} 110 111EXPORT 112camera_status_t ACameraManager_openCamera( 113 ACameraManager* mgr, const char* cameraId, 114 ACameraDevice_StateCallbacks* callback, 115 /*out*/ACameraDevice** device) { 116 ATRACE_CALL(); 117 if (mgr == nullptr || cameraId == nullptr || callback == nullptr || device == nullptr) { 118 ALOGE("%s: invalid argument! mgr %p cameraId %p callback %p device %p", 119 __FUNCTION__, mgr, cameraId, callback, device); 120 return ACAMERA_ERROR_INVALID_PARAMETER; 121 } 122 return mgr->openCamera(cameraId, callback, device); 123} 124