From eccf87df041ac2d3291b8935b9f9ed7cec3e880f Mon Sep 17 00:00:00 2001 From: Steve Mokris Date: Tue, 11 Sep 2018 13:49:04 -0400 Subject: [PATCH] If recording stops but the user didn't request that it stop, try to resume recording. Don't display an error dialog when the 'maximum allowable length' has been reached, since we can now recover from that. --- AVRecorder/AVRecorderDocument.m | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/AVRecorder/AVRecorderDocument.m b/AVRecorder/AVRecorderDocument.m index 33f6c08..8a94e39 100644 --- a/AVRecorder/AVRecorderDocument.m +++ b/AVRecorder/AVRecorderDocument.m @@ -13,6 +13,7 @@ @interface AVRecorderDocument () tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec] stringByExpandingTildeInPath]; [[self movieFileOutput] startRecordingToOutputFileURL:[NSURL fileURLWithPath:path] recordingDelegate:self]; + _userRequestedStop = NO; } else { [[self movieFileOutput] stopRecording]; + _userRequestedStop = YES; } } @@ -569,19 +572,18 @@ - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didStartRecordingToOu - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didPauseRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections { - NSLog(@"Did pause recording to %@", [fileURL description]); } - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didResumeRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections { - NSLog(@"Did resume recording to %@", [fileURL description]); } -- (void)captureOutput:(AVCaptureFileOutput *)captureOutput willFinishRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections dueToError:(NSError *)error +- (void)captureOutput:(AVCaptureFileOutput *)captureOutput willFinishRecordingToOutputFileAtURL:(NSURL *)fileURL fromConnections:(NSArray *)connections error:(NSError *)error { - dispatch_async(dispatch_get_main_queue(), ^(void) { - [self presentError:error]; - }); + if (error && ![error.localizedFailureReason containsString:@"maximum allowable length"]) + dispatch_async(dispatch_get_main_queue(), ^(void) { + [self presentError:error]; + }); } - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)recordError @@ -595,6 +597,12 @@ - (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToO [self presentError:recordError]; }); } + + if (!_userRequestedStop) + { + NSLog(@"Warning: Recording unexpectedly stopped. Resuming."); + [self setRecording:YES]; + } } - (BOOL)captureOutputShouldProvideSampleAccurateRecordingStart:(AVCaptureOutput *)captureOutput