Ocean
Loading...
Searching...
No Matches
NativeCameraLibrary.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 */
7
8#ifndef META_OCEAN_MEDIA_ANDROID_NATIVE_CAMERA_LIBRARY_H
9#define META_OCEAN_MEDIA_ANDROID_NATIVE_CAMERA_LIBRARY_H
10
12
16
17#if defined(__ANDROID_API__) && __ANDROID_API__ >= 24
18
19#ifndef OCEAN_MEDIA_ANDROID_NATIVECAMERALIBRARY_AVAILABLE
20 #define OCEAN_MEDIA_ANDROID_NATIVECAMERALIBRARY_AVAILABLE
21#endif
22
23#include <camera/NdkCaptureRequest.h>
24
25#include <camera/NdkCameraCaptureSession.h>
26#include <camera/NdkCameraDevice.h>
27#include <camera/NdkCameraManager.h>
28
29namespace Ocean
30{
31
32namespace Media
33{
34
35namespace Android
36{
37
38/**
39 * This class is an interface for Android's shared native library camera2ndk.
40 * @ingroup mediaandroid
41 */
42class OCEAN_MEDIA_A_EXPORT NativeCameraLibrary : public Singleton<NativeCameraLibrary>
43{
44 friend class Singleton<NativeCameraLibrary>;
45
46 public:
47
48 /**
49 * Definition of a subscription object.
50 */
52
53 /**
54 * Definition of a scoped object for ACameraManager objects.
55 */
56 class ScopedACameraManager : public ScopedObjectT<ACameraManager*, ACameraManager*, std::function<void(ACameraManager*)>>
57 {
58 public:
59
60 /**
61 * Default constructor creating an invalid object.
62 */
64
65 /**
66 * Creates a new scoped object and takes over the ownership of the given camera manager.
67 * @param cameraManager The camera manager to take over, can be nullptr to create an invalid object.
68 */
69 explicit inline ScopedACameraManager(ACameraManager* cameraManager);
70 };
71
72 /**
73 * Definition of a scoped object for ACameraIdList objects.
74 */
75 class ScopedACameraIdList : public ScopedObjectT<ACameraIdList*, ACameraIdList*, std::function<void(ACameraIdList*)>>
76 {
77 public:
78
79 /**
80 * Default constructor creating an invalid object.
81 */
83
84 /**
85 * Creates a new scoped object and takes over the ownership of the created camera id list.
86 * @param cameraManager The camera manager which will be used to create the camera id list, must be valid
87 */
88 explicit ScopedACameraIdList(ACameraManager* cameraManager);
89 };
90
91 /**
92 * Definition of a scoped object for ACaptureSessionOutputContainer objects.
93 */
94 class ScopedACaptureSessionOutputContainer : public ScopedObjectT<ACaptureSessionOutputContainer*, ACaptureSessionOutputContainer*, std::function<void(ACaptureSessionOutputContainer*)>>
95 {
96 public:
97
98 /**
99 * Default constructor creating an invalid object.
100 */
102
103 /**
104 * Creates a new scoped object and takes over the ownership of the created capture session output.
105 * @param captureSessionOutputContainer The capture session output container to take over, can be nullptr to create an invalid object.
106 */
107 explicit inline ScopedACaptureSessionOutputContainer(ACaptureSessionOutputContainer* captureSessionOutputContainer);
108 };
109
110 /**
111 * Definition of a scoped object for ACaptureSessionOutput objects.
112 */
113 class ScopedACaptureSessionOutput : public ScopedObjectT<ACaptureSessionOutput*, ACaptureSessionOutput*, std::function<void(ACaptureSessionOutput*)>>
114 {
115 public:
116
117 /**
118 * Default constructor creating an invalid object.
119 */
121
122 /**
123 * Creates a new scoped object and takes over the ownership of the created capture session output.
124 * @param nativeWindow The native window to which the session output will be attached, must be valid
125 */
126 explicit ScopedACaptureSessionOutput(ANativeWindow* nativeWindow);
127 };
128
129 /**
130 * Definition of a scoped object for AACameraMetadata objects.
131 */
132 class ScopedACameraMetadata : public ScopedObjectT<ACameraMetadata*, ACameraMetadata*, std::function<void(ACameraMetadata*)>>
133 {
134 public:
135
136 /**
137 * Default constructor creating an invalid object.
138 */
140
141 /**
142 * Creates a new scoped object and takes over the ownership of the created camera metadata.
143 * @param cameraManager The camera manager which will be used to create the camera metadata, must be valid
144 * @param cameraId The id of the camera for which the camera metadata will be created, must be valid
145 */
146 ScopedACameraMetadata(ACameraManager* cameraManager, const char* cameraId);
147 };
148
149 protected:
150
151 /**
152 * Definition of the individual function pointers of ACameraDevice.
153 */
154 using Function_ACameraDevice_close = camera_status_t (ACameraDevice* device);
155 using Function_ACameraDevice_getId = const char* (const ACameraDevice* device);
156 using Function_ACameraDevice_createCaptureRequest = camera_status_t (const ACameraDevice* device, ACameraDevice_request_template templateId, ACaptureRequest** request);
157 using Function_ACaptureSessionOutputContainer_create = camera_status_t (ACaptureSessionOutputContainer** container);
158 using Function_ACaptureSessionOutputContainer_free = void (ACaptureSessionOutputContainer* container);
159 using Function_ACaptureSessionOutput_create = camera_status_t (ANativeWindow* anw, ACaptureSessionOutput** output);
160 using Function_ACaptureSessionOutput_free = void (ACaptureSessionOutput* output);
161 using Function_ACaptureSessionOutputContainer_add = camera_status_t (ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output);
162 using Function_ACaptureSessionOutputContainer_remove = camera_status_t (ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output);
163 using Function_ACameraDevice_createCaptureSession = camera_status_t (ACameraDevice* device, const ACaptureSessionOutputContainer* outputs, const ACameraCaptureSession_stateCallbacks* callbacks, ACameraCaptureSession** session);
164
165 /**
166 * Definition of the individual function pointers of ACameraManager.
167 */
168 using Function_ACameraManager_create = ACameraManager*();
169 using Function_ACameraManager_delete = void (ACameraManager*);
170 using Function_ACameraManager_getCameraIdList = camera_status_t (ACameraManager* manager, ACameraIdList** cameraIdList);
171 using Function_ACameraManager_deleteCameraIdList = void (ACameraIdList* cameraIdList);
172 using Function_ACameraManager_registerAvailabilityCallback = camera_status_t (ACameraManager* manager, const ACameraManager_AvailabilityCallbacks* callback);
173 using Function_ACameraManager_unregisterAvailabilityCallback = camera_status_t (ACameraManager* manager, const ACameraManager_AvailabilityCallbacks* callback);
174 using Function_ACameraManager_getCameraCharacteristics = camera_status_t (ACameraManager* manager, const char* cameraId, ACameraMetadata** characteristics);
175 using Function_ACameraManager_openCamera = camera_status_t (ACameraManager* manager, const char* cameraId, ACameraDevice_StateCallbacks* callback, ACameraDevice** device);
176
177 /**
178 * Definition of the individual function pointers of ACameraMetadata.
179 */
180 using Function_ACameraMetadata_getConstEntry = camera_status_t (const ACameraMetadata* metadata, uint32_t tag, ACameraMetadata_const_entry* entry);
181 using Function_ACameraMetadata_getAllTags = camera_status_t (const ACameraMetadata* metadata, int32_t* numEntries, const uint32_t** tags);
182 using Function_ACameraMetadata_copy = ACameraMetadata* (const ACameraMetadata* src);
183 using Function_ACameraMetadata_free = void (ACameraMetadata* metadata);
184
185 /**
186 * Definition of the individual function pointers for capture requests.
187 */
188 using Function_ACameraOutputTarget_create = camera_status_t (ANativeWindow* window, ACameraOutputTarget** output);
189 using Function_ACameraOutputTarget_free = void (ACameraOutputTarget* output);
190 using Function_ACaptureRequest_addTarget = camera_status_t (ACaptureRequest* request, const ACameraOutputTarget* output);
191 using Function_ACaptureRequest_removeTarget = camera_status_t (ACaptureRequest* request, const ACameraOutputTarget* output);
192 using Function_ACaptureRequest_getConstEntry = camera_status_t (const ACaptureRequest* request, uint32_t tag, ACameraMetadata_const_entry* entry);
193 using Function_ACaptureRequest_getAllTags = camera_status_t (const ACaptureRequest* request, int32_t* numTags, const uint32_t** tags);
194 using Function_ACaptureRequest_setEntry_u8 = camera_status_t (ACaptureRequest* request, uint32_t tag, uint32_t count, const uint8_t* data);
195 using Function_ACaptureRequest_setEntry_i32 = camera_status_t (ACaptureRequest* request, uint32_t tag, uint32_t count, const int32_t* data);
196 using Function_ACaptureRequest_setEntry_float = camera_status_t (ACaptureRequest* request, uint32_t tag, uint32_t count, const float* data);
197 using Function_ACaptureRequest_setEntry_i64 = camera_status_t (ACaptureRequest* request, uint32_t tag, uint32_t count, const int64_t* data);
198 using Function_ACaptureRequest_setEntry_double = camera_status_t (ACaptureRequest* request, uint32_t tag, uint32_t count, const double* data);
199 using Function_ACaptureRequest_setEntry_rational = camera_status_t (ACaptureRequest* request, uint32_t tag, uint32_t count, const ACameraMetadata_rational* data);
200 using Function_ACaptureRequest_free = void (ACaptureRequest* request);
201
202 /**
203 * Definition of individual function pointers for ACameraCaptureSession.
204 */
205 using Function_ACameraCaptureSession_close = void (ACameraCaptureSession* session);
206 using Function_ACameraCaptureSession_getDevice = camera_status_t (ACameraCaptureSession* session, /*out*/ACameraDevice** device);
207 using Function_ACameraCaptureSession_capture = camera_status_t (ACameraCaptureSession* session, ACameraCaptureSession_captureCallbacks* callbacks, int numRequests, ACaptureRequest** requests, int* captureSequenceId);
208 using Function_ACameraCaptureSession_setRepeatingRequest = camera_status_t (ACameraCaptureSession* session, ACameraCaptureSession_captureCallbacks* callbacks, int numRequests, ACaptureRequest** requests, int* captureSequenceId);
209 using Function_ACameraCaptureSession_stopRepeating = camera_status_t (ACameraCaptureSession* session);
210 using Function_ACameraCaptureSession_abortCaptures = camera_status_t (ACameraCaptureSession* session);
211
212 public:
213
214 /**
215 * Initializes the camera library.
216 * The library will be initialized as long as the resulting subscription object exists.
217 * @return The subscription object, invalid in case the library could not be initialized
218 */
220
221 /**
222 * Returns whether the library is initialized.
223 * @return True, if so
224 */
225 inline bool isInitialized() const;
226
227 /**
228 * The individual functions of ACameraDevice.
229 */
230 inline camera_status_t ACameraDevice_close(ACameraDevice* device);
231 inline const char* ACameraDevice_getId(const ACameraDevice* device);
232 inline camera_status_t ACameraDevice_createCaptureRequest(const ACameraDevice* device, ACameraDevice_request_template templateId, ACaptureRequest** request);
233 inline camera_status_t ACaptureSessionOutputContainer_create(ACaptureSessionOutputContainer** container);
234 inline void ACaptureSessionOutputContainer_free(ACaptureSessionOutputContainer* container);
235 inline camera_status_t ACaptureSessionOutput_create(ANativeWindow* anw, ACaptureSessionOutput** output);
236 inline void ACaptureSessionOutput_free(ACaptureSessionOutput* output);
237 inline camera_status_t ACaptureSessionOutputContainer_add(ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output);
238 inline camera_status_t ACaptureSessionOutputContainer_remove(ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output);
239 inline camera_status_t ACameraDevice_createCaptureSession(ACameraDevice* device, const ACaptureSessionOutputContainer* outputs, const ACameraCaptureSession_stateCallbacks* callbacks, ACameraCaptureSession** session);
240
241 /**
242 * The individual functions of ACameraManager.
243 */
244 inline ACameraManager* ACameraManager_create();
245 inline void ACameraManager_delete(ACameraManager* manager);
246 inline camera_status_t ACameraManager_getCameraIdList(ACameraManager* manager, ACameraIdList** cameraIdList);
247 inline void ACameraManager_deleteCameraIdList(ACameraIdList* cameraIdList);
248 inline camera_status_t ACameraManager_registerAvailabilityCallback(ACameraManager* manager, const ACameraManager_AvailabilityCallbacks* callback);
249 inline camera_status_t ACameraManager_unregisterAvailabilityCallback(ACameraManager* manager, const ACameraManager_AvailabilityCallbacks* callback);
250 inline camera_status_t ACameraManager_getCameraCharacteristics(ACameraManager* manager, const char* cameraId, ACameraMetadata** characteristics);
251 inline camera_status_t ACameraManager_openCamera(ACameraManager* manager, const char* cameraId, ACameraDevice_StateCallbacks* callback, ACameraDevice** device);
252
253 /**
254 * The individual functions of ACameraMetadata.
255 */
256 inline camera_status_t ACameraMetadata_getConstEntry(const ACameraMetadata* metadata, uint32_t tag, ACameraMetadata_const_entry* entry);
257 inline camera_status_t ACameraMetadata_getAllTags(const ACameraMetadata* metadata, int32_t* numEntries, const uint32_t** tags);
258 inline ACameraMetadata* ACameraMetadata_copy(const ACameraMetadata* src);
259 inline void ACameraMetadata_free(ACameraMetadata* metadata);
260
261 /**
262 * The individual functions for capture requests.
263 */
264 inline camera_status_t ACameraOutputTarget_create(ANativeWindow* window, ACameraOutputTarget** output);
265 inline void ACameraOutputTarget_free(ACameraOutputTarget* output);
266 inline camera_status_t ACaptureRequest_addTarget(ACaptureRequest* request, const ACameraOutputTarget* output);
267 inline camera_status_t ACaptureRequest_removeTarget(ACaptureRequest* request, const ACameraOutputTarget* output);
268 inline camera_status_t ACaptureRequest_getConstEntry(const ACaptureRequest* request, uint32_t tag, ACameraMetadata_const_entry* entry);
269 inline camera_status_t ACaptureRequest_getAllTags(const ACaptureRequest* request, int32_t* numTags, const uint32_t** tags);
270 inline camera_status_t ACaptureRequest_setEntry_u8(ACaptureRequest* request, uint32_t tag, uint32_t count, const uint8_t* data);
271 inline camera_status_t ACaptureRequest_setEntry_i32(ACaptureRequest* request, uint32_t tag, uint32_t count, const int32_t* data);
272 inline camera_status_t ACaptureRequest_setEntry_float(ACaptureRequest* request, uint32_t tag, uint32_t count, const float* data);
273 inline camera_status_t ACaptureRequest_setEntry_i64(ACaptureRequest* request, uint32_t tag, uint32_t count, const int64_t* data);
274 inline camera_status_t ACaptureRequest_setEntry_double(ACaptureRequest* request, uint32_t tag, uint32_t count, const double* data);
275 inline camera_status_t ACaptureRequest_setEntry_rational(ACaptureRequest* request, uint32_t tag, uint32_t count, const ACameraMetadata_rational* data);
276 inline void ACaptureRequest_free(ACaptureRequest* request);
277
278 /**
279 * The individual functions of ACameraCaptureSession.
280 */
281 inline void ACameraCaptureSession_close(ACameraCaptureSession* session);
282 inline camera_status_t ACameraCaptureSession_getDevice(ACameraCaptureSession* session, ACameraDevice** device);
283 inline camera_status_t ACameraCaptureSession_capture(ACameraCaptureSession* session, ACameraCaptureSession_captureCallbacks* callbacks, int numRequests, ACaptureRequest** requests, int* captureSequenceId);
284 inline camera_status_t ACameraCaptureSession_setRepeatingRequest(ACameraCaptureSession* session, ACameraCaptureSession_captureCallbacks* callbacks, int numRequests, ACaptureRequest** requests, int* captureSequenceId);
285 inline camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession* session);
286 inline camera_status_t ACameraCaptureSession_abortCaptures(ACameraCaptureSession* session);
287
288 protected:
289
290 /**
291 * Protected default constructor.
292 */
294
295 /**
296 * Destructs the library
297 */
298 inline ~NativeCameraLibrary();
299
300 /**
301 * Uninitializes the library.
302 * @param unused An unused id
303 */
304 void uninitialize(const unsigned int unused);
305
306 /**
307 * Releases the library.
308 */
309 void release();
310
311 protected:
312
313 /// The handle of the library.
314 void* libraryHandle_ = nullptr;
315
316 /// All ACameraDevice function pointers.
317 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraDevice_close* ACameraDevice_close_ = nullptr;
318 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraDevice_getId* ACameraDevice_getId_ = nullptr;
319 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraDevice_createCaptureRequest* ACameraDevice_createCaptureRequest_ = nullptr;
320 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureSessionOutputContainer_create* ACaptureSessionOutputContainer_create_ = nullptr;
321 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureSessionOutputContainer_free* ACaptureSessionOutputContainer_free_ = nullptr;
322 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureSessionOutput_create* ACaptureSessionOutput_create_ = nullptr;
323 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureSessionOutput_free* ACaptureSessionOutput_free_ = nullptr;
324 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureSessionOutputContainer_add* ACaptureSessionOutputContainer_add_ = nullptr;
325 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureSessionOutputContainer_remove* ACaptureSessionOutputContainer_remove_ = nullptr;
326 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraDevice_createCaptureSession* ACameraDevice_createCaptureSession_ = nullptr;
327
328 /// All ACameraManager function pointers.
329 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraManager_create* ACameraManager_create_ = nullptr;
330 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraManager_delete* ACameraManager_delete_ = nullptr;
331 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraManager_getCameraIdList* ACameraManager_getCameraIdList_ = nullptr;
332 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraManager_deleteCameraIdList* ACameraManager_deleteCameraIdList_ = nullptr;
333 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraManager_registerAvailabilityCallback* ACameraManager_registerAvailabilityCallback_ = nullptr;
334 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraManager_unregisterAvailabilityCallback* ACameraManager_unregisterAvailabilityCallback_ = nullptr;
335 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraManager_getCameraCharacteristics* ACameraManager_getCameraCharacteristics_ = nullptr;
336 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraManager_openCamera* ACameraManager_openCamera_ = nullptr;
337
338 /// All ACameraMetadata function pointers.
339 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraMetadata_getConstEntry* ACameraMetadata_getConstEntry_ = nullptr;
340 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraMetadata_getAllTags* ACameraMetadata_getAllTags_ = nullptr;
341 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraMetadata_copy* ACameraMetadata_copy_ = nullptr;
342 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraMetadata_free* ACameraMetadata_free_ = nullptr;
343
344 /// All capture request function pointers.
345 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraOutputTarget_create* ACameraOutputTarget_create_ = nullptr;
346 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraOutputTarget_free* ACameraOutputTarget_free_ = nullptr;
347 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_addTarget* ACaptureRequest_addTarget_ = nullptr;
348 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_removeTarget* ACaptureRequest_removeTarget_ = nullptr;
349 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_getConstEntry* ACaptureRequest_getConstEntry_ = nullptr;
350 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_getAllTags* ACaptureRequest_getAllTags_ = nullptr;
351 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_setEntry_u8* ACaptureRequest_setEntry_u8_ = nullptr;
352 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_setEntry_i32* ACaptureRequest_setEntry_i32_ = nullptr;
353 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_setEntry_float* ACaptureRequest_setEntry_float_ = nullptr;
354 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_setEntry_i64* ACaptureRequest_setEntry_i64_ = nullptr;
355 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_setEntry_double* ACaptureRequest_setEntry_double_ = nullptr;
356 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_setEntry_rational* ACaptureRequest_setEntry_rational_ = nullptr;
357 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACaptureRequest_free* ACaptureRequest_free_ = nullptr;
358
359 /// All ACameraCaptureSession function pointers.
360 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraCaptureSession_close* ACameraCaptureSession_close_ = nullptr;
361 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraCaptureSession_getDevice* ACameraCaptureSession_getDevice_ = nullptr;
362 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraCaptureSession_capture* ACameraCaptureSession_capture_ = nullptr;
363 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraCaptureSession_setRepeatingRequest* ACameraCaptureSession_setRepeatingRequest_ = nullptr;
364 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraCaptureSession_stopRepeating* ACameraCaptureSession_stopRepeating_ = nullptr;
365 __attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraCaptureSession_abortCaptures* ACameraCaptureSession_abortCaptures_ = nullptr;
366
367 /// The counter for counting the usage of this library.
368 unsigned int initializationCounter_ = 0u;
369
370 /// The library's lock.
371 mutable Lock lock_;
372};
373
374inline NativeCameraLibrary::ScopedACameraManager::ScopedACameraManager(ACameraManager* cameraManager) :
375 ScopedObjectT(cameraManager, std::bind(&NativeCameraLibrary::ACameraManager_delete, &NativeCameraLibrary::get(), cameraManager), cameraManager != nullptr)
376{
377 // nothing to do here
378}
379
380inline NativeCameraLibrary::ScopedACaptureSessionOutputContainer::ScopedACaptureSessionOutputContainer(ACaptureSessionOutputContainer* captureSessionOutputContainer) :
381 ScopedObjectT(captureSessionOutputContainer, std::bind(&NativeCameraLibrary::ACaptureSessionOutputContainer_free, &NativeCameraLibrary::get(), captureSessionOutputContainer), captureSessionOutputContainer != nullptr)
382{
383 // nothing to do here
384}
385
387{
388 ocean_assert(initializationCounter_ == 0u);
389}
390
392{
393 const ScopedLock scopedLock(lock_);
394
395 return initializationCounter_ != 0u;
396}
397
398inline camera_status_t NativeCameraLibrary::ACameraDevice_close(ACameraDevice* device)
399{
400 ocean_assert(isInitialized());
401 ocean_assert(ACameraDevice_close_ != nullptr);
402
403 return ACameraDevice_close_(device);
404}
405
406inline const char* NativeCameraLibrary::ACameraDevice_getId(const ACameraDevice* device)
407{
408 ocean_assert(isInitialized());
409 ocean_assert(ACameraDevice_getId_ != nullptr);
410
411 return ACameraDevice_getId_(device);
412}
413
414inline camera_status_t NativeCameraLibrary::ACameraDevice_createCaptureRequest(const ACameraDevice* device, ACameraDevice_request_template templateId, ACaptureRequest** request)
415{
416 ocean_assert(isInitialized());
417 ocean_assert(ACameraDevice_createCaptureRequest_ != nullptr);
418
419 return ACameraDevice_createCaptureRequest_(device, templateId, request);
420}
421
422inline camera_status_t NativeCameraLibrary::ACaptureSessionOutputContainer_create(ACaptureSessionOutputContainer** container)
423{
424 ocean_assert(isInitialized());
425 ocean_assert(ACaptureSessionOutputContainer_create_ != nullptr);
426
427 return ACaptureSessionOutputContainer_create_(container);
428}
429
430inline void NativeCameraLibrary::ACaptureSessionOutputContainer_free(ACaptureSessionOutputContainer* container)
431{
432 ocean_assert(isInitialized());
433 ocean_assert(ACaptureSessionOutputContainer_free_ != nullptr);
434
435 ACaptureSessionOutputContainer_free_(container);
436}
437
438inline camera_status_t NativeCameraLibrary::ACaptureSessionOutput_create(ANativeWindow* anw, ACaptureSessionOutput** output)
439{
440 ocean_assert(isInitialized());
441 ocean_assert(ACaptureSessionOutput_create_ != nullptr);
442
443 return ACaptureSessionOutput_create_(anw, output);
444}
445
446inline void NativeCameraLibrary::ACaptureSessionOutput_free(ACaptureSessionOutput* output)
447{
448 ocean_assert(isInitialized());
449 ocean_assert(ACaptureSessionOutput_free_ != nullptr);
450
451 ACaptureSessionOutput_free_(output);
452}
453
454inline camera_status_t NativeCameraLibrary::ACaptureSessionOutputContainer_add(ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output)
455{
456 ocean_assert(isInitialized());
457 ocean_assert(ACaptureSessionOutputContainer_add_ != nullptr);
458
459 return ACaptureSessionOutputContainer_add_(container, output);
460}
461
462inline camera_status_t NativeCameraLibrary::ACaptureSessionOutputContainer_remove(ACaptureSessionOutputContainer* container, const ACaptureSessionOutput* output)
463{
464 ocean_assert(isInitialized());
465 ocean_assert(ACaptureSessionOutputContainer_remove_ != nullptr);
466
467 return ACaptureSessionOutputContainer_remove_(container, output);
468}
469
470inline camera_status_t NativeCameraLibrary::ACameraDevice_createCaptureSession(ACameraDevice* device, const ACaptureSessionOutputContainer* outputs, const ACameraCaptureSession_stateCallbacks* callbacks, ACameraCaptureSession** session)
471{
472 ocean_assert(isInitialized());
473 ocean_assert(ACameraDevice_createCaptureSession_ != nullptr);
474
475 return ACameraDevice_createCaptureSession_(device, outputs, callbacks, session);
476}
477
479{
480 ocean_assert(isInitialized());
481 ocean_assert(ACameraManager_create_ != nullptr);
482
483 return ACameraManager_create_();
484}
485
486inline void NativeCameraLibrary::ACameraManager_delete(ACameraManager* manager)
487{
488 ocean_assert(isInitialized());
489 ocean_assert(ACameraManager_delete_ != nullptr);
490
491 ACameraManager_delete_(manager);
492}
493
494inline camera_status_t NativeCameraLibrary::ACameraManager_getCameraIdList(ACameraManager* manager, ACameraIdList** cameraIdList)
495{
496 ocean_assert(isInitialized());
497 ocean_assert(ACameraManager_getCameraIdList_ != nullptr);
498
499 return ACameraManager_getCameraIdList_(manager, cameraIdList);
500}
501
502inline void NativeCameraLibrary::ACameraManager_deleteCameraIdList(ACameraIdList* cameraIdList)
503{
504 ocean_assert(isInitialized());
505 ocean_assert(ACameraManager_deleteCameraIdList_ != nullptr);
506
507 ACameraManager_deleteCameraIdList_(cameraIdList);
508}
509
510inline camera_status_t NativeCameraLibrary::ACameraManager_registerAvailabilityCallback(ACameraManager* manager, const ACameraManager_AvailabilityCallbacks* callback)
511{
512 ocean_assert(isInitialized());
513 ocean_assert(ACameraManager_registerAvailabilityCallback_ != nullptr);
514
515 return ACameraManager_registerAvailabilityCallback_(manager, callback);
516}
517
518inline camera_status_t NativeCameraLibrary::ACameraManager_unregisterAvailabilityCallback(ACameraManager* manager, const ACameraManager_AvailabilityCallbacks* callback)
519{
520 ocean_assert(isInitialized());
521 ocean_assert(ACameraManager_unregisterAvailabilityCallback_ != nullptr);
522
523 return ACameraManager_unregisterAvailabilityCallback_(manager, callback);
524}
525
526inline camera_status_t NativeCameraLibrary::ACameraManager_getCameraCharacteristics(ACameraManager* manager, const char* cameraId, ACameraMetadata** characteristics)
527{
528 ocean_assert(isInitialized());
529 ocean_assert(ACameraManager_getCameraCharacteristics_ != nullptr);
530
531 return ACameraManager_getCameraCharacteristics_(manager, cameraId, characteristics);
532}
533
534inline camera_status_t NativeCameraLibrary::ACameraManager_openCamera(ACameraManager* manager, const char* cameraId, ACameraDevice_StateCallbacks* callback, ACameraDevice** device)
535{
536 ocean_assert(isInitialized());
537 ocean_assert(ACameraManager_openCamera_ != nullptr);
538
539 return ACameraManager_openCamera_(manager, cameraId, callback, device);
540}
541
542inline camera_status_t NativeCameraLibrary::ACameraMetadata_getConstEntry(const ACameraMetadata* metadata, uint32_t tag, ACameraMetadata_const_entry* entry)
543{
544 ocean_assert(isInitialized());
545 ocean_assert(ACameraMetadata_getConstEntry_ != nullptr);
546
547 return ACameraMetadata_getConstEntry_(metadata, tag, entry);
548}
549
550inline camera_status_t NativeCameraLibrary::ACameraMetadata_getAllTags(const ACameraMetadata* metadata, int32_t* numEntries, const uint32_t** tags)
551{
552 ocean_assert(isInitialized());
553 ocean_assert(ACameraMetadata_getAllTags_ != nullptr);
554
555 return ACameraMetadata_getAllTags_(metadata, numEntries, tags);
556}
557
558inline ACameraMetadata* NativeCameraLibrary::ACameraMetadata_copy(const ACameraMetadata* src)
559{
560 ocean_assert(isInitialized());
561 ocean_assert(ACameraMetadata_copy_ != nullptr);
562
563 return ACameraMetadata_copy_(src);
564}
565
566inline void NativeCameraLibrary::ACameraMetadata_free(ACameraMetadata* metadata)
567{
568 ocean_assert(isInitialized());
569 ocean_assert(ACameraMetadata_free_ != nullptr);
570
571 ACameraMetadata_free_(metadata);
572}
573
574inline camera_status_t NativeCameraLibrary::ACameraOutputTarget_create(ANativeWindow* window, ACameraOutputTarget** output)
575{
576 ocean_assert(isInitialized());
577 ocean_assert(ACameraOutputTarget_create_ != nullptr);
578
579 return ACameraOutputTarget_create_(window, output);
580}
581
582inline void NativeCameraLibrary::ACameraOutputTarget_free(ACameraOutputTarget* output)
583{
584 ocean_assert(isInitialized());
585 ocean_assert(ACameraOutputTarget_free_ != nullptr);
586
587 return ACameraOutputTarget_free_(output);
588}
589
590inline camera_status_t NativeCameraLibrary::ACaptureRequest_addTarget(ACaptureRequest* request, const ACameraOutputTarget* output)
591{
592 ocean_assert(isInitialized());
593 ocean_assert(ACaptureRequest_addTarget_ != nullptr);
594
595 return ACaptureRequest_addTarget_(request, output);
596}
597
598inline camera_status_t NativeCameraLibrary::ACaptureRequest_removeTarget(ACaptureRequest* request, const ACameraOutputTarget* output)
599{
600 ocean_assert(isInitialized());
601 ocean_assert(ACaptureRequest_removeTarget_ != nullptr);
602
603 return ACaptureRequest_removeTarget_(request, output);
604}
605
606inline camera_status_t NativeCameraLibrary::ACaptureRequest_getConstEntry(const ACaptureRequest* request, uint32_t tag, ACameraMetadata_const_entry* entry)
607{
608 ocean_assert(isInitialized());
609 ocean_assert(ACaptureRequest_getConstEntry_ != nullptr);
610
611 return ACaptureRequest_getConstEntry_(request, tag, entry);
612}
613
614inline camera_status_t NativeCameraLibrary::ACaptureRequest_getAllTags(const ACaptureRequest* request, int32_t* numTags, const uint32_t** tags)
615{
616 ocean_assert(isInitialized());
617 ocean_assert(ACaptureRequest_getAllTags_ != nullptr);
618
619 return ACaptureRequest_getAllTags_(request, numTags, tags);
620}
621
622inline camera_status_t NativeCameraLibrary::ACaptureRequest_setEntry_u8(ACaptureRequest* request, uint32_t tag, uint32_t count, const uint8_t* data)
623{
624 ocean_assert(isInitialized());
625 ocean_assert(ACaptureRequest_setEntry_u8_ != nullptr);
626
627 return ACaptureRequest_setEntry_u8_(request, tag, count, data);
628}
629
630inline camera_status_t NativeCameraLibrary::ACaptureRequest_setEntry_i32(ACaptureRequest* request, uint32_t tag, uint32_t count, const int32_t* data)
631{
632 ocean_assert(isInitialized());
633 ocean_assert(ACaptureRequest_setEntry_i32_ != nullptr);
634
635 return ACaptureRequest_setEntry_i32_(request, tag, count, data);
636}
637
638inline camera_status_t NativeCameraLibrary::ACaptureRequest_setEntry_float(ACaptureRequest* request, uint32_t tag, uint32_t count, const float* data)
639{
640 ocean_assert(isInitialized());
641 ocean_assert(ACaptureRequest_setEntry_float_ != nullptr);
642
643 return ACaptureRequest_setEntry_float_(request, tag, count, data);
644}
645
646inline camera_status_t NativeCameraLibrary::ACaptureRequest_setEntry_i64(ACaptureRequest* request, uint32_t tag, uint32_t count, const int64_t* data)
647{
648 ocean_assert(isInitialized());
649 ocean_assert(ACaptureRequest_setEntry_i64_ != nullptr);
650
651 return ACaptureRequest_setEntry_i64_(request, tag, count, data);
652}
653
654inline camera_status_t NativeCameraLibrary::ACaptureRequest_setEntry_double(ACaptureRequest* request, uint32_t tag, uint32_t count, const double* data)
655{
656 ocean_assert(isInitialized());
657 ocean_assert(ACaptureRequest_setEntry_double_ != nullptr);
658
659 return ACaptureRequest_setEntry_double_(request, tag, count, data);
660}
661
662inline camera_status_t NativeCameraLibrary::ACaptureRequest_setEntry_rational(ACaptureRequest* request, uint32_t tag, uint32_t count, const ACameraMetadata_rational* data)
663{
664 ocean_assert(isInitialized());
665 ocean_assert(ACaptureRequest_setEntry_rational_ != nullptr);
666
667 return ACaptureRequest_setEntry_rational_(request, tag, count, data);
668}
669
670inline void NativeCameraLibrary::ACaptureRequest_free(ACaptureRequest* request)
671{
672 ocean_assert(isInitialized());
673 ocean_assert(ACaptureRequest_free_ != nullptr);
674
675 ACaptureRequest_free_(request);
676}
677
678inline void NativeCameraLibrary::ACameraCaptureSession_close(ACameraCaptureSession* session)
679{
680 ocean_assert(isInitialized());
681 ocean_assert(ACameraCaptureSession_close_ != nullptr);
682
683 ACameraCaptureSession_close_(session);
684}
685
686inline camera_status_t NativeCameraLibrary::ACameraCaptureSession_getDevice(ACameraCaptureSession* session, ACameraDevice** device)
687{
688 ocean_assert(isInitialized());
689 ocean_assert(ACameraCaptureSession_getDevice_ != nullptr);
690
691 return ACameraCaptureSession_getDevice_(session, device);
692}
693
694inline camera_status_t NativeCameraLibrary::ACameraCaptureSession_capture(ACameraCaptureSession* session, ACameraCaptureSession_captureCallbacks* callbacks, int numRequests, ACaptureRequest** requests, int* captureSequenceId)
695{
696 ocean_assert(isInitialized());
697 ocean_assert(ACameraCaptureSession_capture_ != nullptr);
698
699 return ACameraCaptureSession_capture_(session, callbacks, numRequests, requests, captureSequenceId);
700}
701
702inline camera_status_t NativeCameraLibrary::ACameraCaptureSession_setRepeatingRequest(ACameraCaptureSession* session, ACameraCaptureSession_captureCallbacks* callbacks, int numRequests, ACaptureRequest** requests, int* captureSequenceId)
703{
704 ocean_assert(isInitialized());
705 ocean_assert(ACameraCaptureSession_setRepeatingRequest_ != nullptr);
706
707 return ACameraCaptureSession_setRepeatingRequest_(session, callbacks, numRequests, requests, captureSequenceId);
708}
709
710inline camera_status_t NativeCameraLibrary::ACameraCaptureSession_stopRepeating(ACameraCaptureSession* session)
711{
712 ocean_assert(isInitialized());
713 ocean_assert(ACameraCaptureSession_stopRepeating_ != nullptr);
714
715 return ACameraCaptureSession_stopRepeating_(session);
716}
717
718inline camera_status_t NativeCameraLibrary::ACameraCaptureSession_abortCaptures(ACameraCaptureSession* session)
719{
720 ocean_assert(isInitialized());
721 ocean_assert(ACameraCaptureSession_abortCaptures_ != nullptr);
722
723 return ACameraCaptureSession_abortCaptures_(session);
724}
725
726}
727
728}
729
730}
731
732#endif // defined(__ANDROID_API__) && __ANDROID_API__ >= 24
733
734#endif // META_OCEAN_MEDIA_ANDROID_NATIVE_CAMERA_LIBRARY_H
This class implements a recursive lock object.
Definition Lock.h:31
Definition of a scoped object for ACameraIdList objects.
Definition NativeCameraLibrary.h:76
ScopedACameraIdList()=default
Default constructor creating an invalid object.
ScopedACameraIdList(ACameraManager *cameraManager)
Creates a new scoped object and takes over the ownership of the created camera id list.
Definition of a scoped object for ACameraManager objects.
Definition NativeCameraLibrary.h:57
ScopedACameraManager()=default
Default constructor creating an invalid object.
Definition of a scoped object for AACameraMetadata objects.
Definition NativeCameraLibrary.h:133
ScopedACameraMetadata()=default
Default constructor creating an invalid object.
ScopedACameraMetadata(ACameraManager *cameraManager, const char *cameraId)
Creates a new scoped object and takes over the ownership of the created camera metadata.
Definition of a scoped object for ACaptureSessionOutputContainer objects.
Definition NativeCameraLibrary.h:95
ScopedACaptureSessionOutputContainer()=default
Default constructor creating an invalid object.
Definition of a scoped object for ACaptureSessionOutput objects.
Definition NativeCameraLibrary.h:114
ScopedACaptureSessionOutput(ANativeWindow *nativeWindow)
Creates a new scoped object and takes over the ownership of the created capture session output.
ScopedACaptureSessionOutput()=default
Default constructor creating an invalid object.
This class is an interface for Android's shared native library camera2ndk.
Definition NativeCameraLibrary.h:43
void(ACameraCaptureSession *session) Function_ACameraCaptureSession_close
Definition of individual function pointers for ACameraCaptureSession.
Definition NativeCameraLibrary.h:205
camera_status_t(ACameraManager *manager, ACameraIdList **cameraIdList) Function_ACameraManager_getCameraIdList
Definition NativeCameraLibrary.h:170
camera_status_t ACaptureRequest_setEntry_i64(ACaptureRequest *request, uint32_t tag, uint32_t count, const int64_t *data)
Definition NativeCameraLibrary.h:646
NativeCameraLibrary()
Protected default constructor.
camera_status_t ACameraMetadata_getAllTags(const ACameraMetadata *metadata, int32_t *numEntries, const uint32_t **tags)
Definition NativeCameraLibrary.h:550
camera_status_t ACaptureRequest_setEntry_double(ACaptureRequest *request, uint32_t tag, uint32_t count, const double *data)
Definition NativeCameraLibrary.h:654
camera_status_t ACaptureRequest_addTarget(ACaptureRequest *request, const ACameraOutputTarget *output)
Definition NativeCameraLibrary.h:590
camera_status_t(ACameraManager *manager, const char *cameraId, ACameraMetadata **characteristics) Function_ACameraManager_getCameraCharacteristics
Definition NativeCameraLibrary.h:174
camera_status_t ACameraMetadata_getConstEntry(const ACameraMetadata *metadata, uint32_t tag, ACameraMetadata_const_entry *entry)
The individual functions of ACameraMetadata.
Definition NativeCameraLibrary.h:542
camera_status_t(ACameraDevice *device, const ACaptureSessionOutputContainer *outputs, const ACameraCaptureSession_stateCallbacks *callbacks, ACameraCaptureSession **session) Function_ACameraDevice_createCaptureSession
Definition NativeCameraLibrary.h:163
ScopedSubscription initialize()
Initializes the camera library.
camera_status_t(ACaptureSessionOutputContainer *container, const ACaptureSessionOutput *output) Function_ACaptureSessionOutputContainer_remove
Definition NativeCameraLibrary.h:162
void(ACaptureRequest *request) Function_ACaptureRequest_free
Definition NativeCameraLibrary.h:200
void ACameraCaptureSession_close(ACameraCaptureSession *session)
The individual functions of ACameraCaptureSession.
Definition NativeCameraLibrary.h:678
camera_status_t ACaptureRequest_setEntry_u8(ACaptureRequest *request, uint32_t tag, uint32_t count, const uint8_t *data)
Definition NativeCameraLibrary.h:622
camera_status_t(ACaptureRequest *request, uint32_t tag, uint32_t count, const float *data) Function_ACaptureRequest_setEntry_float
Definition NativeCameraLibrary.h:196
camera_status_t ACameraCaptureSession_getDevice(ACameraCaptureSession *session, ACameraDevice **device)
Definition NativeCameraLibrary.h:686
void ACaptureSessionOutputContainer_free(ACaptureSessionOutputContainer *container)
Definition NativeCameraLibrary.h:430
camera_status_t(const ACaptureRequest *request, int32_t *numTags, const uint32_t **tags) Function_ACaptureRequest_getAllTags
Definition NativeCameraLibrary.h:193
void ACameraManager_delete(ACameraManager *manager)
Definition NativeCameraLibrary.h:486
camera_status_t(ACaptureRequest *request, const ACameraOutputTarget *output) Function_ACaptureRequest_addTarget
Definition NativeCameraLibrary.h:190
const char *(const ACameraDevice *device) Function_ACameraDevice_getId
Definition NativeCameraLibrary.h:155
camera_status_t(ACameraManager *manager, const ACameraManager_AvailabilityCallbacks *callback) Function_ACameraManager_registerAvailabilityCallback
Definition NativeCameraLibrary.h:172
camera_status_t(ACaptureRequest *request, uint32_t tag, uint32_t count, const double *data) Function_ACaptureRequest_setEntry_double
Definition NativeCameraLibrary.h:198
camera_status_t ACameraOutputTarget_create(ANativeWindow *window, ACameraOutputTarget **output)
The individual functions for capture requests.
Definition NativeCameraLibrary.h:574
camera_status_t(ACameraManager *manager, const char *cameraId, ACameraDevice_StateCallbacks *callback, ACameraDevice **device) Function_ACameraManager_openCamera
Definition NativeCameraLibrary.h:175
camera_status_t(ACameraCaptureSession *session, ACameraDevice **device) Function_ACameraCaptureSession_getDevice
Definition NativeCameraLibrary.h:206
camera_status_t(ACameraCaptureSession *session, ACameraCaptureSession_captureCallbacks *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId) Function_ACameraCaptureSession_capture
Definition NativeCameraLibrary.h:207
camera_status_t ACameraCaptureSession_setRepeatingRequest(ACameraCaptureSession *session, ACameraCaptureSession_captureCallbacks *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
Definition NativeCameraLibrary.h:702
camera_status_t ACaptureRequest_setEntry_rational(ACaptureRequest *request, uint32_t tag, uint32_t count, const ACameraMetadata_rational *data)
Definition NativeCameraLibrary.h:662
camera_status_t(ANativeWindow *anw, ACaptureSessionOutput **output) Function_ACaptureSessionOutput_create
Definition NativeCameraLibrary.h:159
camera_status_t ACaptureSessionOutputContainer_create(ACaptureSessionOutputContainer **container)
Definition NativeCameraLibrary.h:422
camera_status_t(const ACaptureRequest *request, uint32_t tag, ACameraMetadata_const_entry *entry) Function_ACaptureRequest_getConstEntry
Definition NativeCameraLibrary.h:192
camera_status_t(ANativeWindow *window, ACameraOutputTarget **output) Function_ACameraOutputTarget_create
Definition of the individual function pointers for capture requests.
Definition NativeCameraLibrary.h:188
camera_status_t ACameraCaptureSession_abortCaptures(ACameraCaptureSession *session)
Definition NativeCameraLibrary.h:718
camera_status_t ACaptureRequest_removeTarget(ACaptureRequest *request, const ACameraOutputTarget *output)
Definition NativeCameraLibrary.h:598
void(ACameraMetadata *metadata) Function_ACameraMetadata_free
Definition NativeCameraLibrary.h:183
Lock lock_
The library's lock.
Definition NativeCameraLibrary.h:371
camera_status_t(ACaptureRequest *request, const ACameraOutputTarget *output) Function_ACaptureRequest_removeTarget
Definition NativeCameraLibrary.h:191
camera_status_t ACaptureSessionOutput_create(ANativeWindow *anw, ACaptureSessionOutput **output)
Definition NativeCameraLibrary.h:438
void ACaptureSessionOutput_free(ACaptureSessionOutput *output)
Definition NativeCameraLibrary.h:446
camera_status_t ACameraManager_openCamera(ACameraManager *manager, const char *cameraId, ACameraDevice_StateCallbacks *callback, ACameraDevice **device)
Definition NativeCameraLibrary.h:534
unsigned int initializationCounter_
The counter for counting the usage of this library.
Definition NativeCameraLibrary.h:368
camera_status_t ACaptureRequest_getAllTags(const ACaptureRequest *request, int32_t *numTags, const uint32_t **tags)
Definition NativeCameraLibrary.h:614
void(ACameraIdList *cameraIdList) Function_ACameraManager_deleteCameraIdList
Definition NativeCameraLibrary.h:171
void ACameraOutputTarget_free(ACameraOutputTarget *output)
Definition NativeCameraLibrary.h:582
ACameraMetadata *(const ACameraMetadata *src) Function_ACameraMetadata_copy
Definition NativeCameraLibrary.h:182
bool isInitialized() const
Returns whether the library is initialized.
Definition NativeCameraLibrary.h:391
void(ACaptureSessionOutput *output) Function_ACaptureSessionOutput_free
Definition NativeCameraLibrary.h:160
camera_status_t ACameraManager_registerAvailabilityCallback(ACameraManager *manager, const ACameraManager_AvailabilityCallbacks *callback)
Definition NativeCameraLibrary.h:510
camera_status_t(const ACameraMetadata *metadata, int32_t *numEntries, const uint32_t **tags) Function_ACameraMetadata_getAllTags
Definition NativeCameraLibrary.h:181
camera_status_t(ACaptureRequest *request, uint32_t tag, uint32_t count, const uint8_t *data) Function_ACaptureRequest_setEntry_u8
Definition NativeCameraLibrary.h:194
camera_status_t(ACameraCaptureSession *session) Function_ACameraCaptureSession_abortCaptures
Definition NativeCameraLibrary.h:210
camera_status_t ACameraCaptureSession_stopRepeating(ACameraCaptureSession *session)
Definition NativeCameraLibrary.h:710
void ACameraMetadata_free(ACameraMetadata *metadata)
Definition NativeCameraLibrary.h:566
camera_status_t ACameraManager_unregisterAvailabilityCallback(ACameraManager *manager, const ACameraManager_AvailabilityCallbacks *callback)
Definition NativeCameraLibrary.h:518
__attribute__((annotate("dynamic_fn_ptr"))) Function_ACameraDevice_close *ACameraDevice_close_
All ACameraDevice function pointers.
camera_status_t(ACaptureSessionOutputContainer *container, const ACaptureSessionOutput *output) Function_ACaptureSessionOutputContainer_add
Definition NativeCameraLibrary.h:161
void(ACameraOutputTarget *output) Function_ACameraOutputTarget_free
Definition NativeCameraLibrary.h:189
camera_status_t ACameraCaptureSession_capture(ACameraCaptureSession *session, ACameraCaptureSession_captureCallbacks *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId)
Definition NativeCameraLibrary.h:694
camera_status_t(ACameraCaptureSession *session, ACameraCaptureSession_captureCallbacks *callbacks, int numRequests, ACaptureRequest **requests, int *captureSequenceId) Function_ACameraCaptureSession_setRepeatingRequest
Definition NativeCameraLibrary.h:208
ACameraMetadata * ACameraMetadata_copy(const ACameraMetadata *src)
Definition NativeCameraLibrary.h:558
camera_status_t ACameraDevice_createCaptureRequest(const ACameraDevice *device, ACameraDevice_request_template templateId, ACaptureRequest **request)
Definition NativeCameraLibrary.h:414
void(ACaptureSessionOutputContainer *container) Function_ACaptureSessionOutputContainer_free
Definition NativeCameraLibrary.h:158
void uninitialize(const unsigned int unused)
Uninitializes the library.
camera_status_t(ACameraManager *manager, const ACameraManager_AvailabilityCallbacks *callback) Function_ACameraManager_unregisterAvailabilityCallback
Definition NativeCameraLibrary.h:173
camera_status_t ACameraManager_getCameraIdList(ACameraManager *manager, ACameraIdList **cameraIdList)
Definition NativeCameraLibrary.h:494
camera_status_t(ACaptureSessionOutputContainer **container) Function_ACaptureSessionOutputContainer_create
Definition NativeCameraLibrary.h:157
camera_status_t ACaptureRequest_setEntry_float(ACaptureRequest *request, uint32_t tag, uint32_t count, const float *data)
Definition NativeCameraLibrary.h:638
camera_status_t(const ACameraDevice *device, ACameraDevice_request_template templateId, ACaptureRequest **request) Function_ACameraDevice_createCaptureRequest
Definition NativeCameraLibrary.h:156
const char * ACameraDevice_getId(const ACameraDevice *device)
Definition NativeCameraLibrary.h:406
camera_status_t ACaptureRequest_setEntry_i32(ACaptureRequest *request, uint32_t tag, uint32_t count, const int32_t *data)
Definition NativeCameraLibrary.h:630
~NativeCameraLibrary()
Destructs the library.
Definition NativeCameraLibrary.h:386
camera_status_t ACameraDevice_createCaptureSession(ACameraDevice *device, const ACaptureSessionOutputContainer *outputs, const ACameraCaptureSession_stateCallbacks *callbacks, ACameraCaptureSession **session)
Definition NativeCameraLibrary.h:470
camera_status_t ACaptureSessionOutputContainer_remove(ACaptureSessionOutputContainer *container, const ACaptureSessionOutput *output)
Definition NativeCameraLibrary.h:462
camera_status_t(ACaptureRequest *request, uint32_t tag, uint32_t count, const ACameraMetadata_rational *data) Function_ACaptureRequest_setEntry_rational
Definition NativeCameraLibrary.h:199
void ACaptureRequest_free(ACaptureRequest *request)
Definition NativeCameraLibrary.h:670
camera_status_t(ACameraCaptureSession *session) Function_ACameraCaptureSession_stopRepeating
Definition NativeCameraLibrary.h:209
void(ACameraManager *) Function_ACameraManager_delete
Definition NativeCameraLibrary.h:169
camera_status_t(ACameraDevice *device) Function_ACameraDevice_close
Definition of the individual function pointers of ACameraDevice.
Definition NativeCameraLibrary.h:154
void release()
Releases the library.
camera_status_t ACameraManager_getCameraCharacteristics(ACameraManager *manager, const char *cameraId, ACameraMetadata **characteristics)
Definition NativeCameraLibrary.h:526
camera_status_t(const ACameraMetadata *metadata, uint32_t tag, ACameraMetadata_const_entry *entry) Function_ACameraMetadata_getConstEntry
Definition of the individual function pointers of ACameraMetadata.
Definition NativeCameraLibrary.h:180
camera_status_t ACameraDevice_close(ACameraDevice *device)
The individual functions of ACameraDevice.
Definition NativeCameraLibrary.h:398
camera_status_t(ACaptureRequest *request, uint32_t tag, uint32_t count, const int64_t *data) Function_ACaptureRequest_setEntry_i64
Definition NativeCameraLibrary.h:197
ACameraManager *() Function_ACameraManager_create
Definition of the individual function pointers of ACameraManager.
Definition NativeCameraLibrary.h:168
void ACameraManager_deleteCameraIdList(ACameraIdList *cameraIdList)
Definition NativeCameraLibrary.h:502
camera_status_t(ACaptureRequest *request, uint32_t tag, uint32_t count, const int32_t *data) Function_ACaptureRequest_setEntry_i32
Definition NativeCameraLibrary.h:195
ACameraManager * ACameraManager_create()
The individual functions of ACameraManager.
Definition NativeCameraLibrary.h:478
camera_status_t ACaptureSessionOutputContainer_add(ACaptureSessionOutputContainer *container, const ACaptureSessionOutput *output)
Definition NativeCameraLibrary.h:454
camera_status_t ACaptureRequest_getConstEntry(const ACaptureRequest *request, uint32_t tag, ACameraMetadata_const_entry *entry)
Definition NativeCameraLibrary.h:606
This class implements a scoped lock object for recursive lock objects.
Definition Lock.h:135
This class wraps an unmanaged object (or reference) which needs to be released after usage.
Definition ScopedObject.h:28
This template class is the base class for all singleton objects.
Definition Singleton.h:71
The namespace covering the entire Ocean framework.
Definition Accessor.h:15