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);
143 AIMAGE_FORMAT_YCBCR_P010 = 54,
200 float iso(
float* minISO =
nullptr,
float* maxISO =
nullptr,
ControlMode* isoMode =
nullptr)
const override;
287 explicit ALiveVideo(
const std::string& url,
const std::string&
id);
405 void onCaptureStarted(ACameraCaptureSession* session,
const ACaptureRequest* request, int64_t timestamp);
413 void onCaptureCompleted(ACameraCaptureSession* session, ACaptureRequest* request,
const ACameraMetadata* result);
443 static std::string
cameraIdForMedium(ACameraIdList* cameraIdList,
const std::string& url,
const std::string&
id);
453 static bool cameraExposureDurationRange(ACameraManager* cameraManager,
const std::string& cameraId,
double& minExposureDuration,
double& maxExposureDuration);
463 static bool cameraISORange(ACameraManager* cameraManager,
const std::string& cameraId,
float& minISO,
float& maxISO);
482 static bool cameraSensorPysicalSize(ACameraManager* cameraManager,
const std::string& cameraId,
float& cameraSensorPhysicalSizeX);
491 static bool horizontalFieldOfView(
const float cameraSensorPhysicalSizeX,
const ACameraMetadata* cameraMetadata,
float& fovX);
590 static void onCaptureFailedStatic(
void* context, ACameraCaptureSession* session, ACaptureRequest* request, ACameraCaptureFailure* failure);
616 static void onCaptureStartedStatic(
void *context, ACameraCaptureSession *session,
const ACaptureRequest *request, int64_t timestamp);
625 static void onCaptureCompletedStatic(
void* context, ACameraCaptureSession* session, ACaptureRequest* request,
const ACameraMetadata* result);
640 ACameraDevice* cameraDevice_ =
nullptr;
643 AImageReader* imageReader_ =
nullptr;
646 ANativeWindow* nativeWindow_ =
nullptr;
655 ACameraCaptureSession* captureSession_ =
nullptr;
658 ACaptureRequest* captureRequest_ =
nullptr;
661 ACameraOutputTarget* outputTarget_ =
nullptr;
664 float cameraSensorPhysicalSizeX_ = -1.0f;
676 double exposureDuration_ = -1.0;
679 double exposureDurationMin_ = -1.0;
682 double exposureDurationMax_ = -1.0;
691 float isoMin_ = -1.0f;
694 float isoMax_ = -1.0f;
700 float focusPosition_ = -1.0f;
703 float focusPositionMin_ = -1.0f;
706 bool videoStabilizationEnabled_ =
false;
721 std::atomic<bool> sessionCurrentlyClosing_ =
false;
727 lensFacing_(lensFacing),
728 metadataMap_(std::move(metadataMap))
730 ocean_assert(!
id_.empty());
731 ocean_assert(!
name_.empty());
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 is a helper class allowing to converter timestamps defined in a specific time domain to un...
Definition Timestamp.h:54
This class implements a timestamp.
Definition Timestamp.h:47
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