8#ifndef META_OCEAN_MEDIA_ANDROID_A_LIVE_VIDEO_H
9#define META_OCEAN_MEDIA_ANDROID_A_LIVE_VIDEO_H
33#ifdef OCEAN_MEDIA_ANDROID_NATIVECAMERALIBRARY_AVAILABLE
71 inline const std::string& id()
const;
77 inline const std::string& name()
const;
83 inline acamera_metadata_enum_android_lens_facing_t lensFacing()
const;
95 inline bool isValid()
const;
113 inline Device(
const std::string&
id,
const std::string& name_,
const acamera_metadata_enum_android_lens_facing_t lensFacing,
MetadataMap&& metadataMap =
MetadataMap());
124 acamera_metadata_enum_android_lens_facing_t lensFacing_ = acamera_metadata_enum_acamera_lens_facing(-1);
142 AIMAGE_FORMAT_YCBCR_P010 = 54,
199 float iso(
float* minISO =
nullptr,
float* maxISO =
nullptr,
ControlMode* isoMode =
nullptr)
const override;
274 explicit ALiveVideo(
const std::string& url,
const std::string&
id);
387 void onCaptureStarted(ACameraCaptureSession* session,
const ACaptureRequest* request, int64_t timestamp);
395 void onCaptureCompleted(ACameraCaptureSession* session, ACaptureRequest* request,
const ACameraMetadata* result);
425 static std::string
cameraIdForMedium(ACameraIdList* cameraIdList,
const std::string& url,
const std::string&
id);
435 static bool cameraExposureDurationRange(ACameraManager* cameraManager,
const std::string& cameraId,
double& minExposureDuration,
double& maxExposureDuration);
445 static bool cameraISORange(ACameraManager* cameraManager,
const std::string& cameraId,
float& minISO,
float& maxISO);
454 static bool cameraMinFocus(ACameraManager* cameraManager,
const std::string& cameraId,
float& minFocusPosition);
463 static bool cameraSensorPysicalSize(ACameraManager* cameraManager,
const std::string& cameraId,
float& cameraSensorPhysicalSizeX);
472 static bool horizontalFieldOfView(
const float cameraSensorPhysicalSizeX,
const ACameraMetadata* cameraMetadata,
float& fovX);
570 static void onCaptureFailedStatic(
void* context, ACameraCaptureSession* session, ACaptureRequest* request, ACameraCaptureFailure* failure);
596 static void onCaptureStartedStatic(
void *context, ACameraCaptureSession *session,
const ACaptureRequest *request, int64_t timestamp);
605 static void onCaptureCompletedStatic(
void* context, ACameraCaptureSession* session, ACaptureRequest* request,
const ACameraMetadata* result);
620 ACameraDevice* cameraDevice_ =
nullptr;
623 AImageReader* imageReader_ =
nullptr;
626 ANativeWindow* nativeWindow_ =
nullptr;
635 ACameraCaptureSession* captureSession_ =
nullptr;
638 ACaptureRequest* captureRequest_ =
nullptr;
641 ACameraOutputTarget* outputTarget_ =
nullptr;
644 float cameraSensorPhysicalSizeX_ = -1.0f;
653 double exposureDuration_ = -1.0;
656 double exposureDurationMin_ = -1.0;
659 double exposureDurationMax_ = -1.0;
668 float isoMin_ = -1.0f;
671 float isoMax_ = -1.0f;
677 float focusPosition_ = -1.0f;
680 float focusPositionMin_ = -1.0f;
698 lensFacing_(lensFacing),
699 metadataMap_(std::move(metadataMap))
701 ocean_assert(!
id_.empty());
702 ocean_assert(!
name_.empty());
758 friend class ALiveVideoManager;
809 int createCamera(
ALiveVideo*
object,
const std::string& url,
const unsigned int preferredWidth,
const unsigned int preferredHeight,
const float preferredFrequency);
943 int mediumCameraId = -1;
949 bool mediumIsStarted =
false;
This class implements Ocean's image class.
Definition Frame.h:1808
Definition of a frame type composed by the frame dimension, pixel format and pixel origin.
Definition Frame.h:30
PixelFormat
Definition of all pixel formats available in the Ocean framework.
Definition Frame.h:183
This class implements a recursive lock object.
Definition Lock.h:31
This template class is the base class for all singleton objects.
Definition Singleton.h:71
This class implements a timestamp.
Definition Timestamp.h:36
std::shared_ptr< AnyCamera > SharedAnyCamera
Definition of a shared pointer holding an AnyCamera object with Scalar precision.
Definition AnyCamera.h:60
The namespace covering the entire Ocean framework.
Definition Accessor.h:15