You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.7 KiB
63 lines
1.7 KiB
//
|
|
// 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
|