Commit graph

239 commits

Author SHA1 Message Date
Zakk
d36a6a445d Use proper audio format (with channel layout) when creating pcm player inputs 2020-04-18 07:25:45 -04:00
Zakk
a0efc75baa IF a layout source is doing auto-cropping to a contained source, reset the crop rectangle if no contained input matches the pattern 2020-04-17 19:29:24 -04:00
Zakk
768c139d36 Initialize WKWebView on main thread since apparently it can't be initialized on background threads at all 2020-04-17 19:18:48 -04:00
Zakk
db39e676f3 File input always creates attributed text even if the file is plain text. Stops File input from clearing attributed text and then setting plain text, which caused double layer updates per cycle, one with a blank/nil value 2020-04-17 17:59:24 -04:00
Zakk
e380430968 Set layer delegate when image path changes. 2020-04-13 20:24:50 -04:00
Zakk
f13e2d46d8 Remote test/random?!? colorspace in AVcapture 2020-04-13 19:50:39 -04:00
Zakk
16564b3780 Use a single queue for all text file/file watch operations. Prevents different async queues from running over one another 2020-04-09 19:13:58 -04:00
Zakk
c5bbb1b48a Convert all compressors to use a producer/consumer thread model (VTCompressionSessions sometimes block!)
When restoring an NDI source, asynchronously wait for the stored source name to appear on the network; the underlying framework doesn't populate the available list immediately on program start.
Don't double-restore live layout on launch.
If a input is designated as 'allowDedup' do not cache it unless the user explicitly checks the cache setting to on
2020-04-07 18:26:13 -04:00
Zakk
51e4356993 Initial work on clean/modernization of the audio engine.
Audio Graph now keeps track of connections via connection objects.
Connecting nodes now requires an AudioFormat, and the format is set on both ends of the connection. No more explicit setting of stream formats.
CAMultAudioPCM is now based on AVAudioPCMBuffer
Most instances of AudioStreamBasicDescription are replaced with AVAudioFormat
2020-02-21 08:55:40 -05:00
Zakk
4226e7facc Update TPCircularBuffer to get rid of deprecation warnings
Fix some warnings
2020-02-03 03:24:09 -05:00
Zakk
ec9e3ab52c Limit window capture sources to desktop windows (no menu bar elements etc) 2019-12-18 11:17:17 -05:00
Zakk
690b5bbc29 Change stream/record button enable logic: stream button is active if ANY output is flagged stream, not if any output is EXCLUSIVELY stream enabled 2019-12-09 04:34:37 -05:00
Zakk
e71240fc85 Fix a bunch of deprecations that came along with deploy target 10.12
When a new audio device connects don't force add every device to the audio engine.
Implement layout delete event in layout capture
Various fixes for some multithread access issues
2019-12-07 22:26:28 -05:00
Zakk
9021929c56 Don't autofit/direct size a zero rectangle frame, doing so generates a runtime exception.
Protect audio graph node list from multithread access
2019-11-02 21:08:31 -04:00
Zakk
6255c32992 Don't place a 'live' pointer to output tracks in a CAMultiAudioInput's save data dictionary; copy it instead.
Text file source now supports all file types that NSAttributedString does (html, RTF/RTFD, DOC, XML etc).
Added a font size adjustment option to text file source.
2019-11-02 18:28:33 -04:00
Zakk
24f5d7e6c0 Change internal handling of staging and live views to improve consistency and reduce side-effects/order dependencies when loading and saving. 2019-10-22 14:54:16 -04:00
Zakk
9f1ad626f4 Allow multiple instances of the same hardware audio input so they can be attached to different output tracks with separate volume/effects etc.
Added a flag to audio inputs (in layouts) that toggles if they cause a new instance of a hardware input to be created, or use one that already exists (if it does)
2019-10-20 20:42:34 -04:00
Zakk
d08893309e Create multiple audio instances for layout sources: one for each output track 2019-10-17 14:33:46 -04:00
Zakk
abb0e07c19 When creating temporary/clone audio engines, mirror the system output tracks into them.
Change layout renderer back to CARenderer: SceneKit now does complex colorspace/gamma and not all capture sources provide the proper formatting to look correct.
Change layout capture source so it pretends to an OutputDestination attached to a Passthrough compressor.
Added default Passthrough compressor with noCopy set.
2019-10-16 13:21:43 -04:00
Zakk
b02687862d File text source: bounce all file writing through an async queue
Rework auto fitting so it functions on sources that don't call frame updates regularly. (example: static images)
2019-09-27 04:31:36 -04:00
Zakk
795091c2fc Improve process detection of SyphonInject captures
File based text input can now handle HTML formatted files. You need to set a style in the file for font/font size.
2019-09-26 01:32:55 -04:00
Zakk
a1cad1d7a7 Use an NSPanel for the desktop capture region selection: allows it to float over fullscreen windows in alternate spaces 2019-09-20 18:33:29 -04:00
Zakk
e4dd27c730 Add a 'shouldLoad' class method to plugins. If this returns NO the plugin is skipped.
Apple browser plugin only loaded on 10.13+

