Цель c как сбросить экспозицию AVCaptureDevice до значений по умолчанию - PullRequest
0 голосов
/ 26 мая 2020

Я устанавливаю пользовательскую экспозицию / ISO с камерой, используя:

AVCaptureDevice* cd = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
[cd setExposureModeCustomWithDuration:cmtime ISO:iso completionHandler:nil];

Это отлично работает. Однако на время сеанса приложения эти пользовательские настройки сохраняются. Есть ли способ сбросить настройки экспозиции / ISO устройства захвата? Я пробовал что-то вроде:

if([captureDevice lockForConfiguration:&error]){
    [captureDevice setExposureModeCustomWithDuration:captureDevice.activeFormat.minExposureDuration ISO:captureDevice.activeFormat.minISO completionHandler:nil];
    [captureDevice unlockForConfiguration];
}

Но это не сбрасывает камеру до настроек по умолчанию.

1 Ответ

0 голосов
/ 26 мая 2020

Вы можете сохранить режим экспозиции перед его настройкой

AVCaptureDevice* cd = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

self.defaultExposureMode = cd.exposureMode; // store in some property

if([cd lockForConfiguration:&error]){
    [cd setExposureModeCustomWithDuration:cmtime ISO:iso completionHandler:nil];
    [cd unlockForConfiguration];
}

, а затем восстановить его при необходимости

AVCaptureDevice* cd = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if([cd lockForConfiguration:&error]){
    cd.exposureMode = self.defaultExposureMode;
    [cd unlockForConfiguration];
}
...