Fix support orientation changes in Camera Preview
Bug: webrtc:8532 Change-Id: I2a3cc6974af711f1be6a55a6a1e04e7189175bd3 Reviewed-on: https://webrtc-review.googlesource.com/23220 Reviewed-by: Anders Carlsson <andersc@webrtc.org> Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Commit-Queue: Anders Carlsson <andersc@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20702}
This commit is contained in:

committed by
Commit Bot

parent
6581f21f0e
commit
19d77c1bbb
@ -63,6 +63,10 @@
|
||||
[session addDelegate:self];
|
||||
}
|
||||
|
||||
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
|
||||
return UIInterfaceOrientationMaskAll;
|
||||
}
|
||||
|
||||
#pragma mark - ARDAppClientDelegate
|
||||
|
||||
- (void)appClient:(ARDAppClient *)client
|
||||
|
@ -53,6 +53,9 @@
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
</array>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
|
@ -23,6 +23,26 @@
|
||||
return [AVCaptureVideoPreviewLayer class];
|
||||
}
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)aRect {
|
||||
self = [super initWithFrame:aRect];
|
||||
if (self) {
|
||||
[self addOrientationObserver];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithCoder:(NSCoder*)aDecoder {
|
||||
self = [super initWithCoder:aDecoder];
|
||||
if (self) {
|
||||
[self addOrientationObserver];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc {
|
||||
[self removeOrientationObserver];
|
||||
}
|
||||
|
||||
- (void)setCaptureSession:(AVCaptureSession *)captureSession {
|
||||
if (_captureSession == captureSession) {
|
||||
return;
|
||||
@ -34,6 +54,10 @@
|
||||
[RTCDispatcher dispatchAsyncOnType:RTCDispatcherTypeCaptureSession
|
||||
block:^{
|
||||
previewLayer.session = captureSession;
|
||||
[RTCDispatcher dispatchAsyncOnType:RTCDispatcherTypeMain
|
||||
block:^{
|
||||
[self setCorrectVideoOrientation];
|
||||
}];
|
||||
}];
|
||||
}];
|
||||
}
|
||||
@ -45,6 +69,10 @@
|
||||
[self setCorrectVideoOrientation];
|
||||
}
|
||||
|
||||
-(void)orientationChanged:(NSNotification *)notification {
|
||||
[self setCorrectVideoOrientation];
|
||||
}
|
||||
|
||||
- (void)setCorrectVideoOrientation {
|
||||
// Get current device orientation.
|
||||
UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;
|
||||
@ -71,6 +99,19 @@
|
||||
|
||||
#pragma mark - Private
|
||||
|
||||
- (void)addOrientationObserver {
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(orientationChanged:)
|
||||
name:UIDeviceOrientationDidChangeNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
- (void)removeOrientationObserver {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self
|
||||
name:UIDeviceOrientationDidChangeNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
- (AVCaptureVideoPreviewLayer *)previewLayer {
|
||||
return (AVCaptureVideoPreviewLayer *)self.layer;
|
||||
}
|
||||
|
Reference in New Issue
Block a user