Commit graph

230 commits

Author SHA1 Message Date
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
Zakk
577aeca078 audio engines stop+dealloc their encoders when they are realloced.
input transitions don't automatically instantiate the input just to get the name
2018-04-08 02:05:53 -04:00
Zakk
988ebdee39 Input based transitions can be toggled via shift-click. A toggled transition runs the preChangeAction+scripts when clicked. The postChangeAction scripts are only run when the transition is clicked/toggled again.
Use as an alternative for getting lower third style graphics on screen without merging a layout.
2018-04-04 02:30:26 -04:00
Zakk
33b0672632 Layout source doesn't set the layout as a device, instead it stores the UUID and re-fetches it when needed. 2018-03-31 21:50:36 -04:00
Zakk
dd9b89c258 Update project settings for new Xcode.
added dummyAnimation function to animation input wrapper.
slightly reworked how input.waitAnimation() works; the previous implementation possibly messed with other input timings.
converted input transitions to use input specific waits and dummy animations. This allows scripts/other transitions to run simultaneously
2018-03-31 08:14:13 -04:00
Zakk
afab265b83 WIP transition rework 2018-03-25 10:30:31 -04:00
Zakk
2d8b02f30f Layout transition configuration and re-implementation of hold time and wait for media 2018-03-22 11:25:37 -04:00
Zakk
c5610ad1e8 Properly setup single-view mode when it is restored on startup 2018-03-22 09:23:01 -04:00
Zakk
d35904c93a Through a series of disgusting private classes and key value acrobatics, layout sources now capture all the audio of their layout and propagate it up to their audio engine 2018-03-21 10:00:23 -04:00
Zakk
5b129021c3 catchup 2018-03-20 23:41:18 -04:00