Commit graph

1220 commits

Author SHA1 Message Date
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
1b2209f12a Use MKV container for live record buffer: better compatibility with various codecs. (fragmented mp4 can't contain ProRes????)
Some fixes to layout editing window
Up bitrate of built in hardware h264 encoder for live recording.
Properly restore muted status of default system input
2019-11-02 03:27:30 -04:00
Zakk
2822956358 Control-clicking instant record button now brings up a menu of various durations of live buffer to write to a recording.
AppleScript instantRecord command now takes integer argument of duration. Defaults to the configured buffer length if unset
2019-10-31 09:16:16 -04:00
Zakk
6fd1223bdc Removed 'force format' from global output settings; individual plugins are responsible for specifying output formats and allowing users to change them.
Support segmentation for file output. This is based on libavformat's segment muxer. May move it to a custom internal file rotator in the future.
Changed instant record buffer to a rotating disk based buffer. Saving a live recording now just remuxes a time range of the on-disk buffer to a new file.
2019-10-30 04:30:36 -04:00
Zakk
414ab28774 Set deployment target to 10.12
Don't save default system audio input in the system audio uuid maps; it gets added automatically and doesn't need restoring on launch
2019-10-24 20:51:31 -04:00
Zakk
de9605ad1a Don't call InputSource commonInit twice: this causes double KVO of constraints and leads to...bad things 2019-10-23 17:28:33 -04:00
Zakk
0d35f3516c Don't call displayIfNeeded, instead call setNeedsDisplay and let Core Animation update on the normal cycle.
Update midi code to reflect recent changes in live/staging handling
2019-10-23 01:59:01 -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
9e7091ecae When a layout audio source is deallocated, use the audioNode's engine to remove it. Fixes audio inputs not removing themselves from the mixer if you delete them manually from a layout 2019-10-01 05:04:06 -04:00
Zakk
9a7805833c Fix a rare(-ish) crash in the source list UI due to race conditions when the layout's source list is being updated
Some changes to how audio inputs are removed so they're properly released instead of just dangling unattached to an audio graph.
2019-10-01 03:39:23 -04:00
Zakk
53da8ccce6 Don't set default duration on input based transitions; this way the global duration gets used.
For de-dupable sources, set the cache when the unique id is mapped to a device, so caching works when the device list is delayed/async
2019-09-28 01:14:39 -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
91f9b444c5 Remove some NSLogs 2019-09-17 05:22:38 -04:00
Zakk
1b06902b7d Version 2.1.10 2019-09-17 05:20:18 -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
a1114d9cbc Store metal renderer setting in NSUderPreferences, so it is available to loaded XIBs early on in application startup.
Refactor main window and main menu xibs. MainMenu.xib creates Application,AppDelegate,Sparkle Updater. MainWindow.xib is loaded by AppDelegate in applicationWillLaunch and creates CaptureController and the Main window.
2019-09-16 05:25:47 -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
e5fe2dbd20 Add recording option to menubar menu 2019-08-08 00:51:14 -04:00
Zakk
6567ea8a65 Add preference to toggle between OpenGL or metal renderer.
On 10.13 and above, support changing the metal device the layout renderers use.
Both of these require a restart
2019-08-05 22:39:04 -04:00
Zakk
92e8845b95 Remove and re-add CALayer to SCNPlane on resize. If plane is resized with it attached it doesn't render correctly.
Change metal texture to _sRGB, for better color mapping. (maybe an option in the future?)
2019-08-04 00:41:48 -04:00
Zakk
5f30700387 Use a SceneKit renderer to render layouts. This works around a bug in CARenderer where CIFilter based transitions would not render at all 2019-08-03 23:22:08 -04:00
Zakk
2b3374bd1e NDI output now updates statistics properly.
Recording outputs are now part of the normal Output window and can be configured and toggled from there.
Added flag to set an output as either streaming or recording.
Stream button -> start streaming outputs, record button -> start recording outputs.
2019-07-28 05:29:45 -04:00
Zakk
535afc378f Add AppleScript support for main recording 2019-07-27 07:21:38 -04:00
Zakk
59e32cff22 Send twitchAPI v5 accept headers 2019-07-26 04:35:20 -04:00
Zakk
ae17ab821b Add record button for live layout 2019-07-14 02:18:14 -04:00
Zakk
03a29ada0b Use non-versioned NDI call for the 'finder' object to prevent crash with newer NDI lib 2019-07-10 04:19:40 -04:00
Zakk
6e8a2fc1ca Defer adding non layer backed sources (audio etc) to layout until after the transition is finished 2019-07-07 02:13:10 -04:00
Zakk
4e13c52965 Remove NSLog 2019-07-06 23:36:06 -04:00
Zakk
05098828e3 Fix potential crash if a compressor is edited while a layoutrecorder/instantrecording is active 2019-07-01 06:32:44 -04:00
Zakk
4309aaed91 Add blank/null entry to x264 tune settings so user can remove any currently set tune 2019-07-01 05:46:13 -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
3d9f0de198 Made NDI output aware of multi track audio
Fix live/staging layouts not saving resolution or background settings
Added default settings to x264 encoder
2019-06-14 04:41:55 -04:00
Zakk
b2784fc0d5 Downmixer now disables/enables outputs when the enabled property is toggled. Restores muting of stream output 2019-06-12 04:24:23 -04:00
Zakk
a3909cd9d8 Don't let initial staging hide/reveal clobber saved staging.
Change javascript syntax to hopefully fix older macOS versions
2019-06-12 03:32:13 -04:00
Zakk
8b416c97f0 Update version of saved settings file 2019-06-11 04:27:04 -04:00
Zakk
8e25e41a48 Properly order out OAuth window before setting it to nil 2019-06-11 01:44:49 -04:00
Zakk
4909d0f2b3 Manually create the mixer level data structure so mixer crosspoint volumes restore correctly (bug in CoreAudio?)
Fix outputs not picking up default audio track.
Audio engine default output track wasn't properly being assigned an encoder node.
2019-06-10 05:26:56 -04:00
Zakk
40ec0b03ee Input based transitions now have a default hold duration of 0.25 seconds 2019-06-08 21:24:51 -04:00
Zakk
b60b75f0fe System audio inputs are now properly enabled when initially added to an audio engine 2019-06-08 02:59:07 -04:00
Zakk
5c618b6721 Fix transition config pane showing on config-less initial load even though the default isn't to use transitions 2019-06-08 01:59:44 -04:00
Zakk
e11c6ef0c4 Wrap layout renderer 'currentImg' method in CATransaction: without it resizing a live layout with a renderer attached fails to resize properly 2019-06-07 18:42:11 -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
ae1228abea Remove 12 layout minimum.
Bump to version 2.1.9 (sooooon)
2019-06-05 04:30:22 -04:00
Zakk
af01e18475 Add AppleScript glue to list audio tracks
Add 'create debug' menu item. Writes a zip file to the user's desktop with saved settings and log data
2019-06-03 03:11:20 -04:00
Zakk
66404cef3a Add AppleScript glue to list audio tracks
Add 'create debug' menu item. Writes a zip file to the user's desktop with saved settings and log data
2019-05-28 05:16:33 -04:00