diff options
author | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-24 21:59:27 +0000 |
---|---|---|
committer | wjia@chromium.org <wjia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-24 21:59:27 +0000 |
commit | 2677bed8d4cd07758392d9634e40352f25d248ac (patch) | |
tree | aa1fce40f2b213630e83c5fffc713a28966a73b9 /media/video | |
parent | 01a3b4e0fdea27a12afa87f31e49ece893a5eb7b (diff) | |
download | chromium_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.h | 2 | ||||
-rw-r--r-- | media/video/capture/mac/video_capture_device_qtkit_mac.mm | 15 |
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; } } |