8#ifndef META_OCEAN_MEDIA_ANDROID_A_LIVE_VIDEO_H
9#define META_OCEAN_MEDIA_ANDROID_A_LIVE_VIDEO_H
34#ifdef OCEAN_MEDIA_ANDROID_NATIVECAMERALIBRARY_AVAILABLE
45 friend class ALiveVideoManager;
72 inline const std::string& id()
const;
78 inline const std::string& name()
const;
84 inline acamera_metadata_enum_android_lens_facing_t lensFacing()
const;
96 inline bool isValid()
const;
114 inline Device(
const std::string&
id,
const std::string& name_,
const acamera_metadata_enum_android_lens_facing_t lensFacing,
MetadataMap&& metadataMap =
MetadataMap());
125 acamera_metadata_enum_android_lens_facing_t lensFacing_ = acamera_metadata_enum_acamera_lens_facing(-1);
146 AIMAGE_FORMAT_YCBCR_P010 = 54,
203 float iso(
float* minISO =
nullptr,
float* maxISO =
nullptr,
ControlMode* isoMode =
nullptr)
const override;
296 explicit ALiveVideo(
const std::string& url,
const std::string&
id);
414 void onCaptureStarted(ACameraCaptureSession* session,
const ACaptureRequest* request, int64_t timestamp);
422 void onCaptureCompleted(ACameraCaptureSession* session, ACaptureRequest* request,
const ACameraMetadata* result);
452 static std::string
cameraIdForMedium(ACameraIdList* cameraIdList,
const std::string& url,
const std::string&
id);
462 static bool cameraExposureDurationRange(ACameraManager* cameraManager,
const std::string& cameraId,
double& minExposureDuration,
double& maxExposureDuration);
472 static bool cameraISORange(ACameraManager* cameraManager,
const std::string& cameraId,
float& minISO,
float& maxISO);
491 static bool cameraSensorPhysicalSize(ACameraManager* cameraManager,
const std::string& cameraId,
float& cameraSensorPhysicalSizeX);
500 static bool horizontalFieldOfView(
const float cameraSensorPhysicalSizeX,
const ACameraMetadata* cameraMetadata,
float& fovX);
599 static void onCaptureFailedStatic(
void* context, ACameraCaptureSession* session, ACaptureRequest* request, ACameraCaptureFailure* failure);
625 static void onCaptureStartedStatic(
void *context, ACameraCaptureSession *session,
const ACaptureRequest *request, int64_t timestamp);
634 static void onCaptureCompletedStatic(
void* context, ACameraCaptureSession* session, ACaptureRequest* request,
const ACameraMetadata* result);
649 ACameraDevice* cameraDevice_ =
nullptr;
652 AImageReader* imageReader_ =
nullptr;
655 ANativeWindow* nativeWindow_ =
nullptr;
664 ACameraCaptureSession* captureSession_ =
nullptr;
667 ACaptureRequest* captureRequest_ =
nullptr;
670 ACameraOutputTarget* outputTarget_ =
nullptr;
673 float cameraSensorPhysicalSizeX_ = -1.0f;
685 double exposureDuration_ = -1.0;
688 double exposureDurationMin_ = -1.0;
691 double exposureDurationMax_ = -1.0;
700 float isoMin_ = -1.0f;
703 float isoMax_ = -1.0f;
709 float focusPosition_ = -1.0f;
712 float focusPositionMin_ = -1.0f;
715 bool videoStabilizationEnabled_ =
false;
721 bool waitingForFirstFrame_ =
true;
736 std::atomic<bool> sessionCurrentlyClosing_ =
false;
742 lensFacing_(lensFacing),
743 metadataMap_(std::move(metadataMap))
745 ocean_assert(!
id_.empty());
746 ocean_assert(!
name_.empty());
This class implements Ocean's image class.
Definition Frame.h:1879
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 is a helper class allowing to converter timestamps defined in a specific time domain to un...
Definition Timestamp.h:312
This class implements a timestamp.
Definition Timestamp.h:63
std::shared_ptr< AnyCamera > SharedAnyCamera
Definition of a shared pointer holding an AnyCamera object with Scalar precision.
Definition AnyCamera.h:61
The namespace covering the entire Ocean framework.
Definition Accessor.h:15