Reland "Add completion callbacks to RTCCameraVideoCapturer start/stop operations"
This is a reland of e23a9e8f418ad758bc1be5b53184b69ad1dab1c2 Original change's description: > Add completion callbacks to RTCCameraVideoCapturer start/stop operations > > Bug: webrtc:8696 > Change-Id: I327ce11632fd0c71e28411d260094e87ede6b6b6 > Reviewed-on: https://webrtc-review.googlesource.com/37021 > Reviewed-by: Kári Helgason <kthelgason@webrtc.org> > Reviewed-by: Anders Carlsson <andersc@webrtc.org> > Commit-Queue: Anders Carlsson <andersc@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#21546} Bug: webrtc:8696 Change-Id: I48b4d140d870c9924ef0d76f4d282ff13951e083 Reviewed-on: https://webrtc-review.googlesource.com/38800 Reviewed-by: Kári Helgason <kthelgason@webrtc.org> Commit-Queue: Anders Carlsson <andersc@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21592}
This commit is contained in:

committed by
Commit Bot

parent
75baa498fa
commit
24e7a593d5
@ -116,6 +116,17 @@ const int64_t kNanosecondsPerSecond = 1000000000;
|
|||||||
- (void)startCaptureWithDevice:(AVCaptureDevice *)device
|
- (void)startCaptureWithDevice:(AVCaptureDevice *)device
|
||||||
format:(AVCaptureDeviceFormat *)format
|
format:(AVCaptureDeviceFormat *)format
|
||||||
fps:(NSInteger)fps {
|
fps:(NSInteger)fps {
|
||||||
|
[self startCaptureWithDevice:device format:format fps:fps completionHandler:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)stopCapture {
|
||||||
|
[self stopCaptureWithCompletionHandler:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)startCaptureWithDevice:(AVCaptureDevice *)device
|
||||||
|
format:(AVCaptureDeviceFormat *)format
|
||||||
|
fps:(NSInteger)fps
|
||||||
|
completionHandler:(nullable void (^)(NSError *))completionHandler {
|
||||||
_willBeRunning = YES;
|
_willBeRunning = YES;
|
||||||
[RTCDispatcher
|
[RTCDispatcher
|
||||||
dispatchAsyncOnType:RTCDispatcherTypeCaptureSession
|
dispatchAsyncOnType:RTCDispatcherTypeCaptureSession
|
||||||
@ -132,6 +143,9 @@ const int64_t kNanosecondsPerSecond = 1000000000;
|
|||||||
if (![_currentDevice lockForConfiguration:&error]) {
|
if (![_currentDevice lockForConfiguration:&error]) {
|
||||||
RTCLogError(
|
RTCLogError(
|
||||||
@"Failed to lock device %@. Error: %@", _currentDevice, error.userInfo);
|
@"Failed to lock device %@. Error: %@", _currentDevice, error.userInfo);
|
||||||
|
if (completionHandler) {
|
||||||
|
completionHandler(error);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
[self reconfigureCaptureSessionInput];
|
[self reconfigureCaptureSessionInput];
|
||||||
@ -141,10 +155,13 @@ const int64_t kNanosecondsPerSecond = 1000000000;
|
|||||||
[_captureSession startRunning];
|
[_captureSession startRunning];
|
||||||
[_currentDevice unlockForConfiguration];
|
[_currentDevice unlockForConfiguration];
|
||||||
_isRunning = YES;
|
_isRunning = YES;
|
||||||
|
if (completionHandler) {
|
||||||
|
completionHandler(nil);
|
||||||
|
}
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)stopCapture {
|
- (void)stopCaptureWithCompletionHandler:(nullable void (^)())completionHandler {
|
||||||
_willBeRunning = NO;
|
_willBeRunning = NO;
|
||||||
[RTCDispatcher
|
[RTCDispatcher
|
||||||
dispatchAsyncOnType:RTCDispatcherTypeCaptureSession
|
dispatchAsyncOnType:RTCDispatcherTypeCaptureSession
|
||||||
@ -160,6 +177,9 @@ const int64_t kNanosecondsPerSecond = 1000000000;
|
|||||||
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
|
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
|
||||||
#endif
|
#endif
|
||||||
_isRunning = NO;
|
_isRunning = NO;
|
||||||
|
if (completionHandler) {
|
||||||
|
completionHandler();
|
||||||
|
}
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,10 +32,18 @@ RTC_EXPORT
|
|||||||
// Returns the most efficient supported output pixel format for this capturer.
|
// Returns the most efficient supported output pixel format for this capturer.
|
||||||
- (FourCharCode)preferredOutputPixelFormat;
|
- (FourCharCode)preferredOutputPixelFormat;
|
||||||
|
|
||||||
// Starts and stops the capture session asynchronously.
|
// Starts the capture session asynchronously and notifies callback on completion.
|
||||||
// The device will capture video in the format given in the `format` parameter. If the pixel format
|
// The device will capture video in the format given in the `format` parameter. If the pixel format
|
||||||
// in `format` is supported by the WebRTC pipeline, the same pixel format will be used for the
|
// in `format` is supported by the WebRTC pipeline, the same pixel format will be used for the
|
||||||
// output. Otherwise, the format returned by `preferredOutputPixelFormat` will be used.
|
// output. Otherwise, the format returned by `preferredOutputPixelFormat` will be used.
|
||||||
|
- (void)startCaptureWithDevice:(AVCaptureDevice *)device
|
||||||
|
format:(AVCaptureDeviceFormat *)format
|
||||||
|
fps:(NSInteger)fps
|
||||||
|
completionHandler:(nullable void (^)(NSError *))completionHandler;
|
||||||
|
// Stops the capture session asynchronously and notifies callback on completion.
|
||||||
|
- (void)stopCaptureWithCompletionHandler:(nullable void (^)())completionHandler;
|
||||||
|
|
||||||
|
// Starts the capture session asynchronously.
|
||||||
- (void)startCaptureWithDevice:(AVCaptureDevice *)device
|
- (void)startCaptureWithDevice:(AVCaptureDevice *)device
|
||||||
format:(AVCaptureDeviceFormat *)format
|
format:(AVCaptureDeviceFormat *)format
|
||||||
fps:(NSInteger)fps;
|
fps:(NSInteger)fps;
|
||||||
|
Reference in New Issue
Block a user