Commit graph

1183 commits

Author SHA1 Message Date
Zakk
3d2c0d2fd8 FFMpeg movie player uses AVAudioFormat internally.
FFMpeg movie player now resamples audio to 44.1khz (likely more common than 48khz)
Fixed inability to set inputFormat property on CAMultiAudioInput
2020-02-21 19:27:14 -05: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
200611c911 version 2.1.12 2020-01-22 17:01:39 -05:00
Zakk
e4568c6126 Fix typo in Debug menu target method name 2020-01-22 17:01:01 -05:00
Zakk
4ef4b269ef Always commit the CATransaction when bailing out of the open GL renderer 2020-01-22 16:57:47 -05:00
Zakk
c1662f957a Update sparkle for notarization 2020-01-20 18:15:20 -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
bc386b2828 Bump to version 2.1.11 2019-12-09 04:42:20 -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
07b26b99ea Let VTCompressionSession do the pixel transfer so it happens on a background thread instead of during the main render/recorder loop
Properly flag keyFrames from VTCompressionSession
2019-11-03 06:25:10 -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
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