64 lines
1.7 KiB
Objective-C
64 lines
1.7 KiB
Objective-C
//
|
|
// SCManagedCaptureDeviceAutoExposureHandler.m
|
|
// Snapchat
|
|
//
|
|
// Created by Derek Peirce on 3/21/17.
|
|
// Copyright © 2017 Snapchat, Inc. All rights reserved.
|
|
//
|
|
|
|
#import "SCManagedCaptureDeviceAutoExposureHandler.h"
|
|
|
|
#import "AVCaptureDevice+ConfigurationLock.h"
|
|
#import "SCManagedCaptureDeviceExposureHandler.h"
|
|
|
|
#import <SCFoundation/SCTrace.h>
|
|
|
|
@import AVFoundation;
|
|
|
|
@implementation SCManagedCaptureDeviceAutoExposureHandler {
|
|
CGPoint _exposurePointOfInterest;
|
|
AVCaptureDevice *_device;
|
|
}
|
|
|
|
- (instancetype)initWithDevice:(AVCaptureDevice *)device pointOfInterest:(CGPoint)pointOfInterest
|
|
{
|
|
if (self = [super init]) {
|
|
_device = device;
|
|
_exposurePointOfInterest = pointOfInterest;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (CGPoint)getExposurePointOfInterest
|
|
{
|
|
return _exposurePointOfInterest;
|
|
}
|
|
|
|
- (void)setExposurePointOfInterest:(CGPoint)pointOfInterest fromUser:(BOOL)fromUser
|
|
{
|
|
SCTraceStart();
|
|
if (!CGPointEqualToPoint(pointOfInterest, _exposurePointOfInterest)) {
|
|
if ([_device isExposureModeSupported:AVCaptureExposureModeContinuousAutoExposure] &&
|
|
[_device isExposurePointOfInterestSupported]) {
|
|
[_device runTask:@"set exposure"
|
|
withLockedConfiguration:^() {
|
|
// Set exposure point before changing focus mode
|
|
// Be noticed that order does matter
|
|
_device.exposurePointOfInterest = pointOfInterest;
|
|
_device.exposureMode = AVCaptureExposureModeContinuousAutoExposure;
|
|
}];
|
|
}
|
|
_exposurePointOfInterest = pointOfInterest;
|
|
}
|
|
}
|
|
|
|
- (void)setStableExposure:(BOOL)stableExposure
|
|
{
|
|
}
|
|
|
|
- (void)setVisible:(BOOL)visible
|
|
{
|
|
}
|
|
|
|
@end
|