When restoring settings, only restore layout recording directory/format if the key exists (don't clobber defaults on first run)
2019-09-17 05:07:58 -04:00
Zakk
2d5e2707e6 If using metal for rendering, don't adjust the point when finding a clicked on source. 2019-09-16 00:39:44 -04:00
Zakk
59e32cff22 Send twitchAPI v5 accept headers 2019-07-26 04:35:20 -04:00
Zakk
7b2aa0416c Remove some NSLogs
Rework Desktop capture display enumeration to take into account displays with no serial number (thanks apple)
2019-06-22 04:46:21 -04:00
Zakk
fe99869347 Update settings files for localization changes Xcode was complaining about.
When restoring audio engine, don't re-attach the default output track
2019-06-06 05:54:15 -04:00
Zakk
2e8ab9c1f0 Layout transitions now default to autoFit.
Restore drag and drop functionality of layouts/inputs etc onto transition view
Inputsource autofit keeps trying until the captureSource reports a non-zero size.
2019-05-27 05:01:10 -04:00
Zakk
b69f46ac8a Layout source uses proper startEncoders call for the underlying audio engine 2019-05-25 07:42:11 -04:00
Zakk
ac8355147e Fixed some warnings.
Display capture no longer uses deprecated IOPort functions, now iterates over the IOServices and finds the display via serial number.
Display capture now uses CGDisplay services UUID to identify displays.
2019-02-28 04:33:43 -05:00
Zakk
0954c9025c Removed some NSLogs.
Don't spam observers/mouseevents on an already moused-on source
2019-02-24 05:22:58 -05:00
Zakk
499343e7d5 Do proper macOS version check for CALayer update style in AVFoundation capture 2019-02-24 02:35:33 -05:00
Zakk
44ea53c11e Webcam capture limits the 'best format' choices based on the size of the currently active layout. It tries to match the resolution exactly, without exceeding it.
Some minor changes to auto meters
2019-02-22 06:42:26 -05:00
Zakk
d6f6becc38 Apple H264 compressor properly restores hardware force/disable settings 2019-01-30 05:36:40 -05:00
Zakk
3d2724461d AVFoundation webcam sources now restore their configured format/framerate properly. 2019-01-25 03:36:09 -05:00
Zakk
606f7fbd8f Audio mixers now respond to setEnabled messages: all inputs are disabled/enabled depending on value.
Stop using 'muted' property for mixers in advanced audio window.
Various changes to AppleScript code to better support upcoming Elgato Stream Deck integration.
Added some notifications to help stream deck plugin
2019-01-16 16:16:39 -05:00
Zakk
2fc3a35ff3 Create PreviewLayer's CVDisplayLink by using the main display, not 'all displays'.
Improve the feel of Desktop Capture's crop overlay window. (Don't implement resizing and moving manually, let system do them)
Desktop capture no longer destroys+recreates the display stream multiple times when the cropping region is changed.
Desktop capture 'reset crop region' button now works...
Fixed some warnings.
2019-01-02 03:43:48 -05:00
Zakk
31d31afdad Select 'most optimal' pixel format for webcam capture sources.
If metal and the proper CARenderer features are available, render the SourceLayout via Metal instead of an OpenGL context.
If metal is available, use a normal CALayer to render PreviewView content.
Preview renderers are no long responsible for drawing 'snap lines'; Preview View creates an overlay view that renders them on top of the layout.
2018-12-29 04:11:56 -05:00
Zakk
450b0e3056 Webcam capture attempts to select the best quality format+framerate 2018-11-28 06:49:05 -05:00
Zakk
953a61dee6 Add WKWebView based capture source plugin 2018-11-11 04:29:30 -05:00
Zakk
77e082bc2f Instead of hiding sources that are removed/changed, set the opacity to 0.0f. Setting them to hidden was causing broken animations under Mojave. 2018-10-10 02:51:14 -04:00
Zakk
97986ad7e9 Update to latest syphon framework 2018-10-02 17:12:24 -04:00
Zakk
1eb3c3ea36 Removed some NSLogs 2018-08-12 13:57:32 -04:00
Zakk
e4762d2c48 Fix more warnings.
Don't constantly rebuild the x264 format extensions every frame; only rebuild if compressor values have changed
2018-08-04 19:38:26 -04:00
Zakk
4883820f07 Fix some warnings.
Don't crash if an image capture file path doesn't exist
2018-07-31 23:20:26 -04:00
Zakk
c117fb091e Improved the thread safety of adding/removing inputs from an audio engine 2018-07-29 08:17:10 -04:00
Zakk
8c0bd081b2 Fixed block retain -> retain self cycle when listening for default audio device changes 2018-05-26 11:27:31 -04:00
Zakk
1fe7acddd0 Store the start time of the main stream (when Stream is clicked).
Add a flag to the elapsed time source that uses the latest stream start as the start time of the timer
2018-04-15 22:45:00 -04:00
Zakk
497470dcf1 Changed attach audio input creation/pcm player so that Capture plugins no longer need to care if they are live or not. Just create the PCM input whenever you want and it will Do The Right Thing.
Added a capture plugin API that creates an attached audio input AND a pcm audio input simultaneously.
2018-04-15 00:02:35 -04:00
Zakk
db113d6d7e Fixed some warnings 2018-04-14 05:17:11 -04:00