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
Guard some graph functions with @synchronized()
Changing sample rate doesn't rebuild the graph; now requires a restart. (Can't reliably be done with encoders/streams active)
Change audio metering yet again.........
Uninit/reInit effects and down mixer nodes when input/output formats are set. Without doing this connecting non-stereo inputs fails. It's possible to be smarter about this by comparing the channel counts, but that's probably not worth it?
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
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
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.
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
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.
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)
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.
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)
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.