Add option to set max exposure time

This commit is contained in:
Georg Hagen
2025-04-13 12:22:11 +02:00
parent 624526944e
commit 36f2cc34b4
3 changed files with 11 additions and 0 deletions

View File

@@ -226,6 +226,8 @@ namespace OpenVulkano::AR
*/
virtual void SetRenderer(IRenderer* renderer) = 0;
virtual void SetMaxExposureTime(int fraction = 61) {};
virtual void LockExposureTime(bool locked) {};
virtual void LockWhiteBalance(bool locked) {};

View File

@@ -55,6 +55,7 @@ namespace OpenVulkano::AR::ArKit
void SetRenderer(IRenderer* renderer) override;
void SetMaxExposureTime(int fraction = 61) override;
void LockExposureTime(bool locked) override;
void LockWhiteBalance(bool locked) override;
void SetFlashlightOn(bool on) override;

View File

@@ -236,6 +236,14 @@ namespace OpenVulkano::AR::ArKit
[dev setExposureMode: locked ? AVCaptureExposureModeLocked : AVCaptureExposureModeContinuousAutoExposure];
}
void ArSessionArKitInternal::SetMaxExposureTime(int fraction)
{
AVCaptureDevice* dev = [ARWorldTrackingConfiguration configurableCaptureDeviceForPrimaryCamera];
if (!m_lockedConfiguration) m_lockedConfiguration |=[dev lockForConfiguration:nil];
[dev setActiveMaxExposureDuration:CMTimeMake(1, fraction)];
Logger::AR->info("Set max exposure time to: 1/{}s", fraction);
}
void ArSessionArKitInternal::LockWhiteBalance(bool locked)
{
AVCaptureDevice* dev = [ARWorldTrackingConfiguration configurableCaptureDeviceForPrimaryCamera];