diff --git a/CapturedFrameProtocol.h b/CapturedFrameProtocol.h
index cbc38430..7af2a055 100644
--- a/CapturedFrameProtocol.h
+++ b/CapturedFrameProtocol.h
@@ -12,5 +12,4 @@
-(void) newCapturedFrame:(IOSurfaceID)ioxpc reply:(void (^)())reply;
-
@end
diff --git a/CocoaSplit.xcodeproj/project.pbxproj b/CocoaSplit.xcodeproj/project.pbxproj
index e17317e0..b0576e14 100644
--- a/CocoaSplit.xcodeproj/project.pbxproj
+++ b/CocoaSplit.xcodeproj/project.pbxproj
@@ -820,7 +820,7 @@
HEADER_SEARCH_PATHS = /usr/local/include;
MACOSX_DEPLOYMENT_TARGET = "";
ONLY_ACTIVE_ARCH = NO;
- SDKROOT = macosx10.8;
+ SDKROOT = macosx;
};
name = Debug;
};
@@ -843,7 +843,7 @@
HEADER_SEARCH_PATHS = /usr/local/include;
MACOSX_DEPLOYMENT_TARGET = "";
ONLY_ACTIVE_ARCH = NO;
- SDKROOT = macosx10.8;
+ SDKROOT = macosx;
};
name = Release;
};
@@ -871,6 +871,7 @@
/usr/local/lib/libx264.a,
);
PRODUCT_NAME = CocoaSplit;
+ SDKROOT = macosx;
WRAPPER_EXTENSION = app;
};
name = Debug;
@@ -899,6 +900,7 @@
/usr/local/lib/libx264.a,
);
PRODUCT_NAME = CocoaSplit;
+ SDKROOT = macosx;
WRAPPER_EXTENSION = app;
};
name = Release;
@@ -958,6 +960,7 @@
/usr/local/lib/libx264.a,
);
PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx10.9;
};
name = Debug;
};
@@ -985,6 +988,7 @@
/usr/local/lib/libmp3lame.a,
);
PRODUCT_NAME = "$(TARGET_NAME)";
+ SDKROOT = macosx10.9;
};
name = Release;
};
@@ -1004,7 +1008,7 @@
MACOSX_DEPLOYMENT_TARGET = 10.8;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "zakk.lol.$(TARGET_NAME:rfc1034identifier)";
- SDKROOT = macosx10.8;
+ SDKROOT = macosx;
VALID_ARCHS = "i386 x86_64";
WRAPPER_EXTENSION = xpc;
};
@@ -1025,7 +1029,7 @@
MACH_O_TYPE = mh_execute;
MACOSX_DEPLOYMENT_TARGET = 10.8;
PRODUCT_NAME = "zakk.lol.$(TARGET_NAME:rfc1034identifier)";
- SDKROOT = macosx10.8;
+ SDKROOT = macosx;
VALID_ARCHS = "i386 x86_64";
WRAPPER_EXTENSION = xpc;
};
diff --git a/CocoaSplit/AVFAdvancedPanel.xib b/CocoaSplit/AVFAdvancedPanel.xib
index ec47aa18..eb86697c 100644
--- a/CocoaSplit/AVFAdvancedPanel.xib
+++ b/CocoaSplit/AVFAdvancedPanel.xib
@@ -1,977 +1,122 @@
-
-
-
- 1080
- 12D78
- 3084
- 1187.37
- 626.00
-
-
- IBNSLayoutConstraint
- NSArrayController
- NSButton
- NSButtonCell
- NSCustomObject
- NSMenu
- NSMenuItem
- NSPopUpButton
- NSPopUpButtonCell
- NSTextField
- NSTextFieldCell
- NSView
- NSWindowTemplate
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
-
-
-
-
- closeAVFAdvanced:
-
-
-
- 50
-
-
-
- avfPanel
-
-
-
- 51
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 31
-
-
-
- contentValues: arrangedObjects.localizedName
-
-
-
-
-
- contentValues: arrangedObjects.localizedName
- contentValues
- arrangedObjects.localizedName
-
- 2
-
-
- 33
-
-
-
- selectedObject: self.videoCaptureSession.activeVideoFormat
-
-
-
-
-
- selectedObject: self.videoCaptureSession.activeVideoFormat
- selectedObject
- self.videoCaptureSession.activeVideoFormat
-
- 2
-
-
- 37
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 38
-
-
-
- contentValues: arrangedObjects.localizedName
-
-
-
-
-
- contentValues: arrangedObjects.localizedName
- contentValues
- arrangedObjects.localizedName
-
- 2
-
-
- 40
-
-
-
- selectedObject: self.videoCaptureSession.activeVideoFramerate
-
-
-
-
-
- selectedObject: self.videoCaptureSession.activeVideoFramerate
- selectedObject
- self.videoCaptureSession.activeVideoFramerate
-
- 2
-
-
- 44
-
-
-
- contentArray: self.videoCaptureSession.videoFramerates
-
-
-
-
-
- contentArray: self.videoCaptureSession.videoFramerates
- contentArray
- self.videoCaptureSession.videoFramerates
- 2
-
-
- 56
-
-
-
- contentArray: self.videoCaptureSession.videoFormats
-
-
-
-
-
- contentArray: self.videoCaptureSession.videoFormats
- contentArray
- self.videoCaptureSession.videoFormats
- 2
-
-
- 57
-
-
-
-
-
- 0
-
-
-
-
-
- -2
-
-
- File's Owner
-
-
- -1
-
-
- First Responder
-
-
- -3
-
-
- Application
-
-
- 1
-
-
-
-
-
-
-
- 2
-
-
-
-
-
-
-
-
- 4
- 0
-
- 4
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 48
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 6
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
-
-
-
- 3
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 94
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
-
- 4
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
-
- 6
-
-
-
-
-
-
-
- 7
-
-
-
-
- 8
-
-
-
-
- 9
-
-
-
-
-
-
-
- 10
-
-
-
-
-
-
-
-
-
- 11
-
-
-
-
- 12
-
-
-
-
- 13
-
-
-
-
- 14
-
-
-
-
- 15
-
-
-
-
-
-
-
- 16
-
-
-
-
-
-
-
-
-
- 17
-
-
-
-
- 18
-
-
-
-
- 19
-
-
-
-
- 20
-
-
-
-
- 21
-
-
-
-
- 22
-
-
-
-
- 23
-
-
-
-
- 24
-
-
-
-
- 25
-
-
-
-
- 26
-
-
-
-
- 27
-
-
-
-
- 28
-
-
-
-
- 29
-
-
- videoFrameratesArrayController
-
-
- 30
-
-
- videoFormatArrayController
-
-
- 45
-
-
-
-
-
-
-
- 46
-
-
-
-
- 47
-
-
-
-
- 48
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- {{357, 418}, {480, 270}}
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
-
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- 57
-
-
- 0
- IBCocoaFramework
- YES
- 3
-
- {11, 11}
- {10, 3}
-
- YES
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CocoaSplit/AVFCapture.h b/CocoaSplit/AVFCapture.h
index 95f4c115..a3535f03 100644
--- a/CocoaSplit/AVFCapture.h
+++ b/CocoaSplit/AVFCapture.h
@@ -23,6 +23,9 @@
AVCaptureVideoDataOutput *_video_capture_output;
AVCaptureAudioDataOutput *_audio_capture_output;
+ AVCaptureDeviceInput *_audio_capture_input;
+ AVCaptureDeviceInput *_video_capture_input;
+
CVImageBufferRef _currentFrame;
AVCaptureDevice *_selectedVideoCaptureDevice;
int _preroll_frame_cnt;
@@ -62,7 +65,9 @@
-(bool) startCaptureSession:(NSError **)error;
-(bool) stopCaptureSession;
-
+-(void) setupAudioPreview;
+-(id) initForAudio;
+-(void) setupAudioCompression;
@end
diff --git a/CocoaSplit/AVFCapture.m b/CocoaSplit/AVFCapture.m
index 4112a9cf..1fea2bb0 100644
--- a/CocoaSplit/AVFCapture.m
+++ b/CocoaSplit/AVFCapture.m
@@ -16,6 +16,40 @@
@synthesize activeVideoDevice = _activeVideoDevice;
@synthesize activeVideoFramerate = _activeVideoFramerate;
@synthesize previewVolume = _previewVolume;
+@synthesize activeAudioDevice = _activeAudioDevice;
+
+
+
+-(id) init
+{
+ if (self = [super init])
+ {
+ _capture_session = [[AVCaptureSession alloc] init];
+ [self setupVideoOutput];
+
+
+
+ [_capture_session startRunning];
+ }
+ return self;
+}
+
+
+-(id) initForAudio
+{
+
+ if (self = [super init])
+ {
+ _capture_session = [[AVCaptureSession alloc] init];
+ [self setupAudioPreview];
+ _audio_capture_queue = dispatch_queue_create("AudioQueue", NULL);
+
+ [_capture_session startRunning];
+
+ }
+
+ return self;
+}
-(void) setVideoDimensions:(int)width height:(int)height
@@ -53,7 +87,18 @@
/* [self.activeVideoDevice lockForConfiguration:nil];
self.activeVideoDevice.activeVideoMinFrameDuration = _activeVideoFramerate.minFrameDuration;
[self.activeVideoDevice unlockForConfiguration];
- */
+ */
+
+
+ if([[[_selectedVideoCaptureDevice activeFormat] videoSupportedFrameRateRanges] containsObject:_activeVideoFramerate])
+ {
+ if([_selectedVideoCaptureDevice lockForConfiguration:nil])
+ {
+ [_selectedVideoCaptureDevice setActiveVideoMinFrameDuration:_activeVideoFramerate.minFrameDuration];
+ [_selectedVideoCaptureDevice unlockForConfiguration];
+ }
+ }
+
self.videoCaptureFPS = _activeVideoFramerate.minFrameRate;
}
@@ -72,11 +117,62 @@
/* [self.activeVideoDevice lockForConfiguration:nil];
self.activeVideoDevice.activeFormat = _activeVideoFormat;
[self.activeVideoDevice unlockForConfiguration];
-*/
+*/
+
+
+ if ([_selectedVideoCaptureDevice lockForConfiguration:nil])
+ {
+ [_selectedVideoCaptureDevice setActiveFormat:_activeVideoFormat];
+ [_selectedVideoCaptureDevice unlockForConfiguration];
+ }
+
self.videoFramerates = self.activeVideoFormat.videoSupportedFrameRateRanges;
}
+-(id) activeAudioDevice
+{
+ return _activeAudioDevice;
+}
+
+-(void) setActiveAudioDevice:(id)activeAudioDevice
+{
+ _activeAudioDevice = activeAudioDevice;
+
+ if (!_capture_session)
+ {
+ return;
+ }
+
+ [_capture_session beginConfiguration];
+ if (_audio_capture_input)
+ {
+ [_capture_session removeInput:_audio_capture_input];
+ _audio_capture_input = nil;
+ }
+
+
+ _audio_capture_input = [AVCaptureDeviceInput deviceInputWithDevice:self.activeAudioDevice error:nil];
+
+ if (!_audio_capture_input)
+ {
+ NSLog(@"No audio capture input?");
+ } else {
+
+
+ if ([_capture_session canAddInput:_audio_capture_input])
+ {
+ [_capture_session addInput:_audio_capture_input];
+
+ } else {
+ NSLog(@"Can't add audio input?");
+ }
+ }
+ [_capture_session commitConfiguration];
+}
+
+
+
-(id) activeVideoDevice
{
return _activeVideoDevice;
@@ -87,6 +183,33 @@
{
_activeVideoDevice = newDev;
_selectedVideoCaptureDevice = [newDev captureDevice];
+
+ if (!_capture_session)
+ {
+ return;
+ }
+
+ [_capture_session beginConfiguration];
+
+ if (_video_capture_input)
+ {
+ [_capture_session removeInput:_video_capture_input];
+ _video_capture_input = nil;
+ }
+
+
+ if (_selectedVideoCaptureDevice)
+ {
+ _video_capture_input = [AVCaptureDeviceInput deviceInputWithDevice:_selectedVideoCaptureDevice error:nil];
+
+ if (_video_capture_input)
+ {
+ [_capture_session addInput:_video_capture_input];
+ }
+ }
+
+ [_capture_session commitConfiguration];
+
self.videoFormats = _selectedVideoCaptureDevice.formats;
self.videoFramerates = _selectedVideoCaptureDevice.activeFormat.videoSupportedFrameRateRanges;
@@ -158,14 +281,7 @@
return NO;
}
- _video_capture_queue = dispatch_queue_create("VideoQueue", NULL);
- [_video_capture_output setSampleBufferDelegate:self queue:_video_capture_queue];
-
- _audio_capture_queue = dispatch_queue_create("AudioQueue", NULL);
- [_audio_capture_output setSampleBufferDelegate:self queue:_audio_capture_queue];
-
- [_capture_session startRunning];
[_selectedVideoCaptureDevice lockForConfiguration:nil];
if (self.activeVideoFormat)
@@ -319,7 +435,6 @@
*therror = [NSError errorWithDomain:@"audioCapture" code:230 userInfo:@{NSLocalizedDescriptionKey : @"Could not add audio output to capture session"}];
return NO;
}
- [self setupAudioPreview];
} else {
NSLog(@"No audio device?");
@@ -349,22 +464,92 @@
}
+-(void) setupAudioCompression
+{
+
+ if (!_capture_session)
+ {
+ return;
+ }
+
+ if (_audio_capture_output)
+ {
+ return;
+ }
+
+
+ _audio_capture_output = [[AVCaptureAudioDataOutput alloc] init];
+
+
+
+ _audio_capture_output.audioSettings = @{AVFormatIDKey: [NSNumber numberWithInt:kAudioFormatMPEG4AAC],
+ AVSampleRateKey: [NSNumber numberWithFloat: 44100.0],
+ AVEncoderBitRateKey: [NSNumber numberWithInt:_audioBitrate*1000 ],
+ AVNumberOfChannelsKey: @2
+
+ };
+
+ [_audio_capture_output setSampleBufferDelegate:self queue:_audio_capture_queue];
+
+ [_capture_session beginConfiguration];
+
+ if ([_capture_session canAddOutput:_audio_capture_output])
+ {
+ [_capture_session addOutput:_audio_capture_output];
+ }
+
+ [_capture_session commitConfiguration];
+
+}
+
+
-(void) setupAudioPreview
{
if (_capture_session)
{
self.audioPreviewOutput = [[AVCaptureAudioPreviewOutput alloc] init];
- [_capture_session beginConfiguration];
if ([_capture_session canAddOutput:self.audioPreviewOutput])
{
[_capture_session addOutput:self.audioPreviewOutput];
}
- [_capture_session commitConfiguration];
self.audioPreviewOutput.volume = self.previewVolume;
}
}
+-(void)setupVideoOutput
+{
+ if (_capture_session)
+ {
+ NSMutableDictionary *videoSettings = [[NSMutableDictionary alloc] init];
+
+ [videoSettings setValue:@[@(kCVPixelFormatType_422YpCbCr8FullRange), @(kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange), @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange), @(kCVPixelFormatType_422YpCbCr8)] forKey:(NSString *)kCVPixelBufferPixelFormatTypeKey];
+ NSDictionary *ioAttrs = [NSDictionary dictionaryWithObject: [NSNumber numberWithBool: YES]
+ forKey: (NSString *)kIOSurfaceIsGlobal];
+
+ [videoSettings setValue:ioAttrs forKey:(NSString *)kCVPixelBufferIOSurfacePropertiesKey];
+ /* if (self.videoHeight && self.videoWidth)
+ {
+ [videoSettings setValue:@(self.videoHeight) forKey:(NSString *)kCVPixelBufferHeightKey];
+ [videoSettings setValue:@(self.videoWidth) forKey:(NSString *)kCVPixelBufferWidthKey];
+ } */
+
+ NSLog(@"SETTINGS DICT %@", videoSettings);
+ _video_capture_output = [[AVCaptureVideoDataOutput alloc] init];
+
+ if ([_capture_session canAddOutput:_video_capture_output])
+ {
+ [_capture_session addOutput:_video_capture_output];
+ _video_capture_output.videoSettings = videoSettings;
+
+ _video_capture_queue = dispatch_queue_create("VideoQueue", NULL);
+
+ [_video_capture_output setSampleBufferDelegate:self queue:_video_capture_queue];
+
+ }
+ }
+}
+
- (CVImageBufferRef) getCurrentFrame
{
@@ -421,6 +606,7 @@
{
if (connection.output == _video_capture_output)
{
+ /*
if (!self.did_preroll)
{
if (_preroll_frame_cnt < _preroll_needed_frames)
@@ -438,6 +624,7 @@
return;
}
}
+ */
CVImageBufferRef videoFrame = CMSampleBufferGetImageBuffer(sampleBuffer);
@@ -468,8 +655,10 @@
} else if (connection.output == _audio_capture_output) {
-
- [_audioDelegate captureOutputAudio:self didOutputSampleBuffer:sampleBuffer];
+ if (_audioDelegate)
+ {
+ [_audioDelegate captureOutputAudio:self didOutputSampleBuffer:sampleBuffer];
+ }
}
}
diff --git a/CocoaSplit/AppleVTPanel.xib b/CocoaSplit/AppleVTPanel.xib
index f94d93db..66635724 100644
--- a/CocoaSplit/AppleVTPanel.xib
+++ b/CocoaSplit/AppleVTPanel.xib
@@ -1,1692 +1,215 @@
-
-
-
- 1080
- 12E55
- 3084
- 1187.39
- 626.00
-
- com.apple.InterfaceBuilder.CocoaPlugin
- 3084
-
-
- IBNSLayoutConstraint
- NSArrayController
- NSButton
- NSButtonCell
- NSCustomObject
- NSMenu
- NSMenuItem
- NSNumberFormatter
- NSPopUpButton
- NSPopUpButtonCell
- NSTextField
- NSTextFieldCell
- NSUserDefaultsController
- NSView
- NSWindowTemplate
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
-
- CaptureController
-
-
- FirstResponder
-
-
- NSApplication
-
-
- 15
- 2
- {{196, 240}, {480, 270}}
- 544735232
- Window
- NSWindow
-
-
-
-
- 256
-
-
-
- 268
- {{119, 228}, {46, 22}}
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
- LucidaGrande
- 13
- 1044
-
-
-
-
-
-
-
-
- -∞
-
- +∞
-
- #
- #
-
-
-
-
-
-
-
- NaN
-
-
-
- 0
- 0
- YES
- NO
- 1
- AAAAAAAAAAAAAAAAAAAAAA
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- NO
- NO
- NO
-
- _NS:9
-
- YES
-
- 6
- System
- textBackgroundColor
-
- 3
- MQA
-
-
-
- 6
- System
- textColor
-
- 3
- MAA
-
-
-
- NO
-
-
-
- 268
- {{15, 231}, {73, 17}}
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Avg Bitrate
-
- _NS:1535
-
-
- 6
- System
- controlColor
-
- 3
- MC42NjY2NjY2NjY3AA
-
-
-
- 6
- System
- controlTextColor
-
-
-
- NO
-
-
-
- 268
- {{15, 199}, {76, 17}}
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Max Bitrate
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{119, 196}, {46, 22}}
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
-
-
-
-
-
- #
- -∞
-
-
- #
- +∞
-
- #
- #
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- NO
- NO
- NO
-
- _NS:9
-
- YES
-
-
-
- NO
-
-
-
- 268
- {{119, 164}, {46, 22}}
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
-
-
-
-
-
- #
- -∞
-
-
- #
- +∞
-
-
- #
- #
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- NO
- NO
- NO
-
- _NS:9
-
- YES
-
-
-
- NO
-
-
-
- 268
- {{15, 167}, {101, 17}}
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Keyframe every
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{14, 13}, {58, 32}}
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
- Ok
-
- _NS:9
-
- -2038284288
- 129
-
-
- 200
- 25
-
- NO
-
-
-
- 268
- {{17, 137}, {44, 17}}
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Profile
-
- _NS:1535
-
-
-
-
- NO
-
-
-
-
- 268
- {{16, 59}, {113, 18}}
-
-
- _NS:9
- YES
-
- -2080374784
- 268435456
- Use CBR Mode
-
- _NS:9
-
- 1211912448
- 2
-
- NSImage
- NSSwitch
-
-
- NSSwitch
-
-
-
- 200
- 25
-
- NO
-
-
-
- 268
- {{130, 55}, {25, 25}}
-
-
- _NS:1598
- YES
-
- 603979776
- 134217728
-
-
- _NS:1598
-
- -2038415360
- 161
-
-
- 200
- 25
-
- NO
-
-
-
- 268
- {{173, 167}, {56, 17}}
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- seconds
-
- _NS:1535
-
-
-
-
- NO
-
-
- {480, 270}
-
-
-
- {{0, 0}, {1920, 1058}}
- {10000000000000, 10000000000000}
- YES
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
- YES
-
-
-
-
-
-
- compressPanel
-
-
-
- 106
-
-
-
- closeCompressPanel:
-
-
-
- 111
-
-
-
- value: self.captureVideoAverageBitrate
-
-
-
-
-
- value: self.captureVideoAverageBitrate
- value
- self.captureVideoAverageBitrate
- 2
-
-
- 46
-
-
-
- value: self.captureVideoMaxBitrate
-
-
-
-
-
- value: self.captureVideoMaxBitrate
- value
- self.captureVideoMaxBitrate
- 2
-
-
- 44
-
-
-
- value: self.captureVideoMaxKeyframeInterval
-
-
-
-
-
- value: self.captureVideoMaxKeyframeInterval
- value
- self.captureVideoMaxKeyframeInterval
- 2
-
-
- 40
-
-
-
- contentArray: self.vtcompressor_profiles
-
-
-
-
-
- contentArray: self.vtcompressor_profiles
- contentArray
- self.vtcompressor_profiles
- 2
-
-
- 149
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 142
-
-
-
- selectedObject: self.vtcompressor_profile
-
-
-
-
-
- selectedObject: self.vtcompressor_profile
- selectedObject
- self.vtcompressor_profile
-
- 2
-
-
- 146
-
-
-
- value: self.videoCBR
-
-
-
-
-
- value: self.videoCBR
- value
- self.videoCBR
- 2
-
-
- 160
-
-
-
-
-
- 0
-
-
-
-
-
- -2
-
-
- File's Owner
-
-
- -1
-
-
- First Responder
-
-
- -3
-
-
- Application
-
-
- 1
-
-
-
-
-
-
-
- 2
-
-
-
-
- 9
- 0
-
- 9
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 4
- 1
-
- 20
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 176
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 4
- 1
-
- 10
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 4
- 1
-
- 10
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 119
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 18
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 3
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 46
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 4
-
-
-
-
-
-
-
- 5
-
-
-
-
-
-
-
- 6
-
-
-
-
-
-
-
- 7
-
-
-
-
-
-
-
- 8
-
-
-
-
-
-
-
- 9
-
-
-
-
- 10
-
-
-
-
-
-
-
- 11
-
-
-
-
- 12
-
-
-
-
-
-
-
- 13
-
-
-
-
- 14
-
-
-
-
- 15
-
-
-
-
- 16
-
-
-
-
-
-
-
- 17
-
-
-
-
- 41
-
-
-
-
- 60
-
-
-
-
- 70
-
-
-
-
- 95
-
-
-
-
- 99
-
-
-
-
- 101
-
-
-
-
- 102
-
-
-
-
- 104
-
-
-
-
- 107
-
-
-
-
-
-
-
- 108
-
-
-
-
- 109
-
-
-
-
- 110
-
-
-
-
- 115
-
-
-
-
- 116
-
-
-
-
- 119
-
-
-
-
- 121
-
-
-
-
- 122
-
-
-
-
- 124
-
-
-
-
- 125
-
-
-
-
- 126
-
-
- VTProfilesController
-
-
- 127
-
-
-
-
-
-
-
- 128
-
-
-
-
- 131
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 95
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 132
-
-
-
-
-
-
-
- 133
-
-
-
-
-
-
-
-
-
- 134
-
-
-
-
- 135
-
-
-
-
- 136
-
-
-
-
- 137
-
-
-
-
- 138
-
-
-
-
- 139
-
-
-
-
- 140
-
-
-
-
- 141
-
-
-
-
- 150
-
-
-
-
-
-
-
- 151
-
-
-
-
- 152
-
-
-
-
- 153
-
-
-
-
- 154
-
-
-
-
-
-
-
- 155
-
-
-
-
- 156
-
-
-
-
- 157
-
-
-
-
- 161
-
-
-
-
-
-
-
- 162
-
-
-
-
- 163
-
-
-
-
- 164
-
-
-
-
- 165
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- {{357, 418}, {480, 270}}
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- ToolTip
-
- ToolTip
-
- Bitrate is set to 'Avg Bitrate'. 'Max Bitrate' is ignored.
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- 165
-
-
- 0
- IBCocoaFramework
- YES
- 3
-
- {11, 11}
- {10, 3}
- {15, 15}
-
- YES
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CocoaSplit/CaptureController.h b/CocoaSplit/CaptureController.h
index 50ab504c..8733ac6e 100644
--- a/CocoaSplit/CaptureController.h
+++ b/CocoaSplit/CaptureController.h
@@ -160,7 +160,7 @@ void VideoCompressorReceiveFrame(void *, void *, OSStatus , VTEncodeInfoFlags ,
@property (weak) AbstractCaptureDevice *selectedVideoCapture;
-@property (weak) AVCaptureDevice *selectedAudioCapture;
+@property (readonly) AVCaptureDevice *selectedAudioCapture;
@property (readonly) double captureFPS;
diff --git a/CocoaSplit/CaptureController.m b/CocoaSplit/CaptureController.m
index 2c5ca945..f9653000 100644
--- a/CocoaSplit/CaptureController.m
+++ b/CocoaSplit/CaptureController.m
@@ -28,6 +28,7 @@
+
-(void)loadTwitchIngest
{
@@ -187,9 +188,23 @@
self.createSheet = nil;
}
+
+
+
+-(AVCaptureDevice *)selectedAudioCapture
+{
+ if (self.audioCaptureSession)
+ {
+ return self.audioCaptureSession.activeAudioDevice;
+ }
+
+ return nil;
+}
+
+
-(void) selectedAudioCaptureFromID:(NSString *)uniqueID
{
- self.selectedAudioCapture = [AVCaptureDevice deviceWithUniqueID:uniqueID];
+ self.audioCaptureSession.activeAudioDevice = [AVCaptureDevice deviceWithUniqueID:uniqueID];
}
@@ -235,6 +250,16 @@
+- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+ if ([keyPath isEqualToString:@"videoCaptureFPS"])
+ {
+ [self setupFrameTimer];
+ }
+}
+
+
+
-(NSString *) selectedVideoType
{
return _selectedVideoType;
@@ -245,6 +270,12 @@
-(void) setSelectedVideoType:(NSString *)selectedVideoType
{
+ if (self.videoCaptureSession)
+ {
+
+ [(NSObject *)self.videoCaptureSession removeObserver:self forKeyPath:@"videoCaptureFPS"];
+ }
+
if ([selectedVideoType isEqualToString:@"Desktop"])
{
self.videoCaptureSession = [[DesktopCapture alloc ] init];
@@ -258,20 +289,15 @@
self.videoCaptureSession = [[AVFCapture alloc] init];
}
+
if (!self.videoCaptureSession)
{
self.audioCaptureSession = nil;
_selectedVideoType = nil;
}
- if ([self.videoCaptureSession providesAudio])
- {
- self.audioCaptureSession = self.videoCaptureSession;
- } else {
- self.audioCaptureSession = [[AVFCapture alloc] init];
- }
-
- self.audioCaptureDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio];
+ [(NSObject *)self.videoCaptureSession addObserver:self forKeyPath:@"videoCaptureFPS" options:NSKeyValueObservingOptionNew context:NULL];
+
self.selectedVideoCapture = nil;
_selectedVideoType = selectedVideoType;
@@ -328,6 +354,14 @@
self.selectedVideoType = [self.videoTypes objectAtIndex:0];
+ self.audioCaptureSession = [[AVFCapture alloc] initForAudio];
+ [self.audioCaptureSession setAudioDelegate:self];
+
+
+
+
+ self.audioCaptureDevices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio];
+
}
@@ -548,6 +582,7 @@
NSError *error;
bool success;
+ id newCompressor;
if (_cmdLineInfo)
@@ -557,46 +592,24 @@
return YES;
}
- [self.audioCaptureSession setActiveAudioDevice:_selectedAudioCapture];
- [self.videoCaptureSession setVideoDelegate:self];
- [self.videoCaptureSession setVideoDimensions:_captureWidth height:_captureHeight];
- [self.audioCaptureSession setAudioDelegate:self];
- [self.audioCaptureSession setAudioBitrate:_audioBitrate];
- [self.audioCaptureSession setAudioSamplerate:_audioSamplerate];
-
-
-
- success = [self.videoCaptureSession setupCaptureSession:&error];
- if (!success)
- {
- [NSApp presentError:error];
- return NO;
- }
- success = [self.audioCaptureSession setupCaptureSession:&error];
- if (!success)
- {
- [NSApp presentError:error];
- return NO;
- }
-
if ([self.selectedCompressorType isEqualToString:@"x264"])
{
- self.videoCompressor = [[x264Compressor alloc] init];
+ newCompressor = [[x264Compressor alloc] init];
} else if ([self.selectedCompressorType isEqualToString:@"AppleVTCompressor"]) {
- self.videoCompressor = [[AppleVTCompressor alloc] init];
+ newCompressor = [[AppleVTCompressor alloc] init];
} else {
- self.videoCompressor = nil;
+ newCompressor = nil;
}
- if (self.videoCompressor)
+ if (newCompressor)
{
- self.videoCompressor.settingsController = self;
+ newCompressor.settingsController = self;
//if ([self.videoCompressor setupCompressor] == YES)
//{
- self.videoCompressor.outputDelegate = self;
+ newCompressor.outputDelegate = self;
//}
@@ -610,7 +623,8 @@
}
- success = [self.videoCaptureSession startCaptureSession:&error];
+
+ [self.audioCaptureSession setupAudioCompression];
_frameCount = 0;
_firstAudioTime = 0;
@@ -621,13 +635,6 @@
self.captureRunning = YES;
- uint64_t frame_interval = (1.0/self.captureFPS)*NSEC_PER_SEC;
-
- _dispatch_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, _main_capture_queue);
-
- dispatch_source_set_timer(_dispatch_timer, DISPATCH_TIME_NOW, frame_interval, 0);
- dispatch_source_set_event_handler(_dispatch_timer, ^{ [self newFrame]; });
- dispatch_resume(_dispatch_timer);
//dispatch_async(_main_capture_queue, ^{[self newFrame];});
@@ -635,38 +642,37 @@
//_captureTimer = [NSTimer timerWithTimeInterval:1.0/self.captureFPS target:self selector:@selector(newFrame) userInfo:nil repeats:YES];
//[[NSRunLoop currentRunLoop] addTimer:_captureTimer forMode:NSRunLoopCommonModes];
- if (!success)
- {
- self.captureRunning = NO;
- NSLog(@"Failed start capture");
- [NSApp presentError:error];
- return NO;
- }
- if (self.audioCaptureSession != self.videoCaptureSession)
- {
- success = [self.audioCaptureSession startCaptureSession:&error];
- }
-
-
-
-
- if (!success)
- {
- NSLog(@"Failed start capture");
- self.captureRunning = NO;
- [NSApp presentError:error];
- return NO;
- }
-
-
_PMAssertionRet = IOPMAssertionCreateWithName(kIOPMAssertionTypePreventUserIdleDisplaySleep, kIOPMAssertionLevelOn, CFSTR("CocoaSplit is capturing video"), &_PMAssertionID);
-
+
+ self.videoCompressor = newCompressor;
return YES;
}
+-(void) setupFrameTimer
+{
+
+ uint64_t frame_interval = (1.0/self.captureFPS)*NSEC_PER_SEC;
+
+
+ NSLog(@"Setting up new frame timer %f", self.captureFPS);
+ if (_dispatch_timer)
+ {
+ dispatch_source_cancel(_dispatch_timer);
+ _dispatch_timer = nil;
+
+ }
+
+ _dispatch_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, _main_capture_queue);
+
+ dispatch_source_set_timer(_dispatch_timer, DISPATCH_TIME_NOW, frame_interval, 0);
+ dispatch_source_set_event_handler(_dispatch_timer, ^{ [self newFrame]; });
+ dispatch_resume(_dispatch_timer);
+}
+
+
-(NSString *) buildCmdLineInfo
{
@@ -848,6 +854,7 @@
}
*/
+ /*
if (self.videoCaptureSession)
{
[self.videoCaptureSession stopCaptureSession];
@@ -857,6 +864,7 @@
{
[self.audioCaptureSession stopCaptureSession];
}
+ */
@@ -901,7 +909,11 @@
- (void)captureOutputAudio:(id)fromDevice didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
{
+
+
CFAbsoluteTime currentTime = CFAbsoluteTimeGetCurrent()*1000000;
+
+
if (_firstFrameTime == 0)
{
//Don't start sending audio to the outputs until a video frame has arrived, with AVFoundation this can take 2+ seconds (!?)
@@ -997,14 +1009,15 @@
if (self.videoCaptureSession)
{
+
newFrame = [self.videoCaptureSession getCurrentFrame];
if (newFrame)
{
- if (_firstFrameTime == 0)
+ if (_firstFrameTime == 0 && self.videoCompressor)
{
NSError *error;
BOOL success;
-
+ NSLog(@"SETTING UP RESOLUTION");
success = [self setupResolution:newFrame error:&error];
if (!success)
{
@@ -1030,7 +1043,12 @@
//});
//dispatch_async(_main_capture_queue, ^{
- [self processVideoFrame:newFrame];
+
+ if (self.videoCompressor)
+ {
+ [self processVideoFrame:newFrame];
+ }
+
//});
}
@@ -1062,6 +1080,12 @@
//[self.previewCtx drawFrame:imageBuffer];
+ if (!self.videoCompressor)
+ {
+ CVPixelBufferRelease(imageBuffer);
+
+ return;
+ }
CMTime pts;
CMTime duration;
@@ -1083,6 +1107,8 @@
+ NSLog(@"FRAME COUNT %lld", _frameCount);
+
pts = CMTimeMake(_frameCount*(1.0f/self.captureFPS)*1000000,1000000);
//NSLog(@"PTS IS %@", CMTimeCopyDescription(kCFAllocatorDefault, pts));
diff --git a/CocoaSplit/CaptureSessionProtocol.h b/CocoaSplit/CaptureSessionProtocol.h
index a7fe03cc..5a054033 100644
--- a/CocoaSplit/CaptureSessionProtocol.h
+++ b/CocoaSplit/CaptureSessionProtocol.h
@@ -28,11 +28,8 @@
--(bool) stopCaptureSession;
--(bool) startCaptureSession:(NSError **)error;
-(bool) providesVideo;
-(bool) providesAudio;
--(bool) setupCaptureSession:(NSError **)therror;
-(void) setVideoDimensions:(int)width height:(int)height;
@@ -53,6 +50,8 @@
@property (assign) int audioSamplerate;
@property (assign) float previewVolume;
+-(void)setupAudioCompression;
+
diff --git a/CocoaSplit/DesktopCapture.m b/CocoaSplit/DesktopCapture.m
index 246a06fd..09db78c9 100644
--- a/CocoaSplit/DesktopCapture.m
+++ b/CocoaSplit/DesktopCapture.m
@@ -15,6 +15,10 @@
@implementation DesktopCapture
@synthesize activeVideoDevice = _activeVideoDevice;
+@synthesize videoCaptureFPS = _videoCaptureFPS;
+
+
+
@@ -24,6 +28,22 @@
}
+
+-(id) init
+{
+ if (self = [super init])
+ {
+ _capture_queue = dispatch_queue_create("Desktop Capture Queue", DISPATCH_QUEUE_SERIAL);
+
+ self.videoCaptureFPS = 60;
+
+ }
+
+ return self;
+
+}
+
+
-(AbstractCaptureDevice *)activeVideoDevice
{
return _activeVideoDevice;
@@ -38,7 +58,8 @@
self.width = displaySize.size.width;
self.height = displaySize.size.height;
-
+
+ [self setupDisplayStream];
}
-(void) setVideoDimensions:(int)width height:(int)height
@@ -49,40 +70,50 @@
}
--(bool)setupCaptureSession:(NSError *__autoreleasing *)therror
+-(double)videoCaptureFPS
+{
+ return _videoCaptureFPS;
+}
+
+
+-(void) setVideoCaptureFPS:(double)videoCaptureFPS
+{
+ _videoCaptureFPS = videoCaptureFPS;
+
+ [self setupDisplayStream];
+}
+
+
+
+-(bool)setupDisplayStream
{
- if (!self.activeVideoDevice)
+
+ if (_displayStreamRef)
+ {
+ [self stopDisplayStream];
+ }
+
+
+
+ if (!_currentDisplay)
{
- *therror = [NSError errorWithDomain:@"videoCapture" code:100 userInfo:@{NSLocalizedDescriptionKey : @"Must select video capture device first"}];
return NO;
}
- if (!(self.width > 0) || !(self.height > 0))
- {
- *therror = [NSError errorWithDomain:@"videoCapture" code:150 userInfo:@{NSLocalizedDescriptionKey : @"Width and height must be set to greater than zero"}];
- return NO;
- }
-
-
- _capture_queue = dispatch_queue_create("Desktop Capture Queue", DISPATCH_QUEUE_SERIAL);
- if (!_capture_queue)
- {
- *therror = [NSError errorWithDomain:@"videoCapture" code:160 userInfo:@{NSLocalizedDescriptionKey : @"Could not create desktop capture dispatch queue"}];
- return NO;
- }
- _currentFrameTime = 0;
-
- if (!self.videoCaptureFPS || self.videoCaptureFPS == 0)
- {
- self.videoCaptureFPS = 60.0;
- }
NSNumber *minframetime = [NSNumber numberWithFloat:(1000.0/(self.videoCaptureFPS*1000))];
+
+
_displayStreamRef = CGDisplayStreamCreateWithDispatchQueue(_currentDisplay, self.width, self.height, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, (__bridge CFDictionaryRef)(@{(NSString *)kCGDisplayStreamQueueDepth : @20, (NSString *)kCGDisplayStreamMinimumFrameTime : minframetime, (NSString *)kCGDisplayStreamPreserveAspectRatio: @NO}), _capture_queue, ^(CGDisplayStreamFrameStatus status, uint64_t displayTime, IOSurfaceRef frameSurface, CGDisplayStreamUpdateRef updateRef) {
+ if (status == kCGDisplayStreamFrameStatusStopped)
+ {
+ return;
+
+ }
if (frameSurface)
{
@@ -97,22 +128,10 @@
}
- /*
- CVPixelBufferRef tmpbuf;
-
- if (self.videoDelegate)
- {
- CVPixelBufferCreateWithIOSurface(NULL, frameSurface, NULL, &tmpbuf);
- if (tmpbuf)
- {
- [self.videoDelegate captureOutputVideo:nil didOutputSampleBuffer:nil didOutputImage:tmpbuf frameTime:0 ];
- CVPixelBufferRelease(tmpbuf);
- }
- }
- */
}
});
+ CGDisplayStreamStart(_displayStreamRef);
return YES;
}
@@ -136,18 +155,18 @@
}
--(bool)startCaptureSession:(NSError *__autoreleasing *)error
-{
- CGDisplayStreamStart(_displayStreamRef);
- return YES;
-}
--(bool)stopCaptureSession
+-(bool)stopDisplayStream
{
- CGDisplayStreamStop(_displayStreamRef);
+
+ if (_displayStreamRef)
+ {
+ CGDisplayStreamStop(_displayStreamRef);
+ }
+
+
_currentFrame = NULL;
- _capture_queue = NULL;
return YES;
}
diff --git a/CocoaSplit/QTCapture.m b/CocoaSplit/QTCapture.m
index dc8e9ebf..0ec4ad78 100644
--- a/CocoaSplit/QTCapture.m
+++ b/CocoaSplit/QTCapture.m
@@ -42,6 +42,21 @@
}
+-(AbstractCaptureDevice *)activeVideoDevice
+{
+ return _activeVideoDevice;
+}
+
+-(void)setActiveVideoDevice:(AbstractCaptureDevice *)activeVideoDevice
+{
+ _activeVideoDevice = activeVideoDevice;
+ [self stopCaptureSession];
+ [self startCaptureSession];
+
+}
+
+
+
-(void) setVideoDimensions:(int)width height:(int)height
{
return;
@@ -81,7 +96,7 @@
NSMutableArray *__block retArray;
- [_xpcProxy testMethod];
+ //[_xpcProxy testMethod];
[_xpcProxy listCaptureDevices:^(NSArray *r_devices) {
retArray = [[NSMutableArray alloc] init];
@@ -90,6 +105,7 @@
{
[retArray addObject:[[AbstractCaptureDevice alloc] initWithName:[devinstance valueForKey:@"name"] device:[devinstance valueForKey:@"id"] uniqueID:[devinstance valueForKey:@"id"]]];
}
+
[self willChangeValueForKey:@"availableVideoDevices"];
_availableVideoDevices = (NSArray *)retArray;
[self didChangeValueForKey:@"availableVideoDevices"];
@@ -111,6 +127,7 @@
IOSurfaceIncrementUseCount(frameIOref);
+
if (frameIOref)
{
@synchronized(self)
@@ -137,8 +154,10 @@
}
*/
- //ALWAYS REPLY
+
reply();
+
+ //ALWAYS REPLY
}
@@ -151,8 +170,9 @@
}
--(bool) startCaptureSession:(NSError **)error
+-(bool) startCaptureSession
{
+ NSLog(@"STARTING CAPTURE SESSION?");
[_xpcProxy startXPCCaptureSession:self.activeVideoDevice.uniqueID];
@@ -160,13 +180,6 @@
}
--(bool) setupCaptureSession:(NSError *__autoreleasing *)therror
-{
-
- return YES;
-
-}
-
void QTPixelBufferRelease(void *releaseRefCon, const void *baseAddress)
{
diff --git a/CocoaSplit/SyphonCapture.m b/CocoaSplit/SyphonCapture.m
index 686874de..bfff9909 100644
--- a/CocoaSplit/SyphonCapture.m
+++ b/CocoaSplit/SyphonCapture.m
@@ -16,6 +16,24 @@
+@synthesize activeVideoDevice = _activeVideoDevice;
+
+
+
+
+-(AbstractCaptureDevice *)activeVideoDevice
+{
+ return _activeVideoDevice;
+}
+
+-(void)setActiveVideoDevice:(AbstractCaptureDevice *)activeVideoDevice
+{
+ _activeVideoDevice = activeVideoDevice;
+ [self startSyphon];
+}
+
+
+
-(void) setVideoDimensions:(int)width height:(int)height
{
self.width = width;
@@ -65,44 +83,45 @@
}
--(bool) setupCaptureSession:(NSError *__autoreleasing *)therror
+-(id) init
{
- NSOpenGLPixelFormatAttribute glAttributes[] = {
+ if (self = [super init])
+ {
+ NSOpenGLPixelFormatAttribute glAttributes[] = {
+
+ NSOpenGLPFAPixelBuffer,
+ NSOpenGLPFANoRecovery,
+ NSOpenGLPFAAccelerated,
+ NSOpenGLPFADepthSize, 32,
+ (NSOpenGLPixelFormatAttribute) 0
+
+ };
+ NSOpenGLPixelFormat *pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:glAttributes];
+
+ if (!pixelFormat)
+ {
+ return NO;
+ }
+
+ _ogl_ctx = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil];
+
+ if (!_ogl_ctx)
+ {
+ return NO;
+ }
+
+ CVReturn result;
+
+ result = CVOpenGLTextureCacheCreate(kCFAllocatorDefault, NULL, [_ogl_ctx CGLContextObj], CGLGetPixelFormat([_ogl_ctx CGLContextObj]), NULL, &_texture_cache);
+
+ if (result != kCVReturnSuccess)
+ {
+ return NO;
+ }
- NSOpenGLPFAPixelBuffer,
- NSOpenGLPFANoRecovery,
- NSOpenGLPFAAccelerated,
- NSOpenGLPFADepthSize, 32,
- (NSOpenGLPixelFormatAttribute) 0
-
- };
- NSOpenGLPixelFormat *pixelFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:glAttributes];
-
- if (!pixelFormat)
- {
- return NO;
}
-
- _ogl_ctx = [[NSOpenGLContext alloc] initWithFormat:pixelFormat shareContext:nil];
-
- if (!_ogl_ctx)
- {
- return NO;
- }
-
- CVReturn result;
-
- result = CVOpenGLTextureCacheCreate(kCFAllocatorDefault, NULL, [_ogl_ctx CGLContextObj], CGLGetPixelFormat([_ogl_ctx CGLContextObj]), NULL, &_texture_cache);
-
- if (result != kCVReturnSuccess)
- {
- return NO;
- }
-
- return YES;
-
-
+ return self;
}
@@ -136,7 +155,6 @@
BOOL returnNow = NO;
- BOOL changed = NO;
if (frameSize.width == 0.0f || frameSize.height == 0.0f)
{
@@ -297,22 +315,32 @@
}
--(bool) startCaptureSession:(NSError *__autoreleasing *)error
+-(void) startSyphon
{
+
+ if (_syphon_client)
+ {
+ [_syphon_client stop];
+ _syphon_client = nil;
+ }
+
+
_syphonServer = [self.activeVideoDevice captureDevice];
- NSLog(@"STARTING SYPHON");
- _syphon_client = [[SyphonClient alloc] initWithServerDescription:_syphonServer options:nil newFrameHandler:nil];
+
+ if (_syphonServer)
+ {
+ NSLog(@"STARTING SYPHON");
+ _syphon_client = [[SyphonClient alloc] initWithServerDescription:_syphonServer options:nil newFrameHandler:nil];
+ }
+
/*
_syphon_client = [[SyphonClient alloc] initWithServerDescription:_syphonServer options:nil newFrameHandler:^(SyphonClient *client) {
[self renderNewFrame:client];
}];
*/
-
- return YES;
-
}
diff --git a/CocoaSplit/advancedPrefPanel.xib b/CocoaSplit/advancedPrefPanel.xib
index 52fcb745..dbea2fc5 100644
--- a/CocoaSplit/advancedPrefPanel.xib
+++ b/CocoaSplit/advancedPrefPanel.xib
@@ -1,626 +1,78 @@
-
-
-
- 1080
- 12E55
- 3084
- 1187.39
- 626.00
-
- com.apple.InterfaceBuilder.CocoaPlugin
- 3084
-
-
- IBNSLayoutConstraint
- NSButton
- NSButtonCell
- NSCustomObject
- NSTextField
- NSTextFieldCell
- NSUserDefaultsController
- NSView
- NSWindowTemplate
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
-
- CaptureController
-
-
- FirstResponder
-
-
- NSApplication
-
-
- 15
- 2
- {{196, 240}, {480, 270}}
- 544735232
- Window
- NSWindow
-
-
-
-
- 256
-
-
-
- 268
- {{14, 13}, {59, 32}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
- OK
-
- LucidaGrande
- 13
- 1044
-
- _NS:9
-
- -2038284288
- 129
-
- DQ
- 200
- 25
-
- NO
-
-
-
- 268
- {{222, 232}, {37, 22}}
-
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
-
- _NS:9
-
- YES
-
- 6
- System
- textBackgroundColor
-
- 3
- MQA
-
-
-
- 6
- System
- textColor
-
- 3
- MAA
-
-
-
- NO
-
-
-
- 268
- {{20, 235}, {180, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Max pending output frames
-
- _NS:1535
-
-
- 6
- System
- controlColor
-
- 3
- MC42NjY2NjY2NjY3AA
-
-
-
- 6
- System
- controlTextColor
-
-
-
- NO
-
-
- {480, 270}
-
-
-
-
- {{0, 0}, {1920, 1058}}
- {10000000000000, 10000000000000}
- YES
-
-
- YES
-
-
-
-
-
-
- advancedPrefPanel
-
-
-
- 7
-
-
-
- closeAdvancedPrefPanel:
-
-
-
- 9
-
-
-
- value: self.maxOutputPending
-
-
-
-
-
- value: self.maxOutputPending
- value
- self.maxOutputPending
-
- NSContinuouslyUpdatesValue
-
-
- 2
-
-
- 94
-
-
-
-
-
- 0
-
-
-
-
-
- -2
-
-
- File's Owner
-
-
- -1
-
-
- First Responder
-
-
- -3
-
-
- Application
-
-
- 1
-
-
-
-
-
-
-
- 2
-
-
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 9
- 0
-
- 9
- 1
-
- 0.0
-
- 1000
-
- 5
- 22
- 2
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 16
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 23
-
- 1000
-
- 3
- 9
- 3
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
- 4
-
-
-
-
- 5
-
-
-
-
- 6
-
-
-
-
- 14
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 37
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 15
-
-
-
-
- 19
-
-
-
-
- 60
-
-
-
-
-
-
-
- 61
-
-
-
-
- 72
-
-
-
-
- 74
-
-
-
-
- 87
-
-
-
-
- 96
-
-
-
-
- 98
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- {{357, 418}, {480, 270}}
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- 98
-
-
-
-
- CaptureController
- NSObject
-
- id
- id
- id
- id
- id
- id
- id
- id
- id
- id
- id
- id
-
-
-
- addStreamingService:
- id
-
-
- closeAVFAdvanced:
- id
-
-
- closeAdvancedPrefPanel:
- id
-
-
- closeCompressPanel:
- id
-
-
- closeCreateSheet:
- id
-
-
- openAVFAdvanced:
- id
-
-
- openAdvancedPrefPanel:
- id
-
-
- openCompressPanel:
- id
-
-
- openCreateSheet:
- id
-
-
- removeDestination:
- id
-
-
- streamButtonPushed:
- id
-
-
- videoRefresh:
- id
-
-
-
- NSWindow
- NSWindow
- NSWindow
- NSWindow
- PreviewView
-
-
-
- advancedPrefPanel
- NSWindow
-
-
- avfPanel
- NSWindow
-
-
- compressPanel
- NSWindow
-
-
- createSheet
- NSWindow
-
-
- previewCtx
- PreviewView
-
-
-
- IBProjectSource
- ./Classes/CaptureController.h
-
-
-
- NSLayoutConstraint
- NSObject
-
- IBProjectSource
- ./Classes/NSLayoutConstraint.h
-
-
-
- PreviewView
- NSOpenGLView
-
- toggleFullscreen:
- id
-
-
- toggleFullscreen:
-
- toggleFullscreen:
- id
-
-
-
- IBProjectSource
- ./Classes/PreviewView.h
-
-
-
-
- 0
- IBCocoaFramework
- YES
- 3
- YES
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CocoaSplit/en.lproj/MainMenu.xib b/CocoaSplit/en.lproj/MainMenu.xib
index 1248bc9a..b34eea3a 100644
--- a/CocoaSplit/en.lproj/MainMenu.xib
+++ b/CocoaSplit/en.lproj/MainMenu.xib
@@ -1,8167 +1,1173 @@
-
-
-
- 1080
- 12E55
- 3084
- 1187.39
- 626.00
-
- com.apple.InterfaceBuilder.CocoaPlugin
- 3084
-
-
- IBNSLayoutConstraint
- NSArrayController
- NSBox
- NSButton
- NSButtonCell
- NSCustomObject
- NSCustomView
- NSDictionaryController
- NSDrawer
- NSMenu
- NSMenuItem
- NSNumberFormatter
- NSPopUpButton
- NSPopUpButtonCell
- NSScrollView
- NSScroller
- NSSlider
- NSSliderCell
- NSSplitView
- NSTabView
- NSTabViewItem
- NSTableColumn
- NSTableHeaderView
- NSTableView
- NSTextField
- NSTextFieldCell
- NSUserDefaultsController
- NSView
- NSWindowTemplate
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
-
- NSApplication
-
-
- FirstResponder
-
-
- NSApplication
-
-
- YES
-
-
-
- 15
- 2
- {{683, 323}, {850, 703}}
- 1954021376
- CocoaSplit
- NSWindow
-
-
-
-
- 256
-
-
-
- 268
-
-
-
- 256
-
-
-
- 256
-
-
-
- 268
- {{31, 189}, {847, 252}}
-
-
-
- _NS:9
- PreviewView
-
-
-
- 268
- {{41, 165}, {108, 18}}
-
-
-
- _NS:9
- YES
-
- -2080374784
- 268435456
- Show preview
-
- LucidaGrande
- 13
- 1044
-
- _NS:9
-
- 1211912448
- 2
-
- NSImage
- NSSwitch
-
-
- NSSwitch
-
-
-
- 200
- 25
-
- NO
-
-
-
- 268
- {{275, 164}, {96, 21}}
-
-
-
- _NS:9
- YES
-
- 67371264
- 0
-
- _NS:9
-
- 1
- 0.0
- 0.21369791666666665
- 0.0
- 0
- 1
- NO
- NO
-
- NO
-
-
-
- 268
- {{153, 165}, {111, 18}}
-
-
-
- _NS:9
- YES
-
- -2080374784
- 268435456
- Preview Vsync
-
- _NS:9
-
- 1211912448
- 2
-
-
-
-
- 200
- 25
-
- NO
-
-
- {{-33, -154}, {1061, 641}}
-
-
-
-
-
- {850, 290}
-
-
-
- _NS:11
- NSView
-
-
-
- 256
-
-
-
- 268
- {{384, 7}, {82, 32}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
- Stream!
-
- _NS:9
-
- -930988032
- 129
-
- Stop!
-
- 200
- 25
-
- NO
-
-
-
- 12
- {{13, 35}, {824, 363}}
-
-
-
- _NS:9
-
-
- 1
-
-
- 256
-
-
-
-
- 268
- {{14, 241}, {55, 26}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Source
-
- _NS:1535
-
-
- 6
- System
- controlColor
-
- 3
- MC42NjY2NjY2NjY3AA
-
-
-
- 6
- System
- controlTextColor
-
- 3
- MAA
-
-
-
- NO
-
-
-
- 268
- {{14, 192}, {71, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Resolution
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{14, 221}, {68, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Compress
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{99, 190}, {46, 22}}
-
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
-
-
-
-
-
- -∞
-
-
- +∞
-
- #
- #
-
-
-
-
-
-
-
- NaN
-
-
-
- 0
- 0
- YES
- NO
- 1
- AAAAAAAAAAAAAAAAAAAAAA
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- NO
- YES
- NO
-
- _NS:9
-
- YES
-
- 6
- System
- textBackgroundColor
-
- 3
- MQA
-
-
-
- 6
- System
- textColor
-
-
-
- NO
-
-
-
- 268
- {{165, 190}, {47, 22}}
-
-
-
- _NS:9
- YES
-
- -1804599231
- -1874852864
-
-
-
-
-
-
-
-
-
- -∞
-
- +∞
-
- #
- #
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- NO
- NO
- NO
-
- _NS:9
-
- YES
-
-
-
- NO
-
-
-
- 268
- {{150, 192}, {12, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- x
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{239, 245}, {26, 17}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
-
-
- _NS:9
-
- -2039726080
- 160
-
- NSImage
- NSRefreshTemplate
-
- Refresh
-
- 200
- 25
-
- NO
-
-
-
- 268
- {{192, 221}, {26, 17}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
-
-
- _NS:9
-
- -2039726080
- 160
-
- NSImage
- NSAdvanced
-
- Refresh
-
- 200
- 25
-
- NO
-
-
-
- 268
- {{192, 272}, {26, 17}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
-
-
- _NS:9
-
- -2039726080
- 160
-
- Refresh
-
- 200
- 25
-
- NO
-
-
-
-
-
- 268
- {{14, 272}, {35, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Type
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{14, 164}, {26, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- FPS
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{99, 162}, {46, 22}}
-
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
-
-
-
-
-
- -∞
-
-
- +∞
-
- #,##0.###
- #,##0.###
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- YES
- NO
- YES
-
- _NS:9
-
- YES
-
-
-
- NO
-
-
-
-
- 268
- {{14, 117}, {47, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Source
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{99, 92}, {96, 22}}
-
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
-
-
-
-
-
- -∞
-
-
- +∞
-
- #,##0.###
- #,##0.###
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- YES
- NO
- YES
-
- _NS:9
-
- YES
-
-
-
- NO
-
-
-
- 268
- {{14, 92}, {45, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Bitrate
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{14, 67}, {81, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Sample Rate
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{99, 64}, {96, 22}}
-
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
-
-
-
-
-
- -∞
-
-
- +∞
-
- #,##0.###
- #,##0.###
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- YES
- NO
- YES
-
- _NS:9
-
- YES
-
-
-
- NO
-
-
-
- 268
-
-
-
- 2304
-
-
-
- 256
-
- {412, 116}
-
-
-
- _NS:13
- YES
- NO
- YES
-
-
-
- -2147483392
- {{457, 0}, {16, 17}}
-
-
-
- _NS:19
-
-
-
- 132
- 40
- 1000
-
-
- 67108864
- 0
-
-
- _NS:9
-
- 1211912448
- 2
-
-
-
-
- 200
- 25
-
- 3
- YES
- YES
-
-
-
- 118
- 40
- 1000
-
-
- 337641536
- 2048
- Text Cell
-
-
-
- 6
- System
- controlBackgroundColor
-
-
-
-
- 3
- YES
- YES
-
-
-
- 82
- 10
- 3.4028234663852886e+38
-
-
- 337641536
- 2048
- Text Cell
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 68
- 10
- 3.4028234663852886e+38
-
-
- 337641536
- 2048
- Text Cell
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 3
- 2
-
-
- 6
- System
- gridColor
-
- 3
- MC41AA
-
-
- 34
- -566198272
-
-
- 1
- 15
- 0
- YES
- 0
- 1
-
-
- {{1, 17}, {412, 116}}
-
-
-
- _NS:11
-
-
- 4
-
-
-
- -2147483392
- {{455, 17}, {15, 35}}
-
-
-
- _NS:58
- NO
-
- _doScroller:
- 0.88888888888888884
-
-
-
- -2147483392
- {{1, 48}, {94, 15}}
-
-
-
- _NS:60
- NO
- 1
-
- _doScroller:
- 0.8392857142857143
-
-
-
- 2304
-
-
-
- {{1, 0}, {412, 17}}
-
-
-
- _NS:15
-
-
- 4
-
-
-
- {{373, 134}, {414, 134}}
-
-
-
- _NS:9
- {750, 750}
- 133682
-
-
-
-
-
- QSAAAEEgAABCEAAAQhAAAA
- 0.25
- 4
- 1
-
-
-
- 268
- {{535, 261}, {90, 32}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
- Remove
-
- _NS:9
-
- -2038284288
- 129
-
-
- 200
- 25
-
- NO
-
-
-
-
- 268
- {{469, 261}, {66, 32}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
- Add
-
- _NS:9
-
- -2038284288
- 129
-
-
- 200
- 25
-
- NO
-
-
-
- 268
- {{14, 297}, {40, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Video
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{14, 142}, {41, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Audio
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 12
- {{17, 295}, {248, 5}}
-
-
-
- _NS:9
- {0, 0}
-
- 67108864
- 0
- Box
-
-
-
- 3
- MCAwLjgwMDAwMDAxMTkAA
-
-
- 3
- 2
- 0
- NO
-
-
-
- 12
- {{17, 140}, {248, 5}}
-
-
-
- _NS:9
- {0, 0}
-
- 67108864
- 0
- Box
-
-
-
- 3
- MCAwLjgwMDAwMDAxMTkAA
-
-
- 3
- 2
- 0
- NO
-
-
-
- {{10, 33}, {804, 317}}
-
-
-
- _NS:11
-
- Settings
-
-
-
-
- 2
-
-
- 256
-
-
-
- 268
-
-
-
- 2304
-
-
-
- 256
-
- {968, 285}
-
-
- _NS:13
- YES
- NO
- YES
-
-
-
- -2147483392
- {{224, 0}, {16, 17}}
-
-
- _NS:19
-
-
-
- 87.671875
- 40
- 1000
-
-
- 337641536
- 2048
- Text Cell
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 60.984375
- 40
- 1000
-
-
- 337641536
- -2147481600
- Text Cell
-
-
-
-
-
-
-
- -∞
-
-
- +∞
-
- #.##
- #.##
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- NO
- YES
- YES
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 77.69140625
- 10
- 3.4028234663852886e+38
-
-
- 337641536
- -2147481600
- Text Cell
-
-
-
-
-
-
-
- -∞
-
- +∞
-
- #.##
- #.##
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- NO
- NO
- YES
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 105.2578125
- 10
- 3.4028234663852886e+38
-
-
- 337641536
- 2048
- Text Cell
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 92
- 10
- 3.4028234663852886e+38
-
-
- 337641536
- 2048
- Text Cell
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 64
- 10
- 3.4028234663852886e+38
-
-
- 337641536
- 2048
- Text Cell
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 84
- 10
- 3.4028234663852886e+38
-
-
- 337641536
- -2147481600
- Text Cell
-
-
-
-
-
-
-
-
-
-
- -∞
-
- +∞
-
-
-
- #,###.##
- #,###.##
-
-
-
-
-
-
-
- NaN
-
-
-
-
-
- 3
- YES
- YES
- YES
-
- .
- ,
- YES
- NO
- YES
-
-
-
-
-
- 3
- YES
- YES
-
-
-
- 3
- 2
-
-
- 17
- 1109393408
-
-
- 0
- 15
- 0
- NO
- 0
- 1
-
-
- {{1, 17}, {968, 285}}
-
-
- _NS:11
-
-
- 4
-
-
-
- -2147483392
- {{224, 17}, {15, 102}}
-
-
- _NS:58
- NO
-
- _doScroller:
- 0.94736842105263153
-
-
-
- -2147483392
- {{1, 287}, {515, 15}}
-
-
- _NS:60
- NO
- 1
-
- _doScroller:
- 0.97908745247148288
-
-
-
- 2304
-
-
-
- {{1, 0}, {968, 17}}
-
-
-
-
- 4
-
-
-
- {{17, 16}, {970, 303}}
-
-
- _NS:9
- 133682
-
-
-
-
-
- QSAAAEEgAABBmAAAQZgAAA
- 0.25
- 4
- 1
-
-
- {{10, 33}, {804, 317}}
-
- _NS:28
-
- Status
-
-
-
-
-
-
- 0
- YES
- YES
-
-
-
-
-
- {{0, 291}, {850, 412}}
-
-
-
- _NS:13
- NSView
-
-
- {850, 703}
-
-
-
- _NS:9
- 2
-
-
- {850, 703}
-
-
-
-
- {{0, 0}, {1920, 1058}}
- {10000000000000, 10000000000000}
- YES
-
-
- AppDelegate
-
-
- NSFontManager
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
- CaptureController
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
-
- {100, 100}
- {0, 0}
- {10000, 10000}
- 2
- 0.0
- 15
-
-
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
-
- name
- type_name
- destination
- active
-
- OutputDestination
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
- YES
- YES
- YES
- YES
- YES
-
-
- key
- YES
- compare:
-
-
- YES
- key
- value
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
-
-
-
-
- terminate:
-
-
-
- 449
-
-
-
- orderFrontStandardAboutPanel:
-
-
-
- 142
-
-
-
- delegate
-
-
-
- 495
-
-
-
- performMiniaturize:
-
-
-
- 37
-
-
-
- arrangeInFront:
-
-
-
- 39
-
-
-
- undo:
-
-
-
- 223
-
-
-
- copy:
-
-
-
- 224
-
-
-
- paste:
-
-
-
- 226
-
-
-
- cut:
-
-
-
- 228
-
-
-
- redo:
-
-
-
- 231
-
-
-
- selectAll:
-
-
-
- 232
-
-
-
- delete:
-
-
-
- 235
-
-
-
- performZoom:
-
-
-
- 240
-
-
-
- hide:
-
-
-
- 367
-
-
-
- hideOtherApplications:
-
-
-
- 368
-
-
-
- unhideAllApplications:
-
-
-
- 370
-
-
-
- pasteAsPlainText:
-
-
-
- 486
-
-
-
- showHelp:
-
-
-
- 493
-
-
-
- window
-
-
-
- 532
-
-
-
- captureController
-
-
-
- 1732
-
-
-
- selectedObject: self.videoCaptureSession.activeVideoDevice
-
-
-
-
-
- selectedObject: self.videoCaptureSession.activeVideoDevice
- selectedObject
- self.videoCaptureSession.activeVideoDevice
-
- 2
-
-
- 2108
-
-
-
- contentValues: arrangedObjects.captureName
-
-
-
-
-
- contentValues: arrangedObjects.captureName
- contentValues
- arrangedObjects.captureName
-
- 2
-
-
- 1053
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 1027
-
-
-
- contentArray: self.videoCaptureSession.availableVideoDevices
-
-
-
-
-
- contentArray: self.videoCaptureSession.availableVideoDevices
- contentArray
- self.videoCaptureSession.availableVideoDevices
- 2
-
-
- 2047
-
-
-
- value: captureWidth
-
-
-
-
-
- value: captureWidth
- value
- captureWidth
-
- NSContinuouslyUpdatesValue
-
-
- 2
-
-
- 1737
-
-
-
- value: captureHeight
-
-
-
-
-
- value: captureHeight
- value
- captureHeight
- 2
-
-
- 1723
-
-
-
- videoRefresh:
-
-
-
- 1059
-
-
-
- removeDestination:
-
-
-
- 1750
-
-
-
- openCreateSheet:
-
-
-
- 1503
-
-
-
- streamButtonPushed:
-
-
-
- 825
-
-
-
- previewCtx
-
-
-
- 3493
-
-
-
- openAVFAdvanced:
-
-
-
- 3639
-
-
-
- openCompressPanel:
-
-
-
- 3643
-
-
-
- openAdvancedPrefPanel:
-
-
-
- 3892
-
-
-
- contentArray: self.audioCaptureDevices
-
-
-
-
-
- contentArray: self.audioCaptureDevices
- contentArray
- self.audioCaptureDevices
- 2
-
-
- 898
-
-
-
- selectedObject: self.selectedAudioCapture
-
-
-
-
-
- selectedObject: self.selectedAudioCapture
- selectedObject
- self.selectedAudioCapture
-
- 2
-
-
- 935
-
-
-
- contentValues: arrangedObjects.localizedName
-
-
-
-
-
- contentValues: arrangedObjects.localizedName
- contentValues
- arrangedObjects.localizedName
-
- 2
-
-
- 934
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 929
-
-
-
- value: self.videoCaptureSession.videoCaptureFPS
-
-
-
-
-
- value: self.videoCaptureSession.videoCaptureFPS
- value
- self.videoCaptureSession.videoCaptureFPS
-
-
-
-
- 2
-
-
- 2134
-
-
-
- value: self.audioBitrate
-
-
-
-
-
- value: self.audioBitrate
- value
- self.audioBitrate
- 2
-
-
- 1729
-
-
-
- value: self.audioSamplerate
-
-
-
-
-
- value: self.audioSamplerate
- value
- self.audioSamplerate
- 2
-
-
- 1731
-
-
-
- selectionIndexes: selectionIndexes
-
-
-
-
-
- selectionIndexes: selectionIndexes
- selectionIndexes
- selectionIndexes
-
- 2
-
-
- 1741
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 1526
-
-
-
- value: arrangedObjects.active
-
-
-
-
-
- value: arrangedObjects.active
- value
- arrangedObjects.active
- 2
-
-
- 1926
-
-
-
- value: arrangedObjects.name
-
-
-
-
-
- value: arrangedObjects.name
- value
- arrangedObjects.name
- 2
-
-
- 1917
-
-
-
- value: arrangedObjects.type_name
-
-
-
-
-
- value: arrangedObjects.type_name
- value
- arrangedObjects.type_name
- 2
-
-
- 1921
-
-
-
- contentArray: captureDestinations
-
-
-
-
-
- contentArray: captureDestinations
- contentArray
- captureDestinations
- 2
-
-
- 1527
-
-
-
- selectionIndexes: selectedCaptureDestinations
-
-
-
-
-
- selectionIndexes: selectedCaptureDestinations
- selectionIndexes
- selectedCaptureDestinations
- 2
-
-
- 1743
-
-
-
- contentValues: arrangedObjects.value
-
-
-
-
-
- contentValues: arrangedObjects.value
- contentValues
- arrangedObjects.value
-
- 2
-
-
- 1520
-
-
-
- contentObjects: arrangedObjects.key
-
-
-
-
-
- contentObjects: arrangedObjects.key
- contentObjects
- arrangedObjects.key
-
- 2
-
-
- 1519
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 1512
-
-
-
- selectedObject: selectedDestinationType
-
-
-
-
-
- selectedObject: selectedDestinationType
- selectedObject
- selectedDestinationType
-
- 2
-
-
- 1525
-
-
-
- contentDictionary: self.destinationTypes
-
-
-
-
-
- contentDictionary: self.destinationTypes
- contentDictionary
- self.destinationTypes
- 2
-
-
- 1506
-
-
-
- selectedObject: self.selectedVideoType
-
-
-
-
-
- selectedObject: self.selectedVideoType
- selectedObject
- self.selectedVideoType
-
- 2
-
-
- 1791
-
-
-
- content: self.videoTypes
-
-
-
-
-
- content: self.videoTypes
- content
- self.videoTypes
- 2
-
-
- 1789
-
-
-
- value: arrangedObjects.destination
-
-
-
-
-
- value: arrangedObjects.destination
- value
- arrangedObjects.destination
- 2
-
-
- 1920
-
-
-
- contentArray: self.videoCaptureSession.videoFormats
-
-
-
-
-
- contentArray: self.videoCaptureSession.videoFormats
- contentArray
- self.videoCaptureSession.videoFormats
-
- NSRaisesForNotApplicableKeys
-
-
- 2
-
-
- 2203
-
-
-
- contentArray: self.videoCaptureSession.videoFramerates
-
-
-
-
-
- contentArray: self.videoCaptureSession.videoFramerates
- contentArray
- self.videoCaptureSession.videoFramerates
-
- NSRaisesForNotApplicableKeys
-
-
- 2
-
-
- 2202
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 2262
-
-
-
- value: arrangedObjects.name
-
-
-
-
-
- value: arrangedObjects.name
- value
- arrangedObjects.name
- 2
-
-
- 2264
-
-
-
- value: arrangedObjects.ffmpeg_out.input_framerate
-
-
-
-
-
- value: arrangedObjects.ffmpeg_out.input_framerate
- value
- arrangedObjects.ffmpeg_out.input_framerate
- 2
-
-
- 2270
-
-
-
- value: arrangedObjects.ffmpeg_out.output_framerate
-
-
-
-
-
- value: arrangedObjects.ffmpeg_out.output_framerate
- value
- arrangedObjects.ffmpeg_out.output_framerate
- 2
-
-
- 2272
-
-
-
- value: arrangedObjects.ffmpeg_out.buffered_frame_count
-
-
-
-
-
- value: arrangedObjects.ffmpeg_out.buffered_frame_count
- value
- arrangedObjects.ffmpeg_out.buffered_frame_count
- 2
-
-
- 2273
-
-
-
- value: arrangedObjects.ffmpeg_out.buffered_frame_size
-
-
-
-
-
- value: arrangedObjects.ffmpeg_out.buffered_frame_size
- value
- arrangedObjects.ffmpeg_out.buffered_frame_size
- 2
-
-
- 2274
-
-
-
- value: arrangedObjects.ffmpeg_out.output_bitrate
-
-
-
-
-
- value: arrangedObjects.ffmpeg_out.output_bitrate
- value
- arrangedObjects.ffmpeg_out.output_bitrate
- 2
-
-
- 2278
-
-
-
- hidden: self.showPreview
-
-
-
-
-
- hidden: self.showPreview
- hidden
- self.showPreview
-
- NSValueTransformerName
- NSNegateBoolean
-
- 2
-
-
- 3508
-
-
-
- toggleFullscreen:
-
-
-
- 3821
-
-
-
- selectedIndex: self.selectedTabIndex
-
-
-
-
-
- selectedIndex: self.selectedTabIndex
- selectedIndex
- self.selectedTabIndex
- 2
-
-
- 3817
-
-
-
- value: self.showPreview
-
-
-
-
-
- value: self.showPreview
- value
- self.showPreview
- 2
-
-
- 3504
-
-
-
- content: self.compressorTypes
-
-
-
-
-
- content: self.compressorTypes
- content
- self.compressorTypes
- 2
-
-
- 3644
-
-
-
- selectedObject: self.selectedCompressorType
-
-
-
-
-
- selectedObject: self.selectedCompressorType
- selectedObject
- self.selectedCompressorType
-
- 2
-
-
- 3646
-
-
-
- hidden: self.videoCaptureSession.needsAdvancedVideo
-
-
-
-
-
- hidden: self.videoCaptureSession.needsAdvancedVideo
- hidden
- self.videoCaptureSession.needsAdvancedVideo
-
- NSValueTransformerName
- NSNegateBoolean
-
- 2
-
-
- 3642
-
-
-
- value: self.audioCaptureSession.previewVolume
-
-
-
-
-
- value: self.audioCaptureSession.previewVolume
- value
- self.audioCaptureSession.previewVolume
- 2
-
-
- 3891
-
-
-
- value: self.previewCtx.vsync
-
-
-
-
-
- value: self.previewCtx.vsync
- value
- self.previewCtx.vsync
- 2
-
-
- 3879
-
-
-
- value: arrangedObjects.ffmpeg_out.dropped_frame_count
-
-
-
-
-
- value: arrangedObjects.ffmpeg_out.dropped_frame_count
- value
- arrangedObjects.ffmpeg_out.dropped_frame_count
- 2
-
-
- 3896
-
-
-
- contentArray: self.arOptions
-
-
-
-
-
- contentArray: self.arOptions
- contentArray
- self.arOptions
- 2
-
-
- 3900
-
-
-
- content: self.arOptions
-
-
-
-
-
- content: self.arOptions
- content
- self.arOptions
- 2
-
-
- 3917
-
-
-
- selectedObject: self.resolutionOption
-
-
-
-
-
- selectedObject: self.resolutionOption
- selectedObject
- self.resolutionOption
-
- 2
-
-
- 3918
-
-
-
-
-
- 0
-
-
-
-
-
- -2
-
-
- File's Owner
-
-
- -1
-
-
- First Responder
-
-
- -3
-
-
- Application
-
-
- 29
-
-
-
-
-
-
-
-
-
-
-
- 19
-
-
-
-
-
-
-
- 56
-
-
-
-
-
-
-
- 217
-
-
-
-
-
-
-
- 205
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 202
-
-
-
-
- 198
-
-
-
-
- 207
-
-
-
-
- 199
-
-
-
-
- 203
-
-
-
-
- 197
-
-
-
-
- 206
-
-
-
-
- 215
-
-
-
-
- 57
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 58
-
-
-
-
- 134
-
-
-
-
- 150
-
-
-
-
- 136
-
-
-
-
- 144
-
-
-
-
- 129
-
-
-
-
- 143
-
-
-
-
- 236
-
-
-
-
- 131
-
-
-
-
-
-
-
- 149
-
-
-
-
- 145
-
-
-
-
- 130
-
-
-
-
- 24
-
-
-
-
-
-
-
-
-
-
- 92
-
-
-
-
- 5
-
-
-
-
- 239
-
-
-
-
- 23
-
-
-
-
- 295
-
-
-
-
-
-
-
- 296
-
-
-
-
-
-
-
- 371
-
-
-
-
-
-
-
- 372
-
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- 0.0
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- 0.0
-
- 1000
-
- 8
- 29
- 3
-
-
-
-
-
-
- 420
-
-
-
-
- 485
-
-
-
-
- 490
-
-
-
-
-
-
-
- 491
-
-
-
-
-
-
-
- 492
-
-
-
-
- 494
-
-
-
-
- 548
-
-
- VideoDeviceArrayController
-
-
- 555
-
-
-
-
- 816
-
-
-
-
- 896
-
-
- AudioDeviceArrayController
-
-
- 1235
-
-
-
-
- 1431
-
-
- OutputDestinationArrayController
-
-
- 1504
-
-
- destinationTypesController
-
-
- 2102
-
-
- videoFormatArrayController
-
-
- 2109
-
-
- videoFrameratesArrayController
-
-
- 2368
-
-
-
-
-
-
-
-
- 2369
-
-
-
-
-
- 5
- 0
-
- 5
- 1
-
- -33
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- -178
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- -154
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- -197
-
- 1000
-
- 3
- 9
- 3
-
-
-
-
-
- 2379
-
-
-
-
- 2381
-
-
-
-
- 2383
-
-
-
-
- 2411
-
-
-
-
- 5
- 0
-
- 5
- 1
-
- 277
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- 166
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 6
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 43
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- 200
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- 183
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 31
-
- 1000
-
- 3
- 9
- 3
-
-
-
-
-
-
-
-
-
- 2418
-
-
-
-
- 2419
-
-
-
-
- 2420
-
-
-
-
- 2417
-
-
-
-
- 2370
-
-
-
-
- 9
- 0
-
- 9
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 4
- 0
-
- 4
- 1
-
- 14
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 3
- 0
-
- 4
- 1
-
- 10
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
-
-
-
-
- 3218
-
-
-
-
- 3286
-
-
-
-
-
-
-
-
- 3287
-
-
-
-
-
-
-
- 3288
-
-
-
-
-
-
-
- 3289
-
-
-
-
-
- 6
- 0
-
- 6
- 1
-
- -183
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- 16
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- -2
-
- 1000
-
- 3
- 9
- 3
-
-
-
-
-
- 3290
-
-
-
-
- 5
- 0
-
- 6
- 1
-
- 12
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 6
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 49
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 373
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 239
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 6
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 4
- 0
-
- 4
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 165
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 192
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 6
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- 158
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 105
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 78
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 99
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- 50
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 3
- 0
-
- 4
- 1
-
- 8
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 11
- 0
-
- 11
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 5
- 0
-
- 5
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 3
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 17
-
- 1000
-
- 8
- 29
- 3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 536
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 140
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 537
-
-
-
-
-
-
-
- 710
-
-
-
-
- 538
-
-
-
-
-
-
-
-
-
- 539
-
-
-
-
- 540
-
-
-
-
- 541
-
-
-
-
- 613
-
-
-
-
-
- 8
- 0
-
- 0
- 1
-
- 26
-
- 1000
-
- 3
- 9
- 1
-
-
-
- 7
- 0
-
- 0
- 1
-
- 49
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 614
-
-
-
-
- 738
-
-
-
-
- 648
-
-
-
-
-
-
-
- 649
-
-
-
-
- 620
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 46
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 621
-
-
-
-
-
-
-
- 2665
-
-
-
-
- 811
-
-
-
-
- 625
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 47
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 626
-
-
-
-
-
-
-
- 724
-
-
-
-
- 812
-
-
-
-
- 639
-
-
-
-
-
-
-
- 640
-
-
-
-
- 1055
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 26
-
- 1000
-
- 3
- 9
- 1
-
-
-
- 8
- 0
-
- 0
- 1
-
- 17
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 1056
-
-
-
-
- 1774
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 94
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 1775
-
-
-
-
-
-
-
- 1776
-
-
-
-
-
-
-
-
-
- 1777
-
-
-
-
- 1778
-
-
-
-
- 1779
-
-
-
-
- 1784
-
-
-
-
-
- 8
- 0
-
- 0
- 1
-
- 17
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 1785
-
-
-
-
- 1987
-
-
-
-
-
-
-
- 1988
-
-
-
-
- 2587
-
-
-
-
-
-
-
- 2588
-
-
-
-
- 2597
-
-
-
-
-
-
-
- 2598
-
-
-
-
- 951
-
-
-
-
-
-
-
- 952
-
-
-
-
-
-
-
- 953
-
-
-
-
- 899
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 129
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 900
-
-
-
-
-
-
-
- 928
-
-
-
-
- 901
-
-
-
-
-
-
-
-
-
- 902
-
-
-
-
- 903
-
-
-
-
- 904
-
-
-
-
- 919
-
-
-
-
-
-
-
- 920
-
-
-
-
- 1098
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 96
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 1099
-
-
-
-
-
-
-
- 1101
-
-
-
-
- 1100
-
-
-
-
- 1104
-
-
-
-
-
-
-
- 1105
-
-
-
-
- 1108
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 75
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 1109
-
-
-
-
- 2593
-
-
-
-
- 1112
-
-
-
-
-
-
-
- 1113
-
-
-
-
-
-
-
- 1114
-
-
-
-
- 1239
-
-
-
-
-
-
-
-
-
-
- 1240
-
-
-
-
-
-
-
-
-
-
- 1241
-
-
-
-
- 1242
-
-
-
-
- 1243
-
-
-
-
- 1244
-
-
-
-
-
-
-
- 1245
-
-
-
-
-
-
-
- 1290
-
-
-
-
-
-
-
- 1910
-
-
-
-
-
-
-
- 1911
-
-
-
-
- 1291
-
-
-
-
- 1246
-
-
-
-
- 1922
-
-
-
-
- 1744
-
-
-
-
-
-
-
- 1745
-
-
-
-
- 1471
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 94
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 1472
-
-
-
-
-
-
-
- 1479
-
-
-
-
- 1473
-
-
-
-
-
-
-
-
-
- 1474
-
-
-
-
- 1475
-
-
-
-
- 1476
-
-
-
-
- 1499
-
-
-
-
-
-
-
- 1500
-
-
-
-
- 3315
-
-
-
-
- 3323
-
-
-
-
- 3330
-
-
-
-
- 3332
-
-
-
-
- 3349
-
-
-
-
- 3356
-
-
-
-
- 3357
-
-
-
-
- 3362
-
-
-
-
- 3366
-
-
-
-
- 597
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 70
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
-
- 603
-
-
-
-
- 598
-
-
-
-
- 3383
-
-
-
-
- 3405
-
-
-
-
- 3406
-
-
-
-
- 3457
-
-
-
-
- 2212
-
-
-
-
-
-
-
-
-
-
- 2213
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2214
-
-
-
-
- 2216
-
-
-
-
- 2261
-
-
-
-
- 2217
-
-
-
-
-
-
-
- 2218
-
-
-
-
-
-
-
- 2255
-
-
-
-
-
-
-
- 2257
-
-
-
-
-
-
-
- 2259
-
-
-
-
-
-
-
- 2275
-
-
-
-
-
-
-
- 2276
-
-
-
-
-
-
-
- 2260
-
-
-
-
- 2258
-
-
-
-
- 2256
-
-
-
-
-
-
-
- 2219
-
-
-
-
-
-
-
- 2220
-
-
-
-
- 3463
-
-
-
-
- 3492
-
-
-
-
- 3495
-
-
-
-
-
-
-
- 3496
-
-
-
-
- 3499
-
-
-
-
- 3525
-
-
-
-
- 3526
-
-
-
-
- 3533
-
-
-
-
- 3553
-
-
-
-
-
- 8
- 0
-
- 0
- 1
-
- 17
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 3554
-
-
-
-
- 3558
-
-
-
-
- 3559
-
-
-
-
-
-
-
- 3561
-
-
-
-
-
-
-
- 3562
-
-
-
-
-
-
-
-
-
- 3563
-
-
-
-
- 3564
-
-
-
-
- 3565
-
-
-
-
- 3602
-
-
-
-
-
-
-
- 3605
-
-
-
-
- 3613
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 26
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 3614
-
-
-
-
- 3615
-
-
-
-
- 3618
-
-
-
-
- 3619
-
-
-
-
- 3623
-
-
-
-
- 3630
-
-
-
-
- 3303
-
-
-
-
- 3382
-
-
-
-
- 3304
-
-
-
-
- 3305
-
-
-
-
- 3648
-
-
-
-
- 3652
-
-
-
-
- 3653
-
-
-
-
- 3656
-
-
-
-
- 3657
-
-
-
-
- 3658
-
-
-
-
- 3675
-
-
-
-
- 3677
-
-
-
-
- 3692
-
-
-
-
- 3700
-
-
-
-
- 3702
-
-
-
-
- 3711
-
-
-
-
- 3714
-
-
-
-
- 3715
-
-
-
-
- 3716
-
-
-
-
- 3724
-
-
-
-
- 3727
-
-
-
-
- 3730
-
-
-
-
- 3731
-
-
-
-
- 3733
-
-
-
-
- 3735
-
-
-
-
- 3736
-
-
-
-
- 3748
-
-
-
-
- 3749
-
-
-
-
- 3755
-
-
-
-
- 3758
-
-
-
-
- 3759
-
-
-
-
- 3761
-
-
-
-
- 3762
-
-
-
-
- 3765
-
-
-
-
- 3767
-
-
-
-
- 3768
-
-
-
-
- 3769
-
-
-
-
- 3770
-
-
-
-
- 3771
-
-
-
-
- 3774
-
-
-
-
- 3775
-
-
-
-
- 3776
-
-
-
-
- 3779
-
-
-
-
- 3783
-
-
-
-
- 3785
-
-
-
-
- 3788
-
-
-
-
- 3795
-
-
-
-
- 3796
-
-
-
-
- 3797
-
-
-
-
- 3798
-
-
-
-
- 3799
-
-
-
-
- 3800
-
-
-
-
- 3802
-
-
-
-
- 3804
-
-
-
-
- 3806
-
-
-
-
- 3807
-
-
-
-
- 3809
-
-
-
-
- 3810
-
-
-
-
- 3811
-
-
-
-
- 3812
-
-
-
-
- 3814
-
-
-
-
- 3818
-
-
-
-
- 3819
-
-
-
-
- 2416
-
-
-
-
- 3500
-
-
-
-
- 2451
-
-
-
-
- 2448
-
-
-
-
- 3870
-
-
-
-
- 3871
-
-
-
-
- 3873
-
-
-
-
- 3874
-
-
-
-
-
-
-
- 3875
-
-
-
-
- 3876
-
-
-
-
- 3877
-
-
-
-
- 3861
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 92
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 3865
-
-
-
-
- 3862
-
-
-
-
- 3707
-
-
-
-
- 2449
-
-
-
-
- 3888
-
-
-
-
- 3889
-
-
-
-
- 3890
-
-
-
-
- 3893
-
-
-
-
-
-
-
- 3894
-
-
-
-
- 3897
-
-
- AspectOptionsController
-
-
- 3901
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 95
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 3902
-
-
-
-
-
-
-
- 3903
-
-
-
-
-
-
-
-
-
- 3904
-
-
-
-
- 3905
-
-
-
-
- 3906
-
-
-
-
- 3907
-
-
-
-
- 3908
-
-
-
-
- 3909
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
-
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- InitialTabViewItem
-
- InitialTabViewItem
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- {{380, 496}, {480, 360}}
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- 3918
-
-
-
-
- AppDelegate
- NSObject
-
- CaptureController
- NSWindow
-
-
-
- captureController
- CaptureController
-
-
- window
- NSWindow
-
-
-
- IBProjectSource
- ./Classes/AppDelegate.h
-
-
-
- CaptureController
- NSObject
-
- id
- id
- id
- id
- id
- id
- id
- id
- id
- id
- id
- id
- id
-
-
-
- addStreamingService:
- id
-
-
- closeAVFAdvanced:
- id
-
-
- closeAdvancedPrefPanel:
- id
-
-
- closeCompressPanel:
- id
-
-
- closeCreateSheet:
- id
-
-
- ffmpegPathPushed:
- id
-
-
- openAVFAdvanced:
- id
-
-
- openAdvancedPrefPanel:
- id
-
-
- openCompressPanel:
- id
-
-
- openCreateSheet:
- id
-
-
- removeDestination:
- id
-
-
- streamButtonPushed:
- id
-
-
- videoRefresh:
- id
-
-
-
- NSWindow
- NSWindow
- NSWindow
- NSWindow
- PreviewView
-
-
-
- advancedPrefPanel
- NSWindow
-
-
- avfPanel
- NSWindow
-
-
- compressPanel
- NSWindow
-
-
- createSheet
- NSWindow
-
-
- previewCtx
- PreviewView
-
-
-
- IBProjectSource
- ./Classes/CaptureController.h
-
-
-
- NSLayoutConstraint
- NSObject
-
- IBProjectSource
- ./Classes/NSLayoutConstraint.h
-
-
-
- PreviewView
- NSOpenGLView
-
- toggleFullscreen:
- id
-
-
- toggleFullscreen:
-
- toggleFullscreen:
- id
-
-
-
- IBProjectSource
- ./Classes/PreviewView.h
-
-
-
-
- 0
- IBCocoaFramework
- YES
- 3
-
- {32, 32}
- {11, 11}
- {10, 3}
- {10, 12}
- {15, 15}
-
- YES
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NSNegateBoolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ name
+ type_name
+ destination
+ active
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/QTCaptureHelper/QTCaptureHelper-Info.plist b/QTCaptureHelper/QTCaptureHelper-Info.plist
index 9dc45c8c..b96d3b18 100644
--- a/QTCaptureHelper/QTCaptureHelper-Info.plist
+++ b/QTCaptureHelper/QTCaptureHelper-Info.plist
@@ -26,6 +26,8 @@
XPCService
+ ProcessType
+ Adaptive
RunLoopType
NSRunLoop
ServiceType
diff --git a/QTCaptureHelper/XPCListenerDelegate.h b/QTCaptureHelper/XPCListenerDelegate.h
index 13aee41a..db9f3495 100644
--- a/QTCaptureHelper/XPCListenerDelegate.h
+++ b/QTCaptureHelper/XPCListenerDelegate.h
@@ -19,6 +19,8 @@
QTCaptureDecompressedVideoOutput *captureOutput;
id xpcProxy;
dispatch_queue_t frameQueue;
+ CVImageBufferRef _currentFrame;
+
}
diff --git a/QTCaptureHelper/XPCListenerDelegate.m b/QTCaptureHelper/XPCListenerDelegate.m
index c19ec542..97a76f96 100644
--- a/QTCaptureHelper/XPCListenerDelegate.m
+++ b/QTCaptureHelper/XPCListenerDelegate.m
@@ -31,6 +31,7 @@
- (void) dealloc
{
+ NSLog(@"HOLY SHIT DEALLOC");
if (self.xpcProxy)
{
[self.xpcProxy release];
@@ -45,6 +46,7 @@
- (BOOL) listener:(NSXPCListener *)listener shouldAcceptNewConnection:(NSXPCConnection *)newConnection
{
+ NSLog(@"SHOULD ACCEPT NEW CONNECTION\n");
NSXPCInterface *helperInterface = [[NSXPCInterface interfaceWithProtocol:@protocol(QTHelperProtocol)] retain];
NSXPCInterface *masterInterface = [[NSXPCInterface interfaceWithProtocol:@protocol(CapturedFrameProtocol)] retain];
@@ -66,6 +68,7 @@
- (void) listCaptureDevices:(void (^)(NSArray *r_devices))reply
{
+
NSArray *devices = [QTCaptureDevice inputDevicesWithMediaType:QTMediaTypeVideo];
NSLog(@"DEVICES IN HELPER %@", devices);
@@ -79,7 +82,7 @@
}
- [devices release];
+
reply((NSArray *)retArray);
[retArray release];
}
@@ -141,7 +144,7 @@
NSMutableDictionary *pbAttrs = [NSMutableDictionary dictionaryWithObject:ioAttrs
forKey: (NSString*)kCVPixelBufferIOSurfacePropertiesKey];
- [pbAttrs setObject: @[@(kCVPixelFormatType_422YpCbCr8), @(kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange), @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)]
+ [pbAttrs setObject: @[@(kCVPixelFormatType_422YpCbCr8), @(kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange), @(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)]
forKey:(NSString *)kCVPixelBufferPixelFormatTypeKey];
[self.captureOutput setPixelBufferAttributes:pbAttrs];
@@ -177,7 +180,10 @@
- (void)captureOutput:(QTCaptureOutput *)captureOutput didOutputVideoFrame:(CVImageBufferRef)videoFrame withSampleBuffer:(QTSampleBuffer *)sampleBuffer fromConnection:(QTCaptureConnection *)connection
{
+
CVPixelBufferRetain(videoFrame);
+
+
dispatch_async(frameQueue, ^{
[self sendFrame:videoFrame];
});
diff --git a/StreamServicePanel.xib b/StreamServicePanel.xib
index 8ee83766..51b912d3 100644
--- a/StreamServicePanel.xib
+++ b/StreamServicePanel.xib
@@ -1,1167 +1,146 @@
-
-
-
- 1080
- 12C54
- 2840
- 1187.34
- 625.00
-
- com.apple.InterfaceBuilder.CocoaPlugin
- 2840
-
-
- IBNSLayoutConstraint
- NSArrayController
- NSButton
- NSButtonCell
- NSCustomObject
- NSMenu
- NSMenuItem
- NSPopUpButton
- NSPopUpButtonCell
- NSTextField
- NSTextFieldCell
- NSUserDefaultsController
- NSView
- NSWindowTemplate
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
- PluginDependencyRecalculationVersion
-
-
-
-
- CaptureController
-
-
- FirstResponder
-
-
- NSApplication
-
-
- 15
- 2
- {{196, 240}, {333, 186}}
- 544735232
- Window
- NSWindow
-
-
-
-
- 256
-
-
-
- 268
- {{14, 13}, {66, 32}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
- Add
-
- LucidaGrande
- 13
- 1044
-
- _NS:9
-
- -2038284288
- 129
-
-
- 200
- 25
-
- NO
-
-
-
- 268
- {{80, 13}, {82, 32}}
-
-
-
- _NS:9
- YES
-
- 67108864
- 134217728
- Cancel
-
- _NS:9
-
- -2038284288
- 129
-
- Gw
- 200
- 25
-
- NO
-
-
-
- 268
- {{17, 149}, {43, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Server
-
- _NS:1535
-
-
- 6
- System
- controlColor
-
- 3
- MC42NjY2NjY2NjY3AA
-
-
-
- 6
- System
- controlTextColor
-
- 3
- MAA
-
-
-
- NO
-
-
-
- 268
- {{17, 111}, {27, 17}}
-
-
-
- _NS:1535
- YES
-
- 68157504
- 272630784
- Key
-
- _NS:1535
-
-
-
-
- NO
-
-
-
- 268
- {{75, 108}, {183, 22}}
-
-
-
- _NS:9
- YES
-
- -1804599231
- 272630784
-
-
- _NS:9
-
- YES
-
- 6
- System
- textBackgroundColor
-
- 3
- MQA
-
-
-
- 6
- System
- textColor
-
-
-
- NO
-
-
-
- {333, 186}
-
-
-
-
- {{0, 0}, {1920, 1178}}
- {10000000000000, 10000000000000}
- YES
-
-
-
- YES
-
- YES
- YES
- YES
- YES
- YES
-
-
- YES
-
-
-
-
-
-
- createSheet
-
-
-
- 13
-
-
-
- closeCreateSheet:
-
-
-
- 14
-
-
-
- addStreamingService:
-
-
-
- 46
-
-
-
- value: streamingServiceKey
-
-
-
-
-
- value: streamingServiceKey
- value
- streamingServiceKey
-
- NSContinuouslyUpdatesValue
-
-
- 2
-
-
- 48
-
-
-
- content: arrangedObjects
-
-
-
-
-
- content: arrangedObjects
- content
- arrangedObjects
- 2
-
-
- 88
-
-
-
- contentObjects: arrangedObjects.destination
-
-
-
-
-
- contentObjects: arrangedObjects.destination
- contentObjects
- arrangedObjects.destination
-
- 2
-
-
- 110
-
-
-
- contentValues: arrangedObjects.name
-
-
-
-
-
- contentValues: arrangedObjects.name
- contentValues
- arrangedObjects.name
-
- 2
-
-
- 111
-
-
-
- selectedObject: self.streamingDestination
-
-
-
-
-
- selectedObject: self.streamingDestination
- selectedObject
- self.streamingDestination
-
- 2
-
-
- 112
-
-
-
- contentArray: self.streamPanelDestinations
-
-
-
-
-
- contentArray: self.streamPanelDestinations
- contentArray
- self.streamPanelDestinations
- 2
-
-
- 87
-
-
-
-
-
- 0
-
-
-
-
-
- -2
-
-
- File's Owner
-
-
- -1
-
-
- First Responder
-
-
- -3
-
-
- Application
-
-
- 1
-
-
-
-
-
-
-
- 2
-
-
-
-
-
- 5
- 0
-
- 6
- 1
-
- 12
-
- 1000
-
- 6
- 24
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 4
- 0
-
- 4
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 9
- 0
-
- 9
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 10
- 0
-
- 10
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 56
-
- 1000
-
- 3
- 9
- 3
-
-
-
- 9
- 0
-
- 9
- 1
-
- 0.0
-
- 1000
-
- 5
- 22
- 2
-
-
-
- 6
- 0
-
- 6
- 1
-
- 0.0
-
- 1000
-
- 6
- 24
- 2
-
-
-
- 3
- 0
-
- 3
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 5
- 0
-
- 5
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
- 3
- 0
-
- 3
- 1
-
- 20
-
- 1000
-
- 8
- 29
- 3
-
-
-
-
-
-
-
-
-
-
- 3
-
-
-
-
-
-
-
- 4
-
-
-
-
- 5
-
-
-
-
- 6
-
-
-
-
- 7
-
-
-
-
-
-
-
- 8
-
-
-
-
- 9
-
-
-
-
- 12
-
-
-
-
- 15
-
-
-
-
-
-
-
- 16
-
-
-
-
- 17
-
-
-
-
- 19
-
-
-
-
-
-
-
- 20
-
-
-
-
- 24
-
-
-
-
- 25
-
-
-
-
- 33
-
-
-
-
-
- 7
- 0
-
- 0
- 1
-
- 183
-
- 1000
-
- 3
- 9
- 1
-
-
-
-
-
- 34
-
-
-
-
- 62
-
-
-
-
- 63
-
-
-
-
- 64
-
-
-
-
-
-
-
- 65
-
-
-
-
-
-
-
- 66
-
-
-
-
-
-
-
-
-
- 67
-
-
-
-
- 68
-
-
-
-
- 69
-
-
-
-
- 70
-
-
-
-
- 71
-
-
-
-
-
-
-
- 72
-
-
-
-
-
-
-
- 73
-
-
-
-
-
-
-
-
-
- 74
-
-
-
-
- 75
-
-
-
-
- 76
-
-
-
-
- 79
-
-
-
-
- 80
-
-
-
-
- 81
-
-
-
-
- 82
-
-
-
-
- 83
-
-
- SteamDestinationsArrayController
-
-
- 84
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- {{357, 418}, {480, 270}}
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
- com.apple.InterfaceBuilder.CocoaPlugin
-
-
-
-
-
- 112
-
-
-
-
- CaptureController
- NSObject
-
- id
- id
- id
- id
- id
- id
-
-
-
- addStreamingService:
- id
-
-
- closeCreateSheet:
- id
-
-
- openCreateSheet:
- id
-
-
- removeDestination:
- id
-
-
- streamButtonPushed:
- id
-
-
- videoRefresh:
- id
-
-
-
- NSWindow
- PreviewView
-
-
-
- createSheet
- NSWindow
-
-
- previewCtx
- PreviewView
-
-
-
- IBProjectSource
- ./Classes/CaptureController.h
-
-
-
- NSLayoutConstraint
- NSObject
-
- IBProjectSource
- ./Classes/NSLayoutConstraint.h
-
-
-
- PreviewView
- NSOpenGLView
-
- IBProjectSource
- ./Classes/PreviewView.h
-
-
-
-
- 0
- IBCocoaFramework
- YES
- 3
-
- {11, 11}
- {10, 3}
-
- YES
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file