Commit graph

  • 384161c891 Version 2.1.14 master Zakk 2020-05-25 19:17:30 -04:00
  • 787da4129d Update CSVirtualCamera output settings view to display a link to installer if it is not installed. Don't use hardcoded test camera UID Zakk 2020-05-25 18:46:54 -04:00
  • 5c331e0513 Update some text in Virtual camera UI Zakk 2020-05-23 03:27:23 -04:00
  • 2a2aa7eb91 Added plugin API for outputting sound to an audio device, using a simple CAAudioGraph Virtual camera output uses above API to output the layout's audio to a user selected system audio device Zakk 2020-05-22 05:08:11 -04:00
  • 4a79eb3d54 Send layout along with LayoutDeleted notification instead of CaptureController (!?) Zakk 2020-05-18 01:40:12 -04:00
  • 474929e089 Virtual camera output now has configurable pixel format Update to latest camera SDK Zakk 2020-05-18 01:15:36 -04:00
  • 040e339bca Add save/restore settings to Virtual Camera output Zakk 2020-05-17 04:00:37 -04:00
  • 62972f1dfb Fixed dumb bug that was causing metal rendering to be disabled. Pass output layout name to Stream service plugins so they can potentially use it for naming etc. More work on Virtual Camera output Add more pixel formats to Passthrough compressor Zakk 2020-05-17 03:28:31 -04:00
  • 970bea7db2 Drop frames if the compressor queue gets too deep (hardcoded to 10 frames, may make it dynamic later?) Re-enable proper restoration of audio input source settings (oops) Clear layout source list if a layout recording is stopped and there is no longer a recorder attached to the layout Fix OAuth request percent encoding for auth codes Don't change ffmpeg input source size on input file swap Uninit audio unit with setting input stream format Start of virtual camera plugin (soooooon). Disabled for now Update Youtube output plugin Zakk 2020-05-15 00:11:52 -04:00
  • e97f224814 Add buffer_draining property to TimeOutputBuffer to prevent unknown message runtime exception When a layout recording is stopped, only clear the source list if there is no longer a layout recorder attached to the layout Zakk 2020-04-26 07:13:01 -04:00
  • d36a6a445d Use proper audio format (with channel layout) when creating pcm player inputs Zakk 2020-04-18 07:25:45 -04:00
  • a0efc75baa IF a layout source is doing auto-cropping to a contained source, reset the crop rectangle if no contained input matches the pattern Zakk 2020-04-17 19:29:24 -04:00
  • 768c139d36 Initialize WKWebView on main thread since apparently it can't be initialized on background threads at all Zakk 2020-04-17 19:18:48 -04:00
  • 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 Zakk 2020-04-17 17:59:24 -04:00
  • e380430968 Set layer delegate when image path changes. Zakk 2020-04-13 20:24:50 -04:00
  • f13e2d46d8 Remote test/random?!? colorspace in AVcapture Zakk 2020-04-13 19:50:39 -04:00
  • 01479aca32 Add Start/Stop recording scripting event. Don't call queue err_send function in ffmpeg closeMedia, let the consumer loop do that Zakk 2020-04-12 15:33:41 -04:00
  • ae02cd7d16 Add random repeat option to ffmpeg movie player Fix pause/play state tracking bugs in ffmpeg movie player config dialog. Properly reset the "is_ready" flag when closing a ffmpeg movie item Fix potential div0 error in Downmixer Provide default needsSetup method for compressors Zakk 2020-04-11 18:22:17 -04:00
  • 55c111f92e Use CIImage.CGImage to get bitmap data instead of rendering into a transient CIContext On 10.15 use a CIColorCubeWithColorspace and use generic device RGB space Zakk 2020-04-10 03:42:52 -04:00
  • d9715fd5c7 Bump version 2.1.13 Zakk 2020-04-09 19:50:23 -04:00
  • 16564b3780 Use a single queue for all text file/file watch operations. Prevents different async queues from running over one another Zakk 2020-04-09 19:13:58 -04:00
  • 3615c209ef Add LUT CIFilter Zakk 2020-04-09 18:25:01 -04:00
  • 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 Zakk 2020-04-07 18:26:13 -04:00
  • b4ad6f56d0 Add channel layout to formats used to create PCM players from plugins Zakk 2020-03-02 00:52:27 -05:00
  • a1414f249f Downmixer no longer does audio unit uniit/reinit on input format change; base node class handles that now. When a PCMPlayer input is disconnected, stop the pending buffer timer from firing and drain the pending queue. Zakk 2020-03-01 23:16:27 -05:00
  • 387972bc12 Cleanup some unused variables Zakk 2020-03-01 20:12:27 -05:00
  • 59676688ff Add tooltip to sample rate dropdown Zakk 2020-03-01 02:49:53 -05:00
  • d9f5bff5fe Always uninitialize nodes when doing connections. Guard some graph functions with @synchronized() Zakk 2020-03-01 00:40:01 -05:00
  • d14db2b8f0 Restore audio inputs from save Zakk 2020-02-29 18:40:05 -05:00
  • 92546d324b Matrix detail view now shows input audio levels for each input channel Zakk 2020-02-24 18:44:08 -05:00
  • d1ffac94ec Fix base audio node class not setting effectsHead and headNode after creation (fixes effect chain addition to stream output). 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? Zakk 2020-02-24 01:53:36 -05:00
  • 8cbac8a54a Layoutrecorders now add audio tracks to their map dynamically as they are created. This fixes the main layout recorder not seeing new tracks since it is active from program start now. Zakk 2020-02-23 23:18:40 -05:00
  • 805fef9159 Add support for asynchronous out-of-process loading of AuV3 extensions Zakk 2020-02-23 01:01:33 -05:00
  • 639c53003c Remove dependency on AUGraph API Zakk 2020-02-22 23:33:49 -05:00
  • 1e966d5730 Properly return inputFormat for file input. No longer rely on AUGraphInteractions to find next input/output elements, use CAMultiAudioGraph connection info Zakk 2020-02-22 21:22:36 -05:00
  • f2c879b99b Change order and method of build effect chains for inputs: input -> converter -> delayX5 -> effects -> downmixer Zakk 2020-02-22 03:13:05 -05:00
  • 6931cc3aa2 Convert PCM player free loop to a background dispatch_timer Track input->outputTrack associations via a custom object. More cleanup Zakk 2020-02-22 02:06:27 -05:00
  • 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 Zakk 2020-02-21 19:27:14 -05:00
  • 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 Zakk 2020-02-21 08:55:40 -05:00
  • 0058c741f4 Some changes for effect chains. AVAudioEngine Zakk 2020-02-18 04:06:08 -05:00
  • 76919247b5 Delay functionality restored to input nodes. Input nodes now have a downmixer, no ability to map channels yet. Downmixer is now downstream of effects, in case your effects care about all channels Zakk 2020-02-17 01:43:27 -05:00
  • bfb338d47f Restore use of default output track for connections Zakk 2020-02-16 17:02:14 -05:00
  • fcd07ab04d Add init method for PCMPlayer that takes an AudioFormat. PCMPlayer now provides the given format as the inputFormat for connecting to downstream nodes. If no format is given standard format, 44100, 2ch is assumed. Only create an audio converter if the incoming format differs from standard graph format Zakk 2020-02-16 15:35:09 -05:00
  • 8d8dae9d7f Initial work on moving audio to AVAudioEngine. Things are a mess right now, but audio does flow from input to output with mixers in between Zakk 2020-02-16 13:51:53 -05:00
  • 4226e7facc Update TPCircularBuffer to get rid of deprecation warnings Fix some warnings Zakk 2020-02-03 03:24:09 -05:00
  • 200611c911 version 2.1.12 Zakk 2020-01-22 17:01:39 -05:00
  • e4568c6126 Fix typo in Debug menu target method name Zakk 2020-01-22 17:01:01 -05:00
  • 4ef4b269ef Always commit the CATransaction when bailing out of the open GL renderer Zakk 2020-01-22 16:57:47 -05:00
  • c1662f957a Update sparkle for notarization Zakk 2020-01-20 18:15:20 -05:00
  • ec9e3ab52c Limit window capture sources to desktop windows (no menu bar elements etc) Zakk 2019-12-18 11:17:17 -05:00
  • bc386b2828 Bump to version 2.1.11 Zakk 2019-12-09 04:42:20 -05:00
  • 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 Zakk 2019-12-09 04:34:37 -05:00
  • 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 Zakk 2019-12-07 22:26:28 -05:00
  • 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 Zakk 2019-11-03 06:25:10 -05:00
  • 9021929c56 Don't autofit/direct size a zero rectangle frame, doing so generates a runtime exception. Protect audio graph node list from multithread access Zakk 2019-11-02 21:08:31 -04:00
  • 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. Zakk 2019-11-02 18:28:33 -04:00
  • 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 Zakk 2019-11-02 03:27:30 -04:00
  • 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 Zakk 2019-10-31 09:16:16 -04:00
  • 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. Zakk 2019-10-30 04:30:36 -04:00
  • 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 Zakk 2019-10-24 20:51:31 -04:00
  • de9605ad1a Don't call InputSource commonInit twice: this causes double KVO of constraints and leads to...bad things Zakk 2019-10-23 17:28:33 -04:00
  • 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 Zakk 2019-10-23 01:59:01 -04:00
  • 24f5d7e6c0 Change internal handling of staging and live views to improve consistency and reduce side-effects/order dependencies when loading and saving. Zakk 2019-10-22 14:54:16 -04:00
  • 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) Zakk 2019-10-20 20:42:34 -04:00
  • d08893309e Create multiple audio instances for layout sources: one for each output track Zakk 2019-10-17 14:33:46 -04:00
  • 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. Zakk 2019-10-16 13:21:43 -04:00
  • 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 Zakk 2019-10-01 05:04:06 -04:00
  • 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. Zakk 2019-10-01 03:39:23 -04:00
  • 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 Zakk 2019-09-28 01:14:39 -04:00
  • 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) Zakk 2019-09-27 04:31:36 -04:00
  • 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. Zakk 2019-09-26 01:32:55 -04:00
  • a1cad1d7a7 Use an NSPanel for the desktop capture region selection: allows it to float over fullscreen windows in alternate spaces Zakk 2019-09-20 18:33:29 -04:00
  • 91f9b444c5 Remove some NSLogs v2.1.10 Zakk 2019-09-17 05:22:38 -04:00
  • 1b06902b7d Version 2.1.10 Zakk 2019-09-17 05:20:18 -04:00
  • e4dd27c730 Add a 'shouldLoad' class method to plugins. If this returns NO the plugin is skipped. Apple browser plugin only loaded on 10.13+ Zakk 2019-09-17 05:07:58 -04:00
  • 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. Zakk 2019-09-16 05:25:47 -04:00
  • 2d5e2707e6 If using metal for rendering, don't adjust the point when finding a clicked on source. Zakk 2019-09-16 00:39:44 -04:00
  • e5fe2dbd20 Add recording option to menubar menu Zakk 2019-08-08 00:51:14 -04:00
  • 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 Zakk 2019-08-05 22:39:04 -04:00
  • 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?) Zakk 2019-08-04 00:41:48 -04:00
  • 5f30700387 Use a SceneKit renderer to render layouts. This works around a bug in CARenderer where CIFilter based transitions would not render at all Zakk 2019-08-03 23:22:08 -04:00
  • 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. Zakk 2019-07-28 05:29:45 -04:00
  • 535afc378f Add AppleScript support for main recording Zakk 2019-07-27 07:21:38 -04:00
  • 59e32cff22 Send twitchAPI v5 accept headers Zakk 2019-07-26 04:35:20 -04:00
  • ae17ab821b Add record button for live layout Zakk 2019-07-14 02:18:14 -04:00
  • 03a29ada0b Use non-versioned NDI call for the 'finder' object to prevent crash with newer NDI lib Zakk 2019-07-10 04:19:40 -04:00
  • 6e8a2fc1ca Defer adding non layer backed sources (audio etc) to layout until after the transition is finished Zakk 2019-07-07 02:13:10 -04:00
  • 4e13c52965 Remove NSLog Zakk 2019-07-06 23:36:06 -04:00
  • 05098828e3 Fix potential crash if a compressor is edited while a layoutrecorder/instantrecording is active Zakk 2019-07-01 06:32:44 -04:00
  • 4309aaed91 Add blank/null entry to x264 tune settings so user can remove any currently set tune Zakk 2019-07-01 05:46:13 -04:00
  • 7b2aa0416c Remove some NSLogs Rework Desktop capture display enumeration to take into account displays with no serial number (thanks apple) Zakk 2019-06-22 04:46:21 -04:00
  • 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 Zakk 2019-06-14 04:41:55 -04:00
  • b2784fc0d5 Downmixer now disables/enables outputs when the enabled property is toggled. Restores muting of stream output Zakk 2019-06-12 04:24:23 -04:00
  • a3909cd9d8 Don't let initial staging hide/reveal clobber saved staging. Change javascript syntax to hopefully fix older macOS versions Zakk 2019-06-12 03:32:13 -04:00
  • 8b416c97f0 Update version of saved settings file Zakk 2019-06-11 04:27:04 -04:00
  • 8e25e41a48 Properly order out OAuth window before setting it to nil Zakk 2019-06-11 01:44:49 -04:00
  • 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. Zakk 2019-06-10 05:26:56 -04:00
  • 40ec0b03ee Input based transitions now have a default hold duration of 0.25 seconds Zakk 2019-06-08 21:24:51 -04:00
  • b60b75f0fe System audio inputs are now properly enabled when initially added to an audio engine Zakk 2019-06-08 02:59:07 -04:00
  • 5c618b6721 Fix transition config pane showing on config-less initial load even though the default isn't to use transitions Zakk 2019-06-08 01:59:44 -04:00