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
@ -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