@@ -128,13 +128,14 @@ - (void)prepareWithCameraViewControllerType:(CameraViewControllerType)value {
128
128
[videoDataOutput setVideoSettings: settingInfo];
129
129
130
130
// support multi-threading
131
- #ifdef _MULTI_THREADING
132
- dispatch_queue_t queue = dispatch_queue_create (" captureQueue" , NULL );
133
- [videoDataOutput setSampleBufferDelegate: self queue: queue];
134
- dispatch_release (queue);
135
- #else
136
- [videoDataOutput setSampleBufferDelegate: self queue: dispatch_get_main_queue ()];
137
- #endif
131
+ if ((type & MultiThreadingMask) == SupportMultiThreading) {
132
+ dispatch_queue_t queue = dispatch_queue_create (" captureQueue" , NULL );
133
+ [videoDataOutput setSampleBufferDelegate: self queue: queue];
134
+ dispatch_release (queue);
135
+ }
136
+ else {
137
+ [videoDataOutput setSampleBufferDelegate: self queue: dispatch_get_main_queue ()];
138
+ }
138
139
139
140
// attach video to session
140
141
[session beginConfiguration ];
@@ -262,10 +263,12 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interface
262
263
#pragma mark - AVCaptureVideoDataOutputSampleBufferDelegate
263
264
264
265
- (void )captureOutput : (AVCaptureOutput *)captureOutput didOutputSampleBuffer : (CMSampleBufferRef)sampleBuffer fromConnection : (AVCaptureConnection *)connection {
266
+ NSAutoreleasePool *pool = nil ;
267
+ if (![NSThread isMainThread ])
268
+ pool = [NSAutoreleasePool new ];
269
+
265
270
CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer (sampleBuffer);
266
- #ifdef _MULTI_THREADING
267
- NSAutoreleasePool *pool = [NSAutoreleasePool new ];
268
- #endif
271
+
269
272
if ([session isRunning ]) {
270
273
if ((type & BufferTypeMask) == BufferGrayColor) {
271
274
size_t width= CVPixelBufferGetWidth (imageBuffer);
@@ -301,9 +304,8 @@ - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CM
301
304
[delegate didUpdateBufferCameraViewController: self ];
302
305
303
306
}
304
- #ifdef _MULTI_THREADING
305
- [pool release ];
306
- #endif
307
+ if (![NSThread isMainThread ])
308
+ [pool release ];
307
309
}
308
310
309
311
#pragma mark - dealloc
0 commit comments