Commit graph

84 commits

Author SHA1 Message Date
Zakk
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
2020-05-15 00:11:52 -04:00
Zakk
01479aca32 Add Start/Stop recording scripting event.
Don't call queue err_send function in ffmpeg  closeMedia, let the consumer loop do that
2020-04-12 15:33:41 -04:00
Zakk
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
2020-04-11 18:22:17 -04:00
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
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
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
4f28f0cad0 Added an option to movie inputs for deactivation upon play queue completion 2019-02-05 03:47:22 -05:00
Zakk
ddd87b07b7 Movie sources now default to playing when live, including when drag+dropped into a layout 2019-02-04 10:28:57 -05:00
Zakk
028ef54be5 Fix concurrency and CATransaction flushing issues with CALayer based preview view.
Fix resizing of inputs causing a dispatch/kvo storm due to mismatched coordinate types
2019-02-01 08:07:55 -05:00
Zakk
619f257fc2 FFMpeg capture: only update layer contents when a new frame is available, instead of updating with an old frame.
CSPreviewCALayer: don't bounce rendering out of the DisplayLink thread via dispatch_async, movie playback is not smooth when doing so (but is ok bouncing out to main, or other threads without dispatch_async??!)
2019-01-29 04:05:19 -05:00
Zakk
bf47d8382d When moving on to the next movie in the ffmpeg source, if the 'next' item is the same as the 'current' one, just seek to time zero instead of reopen it. (fixes repeat/looping not working) 2019-01-28 04:00:25 -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
b61e6217d5 Fix some warnings.
Restore dark UI mode when running non-Mojave systems.  Still ugly, tho.
On older systems (earlier than 10.12) set CALayer preview view contents to the IOSurface, not the CVPixelBuffer
2018-12-30 05:41:48 -05:00
Zakk
6b25be1100 Fixed one frame memory leak in FFMPEG player input
Small changes to SourceLayout; it allocates root and transition layers on demand, so non-visible copies of a layout do not incur any potential CALayer/video resource waste
2018-07-28 11:10:15 -04:00
Zakk
bae4888d44 Properly tear down audio graph even if 'headNode' doesn't exist (use the actual node instead) 2018-07-18 07:56:25 -04:00
Zakk
7a8f2e7b6a Fixed memory leak due to double call to openMedia on movie inputs
Movie inputs restored from a save now properly register audio output
2018-05-21 02:29:25 -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
bd0ab71393 Added drag and drop support for transitions: layouts, inputs and various file types 2018-04-02 09:12:09 -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
b7ccd568ed Inform input sources when they are visible (added to a layout "for real").
Movie source uses visibility change to trigger 'play when live' even in staging. Staging will not play live sound from the movie
2018-03-10 22:27:39 -05:00
Zakk
9be3ca0671 Keep trying to get the first frame until one arrives, since it may not be available on first frame tick 2018-03-10 06:56:46 -05:00
Zakk
353c5eddf8 drag and dropping layouts onto the source list now creates a layout source 2018-03-10 04:50:06 -05:00
Zakk
4d7e296a8e Sources now use restore/saveWithCoder instead of init/encodeWithCoder. This allows restoring to be a bit smarter about cached sources, replacing them transparently at restore time.
Old style initWithCoder is still functional, just not as cache friendly.
If the capture "device" is changed in the input config window the capture object may be swapped out for a different one depending on caching/flags.
2018-02-03 23:56:32 -05:00
Zakk
b408eb69b8 Renamed 'sticky' inputs to 'pinned'
Live view ignores pinned input status and just replaces entire layout like it should
If a cached source has the allowDedup flag set to false when it is retrieved from cache, it is evicted from the cache and replaced with the 'new' object
Introduced a 'uniqueIdfrompasteboard'; if implemented this allows the caching system to use a cached source on drag+drop
2018-01-30 10:56:23 -05:00
Zakk
0909373465 Fixed queued movie items not playing when it is their turn 2018-01-27 05:24:05 -05:00
Zakk
7329ad958c Movie source changes audio name when item changes 2018-01-27 04:54:21 -05:00
Zakk
3868e3114d Added ability for inputs to change the name of their attached audio input
movie player now creates dependent audio input
2018-01-27 04:51:30 -05:00
Zakk
c4c7fc4e0b Fix some warnings 2018-01-25 04:55:49 -05:00
Zakk
dfa4e76244 Convert source item outline view to use a data source instead of bound NSTreeController (was causing weird memory leaks..????)
Actually bounce the NDIReceiver audio delegate call through the requested queue
Fixed drag and drop reorder bug with source lists that was preventing a source from being placed at the bottom
2018-01-23 01:02:31 -05:00
Zakk
17c59b7fc8 Added NewTek NDI source. Requires the user to install the NewTek NDI runtime library 2018-01-20 04:35:06 -05:00
Zakk
ed107cf61b Clean up some pixel transfer sessions on dealloc
Prevent double-remove of audio source from the audio engine
Improve memory use of movie source (don't use unreasonably large buffer)
Fix instant recorder output (wasn't writing trailer data)
2017-12-17 15:57:35 -05:00
Zakk
980961137e Re-implement audio level meters as normal NSViews with drawRect instead of CALayers with masks
If a PCM player is in a pending exit state, refuse to queue more PCM samples (so we don't leak them)
When an FFMPEG movie player deallocates, check if we still have a retained CVPixelBuffer and release it if we do.
2017-12-10 07:58:01 -05:00
Zakk
af6c5b1606 Removed a bunch of NSLogs
Audio engine mixer nodes now dynamically allocate input busses as needed, and reuse ones from disconnected nodes.
2017-12-09 09:02:32 -05:00
Zakk
426df6465d Dealloc pixel buffer pool when FFMPegPlayer is realloced 2017-12-06 05:54:06 -05:00
Zakk
a7c744bf40 Added a callback for CAMultiAudio node inputs when they are removed from an engine. This allows the PCM player to clean up the pending deallocation queue.
Chased down some more minor memory leaks in the ffmpeg movie player
2017-12-04 05:31:23 -05:00
Zakk
d4238c2224 Allocate one single buffer for planar PCM data, instead of multiple buffers.
Expose the single buffer as a property, so 'external' libraries can write PCM data into it.
Convert FFMPEG player so it uses the new single buffer system.
Add missing audio frame deallocation in ffmpeg movie audio consumer.
2017-12-04 01:37:39 -05:00
Zakk
f8925a449d Fix some movie playback related memory leaks 2017-12-03 15:35:28 -05:00
Zakk
a63c01b009 Properly restore name of movie input 2017-12-01 22:07:52 -05:00
Zakk
aafa92bffe Add pcm input creation into CSCaptureBase. This version is audio engine aware, so it will work properly for recorders 2017-11-27 01:06:07 -05:00
Zakk
44c284a122 Emit notifications when audio inputs are added or removed.
Have audio source type listen for audio add notifications in their engine and apply audio settings if it is relevant.
FFMPEG movie source now generates proper UUIDs for the PCMPlayer
2017-11-26 23:32:08 -05:00
Zakk
8f69fd87d1 Fix up some warnings and ffmpeg related deprecations 2017-11-24 23:12:39 -05:00
Zakk
261fdba402 Add video delay support to Layout and FFMpeg movie source 2017-11-07 23:40:16 -05:00
Zakk
55ff80767c Fixed some warnings.
Added video delay feature. Not all sources support it.
2017-11-07 16:16:48 -05:00
Zakk
d4e7404f74 Remove all 'frame update type' settings 2017-11-05 16:38:20 -05:00
Zakk
119e831125 Some warning fixes, memory leak issues with blackmagic 2017-11-04 14:38:35 -04:00
Zachary Girouard
12c19f5ee5 Change the source outline view so it doesn't leak CFStrings (!?!?!) 2017-10-29 12:08:14 -04:00
Zakk
eba2c9b524 Some changes to support newer ffmpeg (3.4) 2017-10-25 14:53:24 -04:00
Zakk
83de164c0d Fixed some warnings.
Changed Image source to use NSImages as the CALayer contents, and improved handling of intermediate CGImage/CGImageSource. Fixes a potential memory leak when image sources are used
2017-10-24 05:26:46 -04:00
Zakk
76be216538 Movie input changes so first video frame is displayed if auto-play isn't enabled.
Fixed order of audio delay node removal to stop error console spam when removing movies or audio files
2017-09-24 06:29:21 -04:00