8#ifndef META_OCEAN_MEDIA_ANDROID_NATIVE_CAMERA_LIBRARY_H
9#define META_OCEAN_MEDIA_ANDROID_NATIVE_CAMERA_LIBRARY_H
17#if defined(__ANDROID_API__) && __ANDROID_API__ >= 24
19#ifndef OCEAN_MEDIA_ANDROID_NATIVECAMERALIBRARY_AVAILABLE
20 #define OCEAN_MEDIA_ANDROID_NATIVECAMERALIBRARY_AVAILABLE
23#include <camera/NdkCaptureRequest.h>
25#include <camera/NdkCameraCaptureSession.h>
26#include <camera/NdkCameraDevice.h>
27#include <camera/NdkCameraManager.h>
163 using Function_ACameraDevice_createCaptureSession = camera_status_t (ACameraDevice* device,
const ACaptureSessionOutputContainer* outputs,
const ACameraCaptureSession_stateCallbacks* callbacks, ACameraCaptureSession** session);
207 using Function_ACameraCaptureSession_capture = camera_status_t (ACameraCaptureSession* session, ACameraCaptureSession_captureCallbacks* callbacks,
int numRequests, ACaptureRequest** requests,
int* captureSequenceId);
225 inline bool isInitialized()
const;
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);
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);
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);
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);
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);
314 void* libraryHandle_ =
nullptr;
368 unsigned int initializationCounter_ = 0u;
This class implements a recursive lock object.
Definition Lock.h:31
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
static NativeCameraLibrary & get()
Returns a reference to the unique object.
Definition Singleton.h:115
The namespace covering the entire Ocean framework.
Definition Accessor.h:15