mirror of
https://github.com/status-im/react-native-camera.git
synced 2025-02-24 17:58:20 +00:00
97 lines
2.9 KiB
Objective-C
97 lines
2.9 KiB
Objective-C
//
|
|
// RNCameraUtils.m
|
|
// RCTCamera
|
|
//
|
|
// Created by Joao Guilherme Daros Fidelis on 19/01/18.
|
|
//
|
|
|
|
#import "RNCameraUtils.h"
|
|
|
|
@implementation RNCameraUtils
|
|
|
|
# pragma mark - Camera utilities
|
|
|
|
+ (AVCaptureDevice *)deviceWithMediaType:(AVMediaType)mediaType preferringPosition:(AVCaptureDevicePosition)position
|
|
{
|
|
NSArray *devices = [AVCaptureDevice devicesWithMediaType:mediaType];
|
|
AVCaptureDevice *captureDevice = [devices firstObject];
|
|
|
|
for (AVCaptureDevice *device in devices) {
|
|
if ([device position] == position) {
|
|
captureDevice = device;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return captureDevice;
|
|
}
|
|
|
|
# pragma mark - Enum conversion
|
|
|
|
+ (AVCaptureVideoOrientation)videoOrientationForInterfaceOrientation:(UIInterfaceOrientation)orientation
|
|
{
|
|
switch (orientation) {
|
|
case UIInterfaceOrientationPortrait:
|
|
return AVCaptureVideoOrientationPortrait;
|
|
case UIInterfaceOrientationPortraitUpsideDown:
|
|
return AVCaptureVideoOrientationPortraitUpsideDown;
|
|
case UIInterfaceOrientationLandscapeRight:
|
|
return AVCaptureVideoOrientationLandscapeRight;
|
|
case UIInterfaceOrientationLandscapeLeft:
|
|
return AVCaptureVideoOrientationLandscapeLeft;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
+ (AVCaptureVideoOrientation)videoOrientationForDeviceOrientation:(UIDeviceOrientation)orientation
|
|
{
|
|
switch (orientation) {
|
|
case UIDeviceOrientationPortrait:
|
|
return AVCaptureVideoOrientationPortrait;
|
|
case UIDeviceOrientationPortraitUpsideDown:
|
|
return AVCaptureVideoOrientationPortraitUpsideDown;
|
|
case UIDeviceOrientationLandscapeLeft:
|
|
return AVCaptureVideoOrientationLandscapeRight;
|
|
case UIDeviceOrientationLandscapeRight:
|
|
return AVCaptureVideoOrientationLandscapeLeft;
|
|
default:
|
|
return AVCaptureVideoOrientationPortrait;
|
|
}
|
|
}
|
|
|
|
+ (float)temperatureForWhiteBalance:(RNCameraWhiteBalance)whiteBalance
|
|
{
|
|
switch (whiteBalance) {
|
|
case RNCameraWhiteBalanceSunny: default:
|
|
return 5200;
|
|
case RNCameraWhiteBalanceCloudy:
|
|
return 6000;
|
|
case RNCameraWhiteBalanceShadow:
|
|
return 7000;
|
|
case RNCameraWhiteBalanceIncandescent:
|
|
return 3000;
|
|
case RNCameraWhiteBalanceFluorescent:
|
|
return 4200;
|
|
}
|
|
}
|
|
|
|
+ (NSString *)captureSessionPresetForVideoResolution:(RNCameraVideoResolution)resolution
|
|
{
|
|
switch (resolution) {
|
|
case RNCameraVideo2160p:
|
|
return AVCaptureSessionPreset3840x2160;
|
|
case RNCameraVideo1080p:
|
|
return AVCaptureSessionPreset1920x1080;
|
|
case RNCameraVideo720p:
|
|
return AVCaptureSessionPreset1280x720;
|
|
case RNCameraVideo4x3:
|
|
return AVCaptureSessionPreset640x480;
|
|
default:
|
|
return AVCaptureSessionPresetHigh;
|
|
}
|
|
}
|
|
|
|
@end
|
|
|