Index: webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m |
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m b/webrtc/sdk/objc/Framework/Classes/RTCCameraPreviewView.m |
index 659973ff1804c280306221ff88a706dc9252f4b1..5a60ba3e896ddd0585ab7746c261537faa46a9c6 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 <AVFoundation/AVFoundation.h> |
+#import <UIKit/UIKit.h> |
#import "RTCDispatcher+Private.h" |
@@ -34,6 +35,37 @@ - (void)setCaptureSession:(AVCaptureSession *)captureSession { |
}]; |
} |
+- (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 { |