diff --git a/AUTHORS b/AUTHORS index e13033eb72..627eab7aca 100644 --- a/AUTHORS +++ b/AUTHORS @@ -2,6 +2,7 @@ # Name or Organization Adam Fedor +Akshay Shah Alexander Brauckmann Alexandre Gouaillard Andrew MacDonald diff --git a/webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m b/webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m index 659973ff18..5a60ba3e89 100644 --- a/webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m +++ b/webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m @@ -11,6 +11,7 @@ #import "WebRTC/RTCCameraPreviewView.h" #import +#import #import "RTCDispatcher+Private.h" @@ -34,6 +35,37 @@ }]; } +- (void)layoutSubviews { + [super layoutSubviews]; + + // Update the video orientation based on the device orientation. + [self setCorrectVideoOrientation]; +} + +- (void)setCorrectVideoOrientation { + // Get current device orientation. + UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation; + AVCaptureVideoPreviewLayer *previewLayer = [self previewLayer]; + + // First check if we are allowed to set the video orientation. + if (previewLayer.connection.isVideoOrientationSupported) { + // Set the video orientation based on device orientation. + if (deviceOrientation == UIInterfaceOrientationPortraitUpsideDown) { + previewLayer.connection.videoOrientation = + AVCaptureVideoOrientationPortraitUpsideDown; + } else if (deviceOrientation == UIInterfaceOrientationLandscapeRight) { + previewLayer.connection.videoOrientation = + AVCaptureVideoOrientationLandscapeRight; + } else if (deviceOrientation == UIInterfaceOrientationLandscapeLeft) { + previewLayer.connection.videoOrientation = + AVCaptureVideoOrientationLandscapeLeft; + } else { + previewLayer.connection.videoOrientation = + AVCaptureVideoOrientationPortrait; + } + } +} + #pragma mark - Private - (AVCaptureVideoPreviewLayer *)previewLayer {