Address tkchin's comments on RTCCameraVideoCapturer.
BUG=webrtc:7177
Review-Url: https://codereview.webrtc.org/2800853006
Cr-Commit-Position: refs/heads/master@{#17986}
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCCameraVideoCapturer.m b/webrtc/sdk/objc/Framework/Classes/RTCCameraVideoCapturer.m
index 16ddc13..9a0b40f 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCCameraVideoCapturer.m
+++ b/webrtc/sdk/objc/Framework/Classes/RTCCameraVideoCapturer.m
@@ -361,6 +361,8 @@
#pragma mark - Private, called inside capture queue
- (void)updateDeviceCaptureFormat:(AVCaptureDeviceFormat *)format fps:(int)fps {
+ NSAssert([RTCDispatcher isOnQueueForType:RTCDispatcherTypeCaptureSession],
+ @"updateDeviceCaptureFormat must be called on the capture queue.");
@try {
_currentDevice.activeFormat = format;
_currentDevice.activeVideoMinFrameDuration = CMTimeMake(1, fps);
@@ -371,6 +373,8 @@
}
- (void)reconfigureCaptureSessionInput {
+ NSAssert([RTCDispatcher isOnQueueForType:RTCDispatcherTypeCaptureSession],
+ @"reconfigureCaptureSessionInput must be called on the capture queue.");
NSError *error = nil;
AVCaptureDeviceInput *input =
[AVCaptureDeviceInput deviceInputWithDevice:_currentDevice error:&error];
@@ -391,6 +395,8 @@
}
- (void)updateOrientation {
+ NSAssert([RTCDispatcher isOnQueueForType:RTCDispatcherTypeCaptureSession],
+ @"updateOrientation must be called on the capture queue.");
#if TARGET_OS_IPHONE
BOOL usingFrontCamera = _currentDevice.position == AVCaptureDevicePositionFront;
switch ([UIDevice currentDevice].orientation) {
diff --git a/webrtc/sdk/objc/Framework/Classes/RTCDispatcher.m b/webrtc/sdk/objc/Framework/Classes/RTCDispatcher.m
index 94176ac..530e51a 100644
--- a/webrtc/sdk/objc/Framework/Classes/RTCDispatcher.m
+++ b/webrtc/sdk/objc/Framework/Classes/RTCDispatcher.m
@@ -33,6 +33,17 @@
dispatch_async(queue, block);
}
++ (BOOL)isOnQueueForType:(RTCDispatcherQueueType)dispatchType {
+ dispatch_queue_t targetQueue = [self dispatchQueueForType:dispatchType];
+ const char* targetLabel = dispatch_queue_get_label(targetQueue);
+ const char* currentLabel = dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL);
+
+ NSAssert(strlen(targetLabel) > 0, @"Label is required for the target queue.");
+ NSAssert(strlen(currentLabel) > 0, @"Label is required for the current queue.");
+
+ return strcmp(targetLabel, currentLabel) == 0;
+}
+
#pragma mark - Private
+ (dispatch_queue_t)dispatchQueueForType:(RTCDispatcherQueueType)dispatchType {