summaryrefslogtreecommitdiffstats
path: root/media/video
diff options
context:
space:
mode:
authorwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-24 21:59:27 +0000
committerwjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-24 21:59:27 +0000
commit2677bed8d4cd07758392d9634e40352f25d248ac (patch)
treeaa1fce40f2b213630e83c5fffc713a28966a73b9 /media/video
parent01a3b4e0fdea27a12afa87f31e49ece893a5eb7b (diff)
downloadchromium_src-2677bed8d4cd07758392d9634e40352f25d248ac.zip
chromium_src-2677bed8d4cd07758392d9634e40352f25d248ac.tar.gz
chromium_src-2677bed8d4cd07758392d9634e40352f25d248ac.tar.bz2
use manual release for QTCaptureDecompressedVideoOutput.
Need to make sure when setCaptureDevice:nil returns, QTCaptureDecompressedVideoOutput won't call captureOutput of VideoCaptureDeviceQTKit. BUG=139004 Review URL: https://chromiumcodereview.appspot.com/10875038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@153307 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/video')
-rw-r--r--media/video/capture/mac/video_capture_device_qtkit_mac.h2
-rw-r--r--media/video/capture/mac/video_capture_device_qtkit_mac.mm15
2 files changed, 11 insertions, 6 deletions
diff --git a/media/video/capture/mac/video_capture_device_qtkit_mac.h b/media/video/capture/mac/video_capture_device_qtkit_mac.h
index 61d7900..526c855 100644
--- a/media/video/capture/mac/video_capture_device_qtkit_mac.h
+++ b/media/video/capture/mac/video_capture_device_qtkit_mac.h
@@ -14,6 +14,7 @@ namespace media {
class VideoCaptureDeviceMac;
}
+@class QTCaptureDecompressedVideoOutput;
@class QTCaptureDeviceInput;
@class QTCaptureSession;
@@ -29,6 +30,7 @@ namespace media {
// QTKit variables.
QTCaptureSession *captureSession_;
QTCaptureDeviceInput *captureDeviceInput_;
+ QTCaptureDecompressedVideoOutput *captureDecompressedOutput_;
}
// Returns a dictionary of capture devices with friendly name and unique id.
diff --git a/media/video/capture/mac/video_capture_device_qtkit_mac.mm b/media/video/capture/mac/video_capture_device_qtkit_mac.mm
index c70e84b..a7e2c58 100644
--- a/media/video/capture/mac/video_capture_device_qtkit_mac.mm
+++ b/media/video/capture/mac/video_capture_device_qtkit_mac.mm
@@ -42,6 +42,7 @@
- (void)dealloc {
[captureSession_ release];
[captureDeviceInput_ release];
+ [captureDecompressedOutput_ release];
[super dealloc];
}
@@ -72,10 +73,10 @@
captureDeviceInput_ = [[QTCaptureDeviceInput alloc] initWithDevice:device];
captureSession_ = [[QTCaptureSession alloc] init];
- QTCaptureDecompressedVideoOutput *captureDecompressedOutput =
- [[[QTCaptureDecompressedVideoOutput alloc] init] autorelease];
- [captureDecompressedOutput setDelegate:self];
- if (![captureSession_ addOutput:captureDecompressedOutput error:&error]) {
+ captureDecompressedOutput_ =
+ [[QTCaptureDecompressedVideoOutput alloc] init];
+ [captureDecompressedOutput_ setDelegate:self];
+ if (![captureSession_ addOutput:captureDecompressedOutput_ error:&error]) {
DLOG(ERROR) << "Could not connect video capture output."
<< [[error localizedDescription] UTF8String];
return NO;
@@ -91,12 +92,14 @@
// The device is still running.
[self stopCapture];
}
- [[[captureSession_ outputs] objectAtIndex:0] setDelegate:nil];
- [captureSession_ removeOutput:[[captureSession_ outputs] objectAtIndex:0]];
+ [captureDecompressedOutput_ setDelegate:nil];
+ [captureSession_ removeOutput:captureDecompressedOutput_];
[captureSession_ release];
captureSession_ = nil;
[captureDeviceInput_ release];
captureDeviceInput_ = nil;
+ [captureDecompressedOutput_ release];
+ captureDecompressedOutput_ = nil;
return YES;
}
}