blob: 3293af02c1e6713c46285f98f29d8141bec9eb95 [file] [log] [blame]
Yin-Chia Yeh0dea57f2015-12-09 16:46:07 -08001/*
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 0x%p, cameraIdList 0x%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 0x%p, "
71 "onCameraAvailable 0x%p, onCameraUnavailable 0x%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 0x%p, "
90 "onCameraAvailable 0x%p, onCameraUnavailable 0x%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 0x%p cameraId 0x%p chars 0x%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 0x%p cameraId 0x%p callback 0x%p device 0x%p",
119 __FUNCTION__, mgr, cameraId, callback, device);
120 return ACAMERA_ERROR_INVALID_PARAMETER;
121 }
122 return mgr->openCamera(cameraId, callback, device);
123}