Helge Norberg [Wed, 18 Jun 2014 12:56:30 +0000 (14:56 +0200)]
Merged relevant changes from pull #275
- enables streaming from a channel to a remote destination
- renamed ffmpeg_consumer to streaming_consumer to let both the old and the new consumer coexist until the old features are integrated in the new implementation like SEPARATE_KEY. Also the stability needs to be proven.
Helge Norberg [Wed, 18 Jun 2014 11:27:04 +0000 (13:27 +0200)]
- Refactored so that consumers get the input channel_layout at initialization, instead of at the first frame.
- Extracted duplicated code to reusable function.
Helge Norberg [Tue, 10 Jun 2014 11:40:48 +0000 (13:40 +0200)]
- Enabled a single instance of decklink_consumer to manage a separate key output driven by the ScheduledFrameCompleted callback of the fill playback instead of by its own callback. This seems to achieve perfect sync between key and fill with a decklink quad card. Enable by setting:
<keyer>external_separate_device</keyer>
the default is that the key device will be fill device + 1 but can be overridden via
<key-device>[1..]</key-device>
Helge Norberg [Mon, 31 Mar 2014 15:36:11 +0000 (17:36 +0200)]
Created consumer_index counter in channel_consumer instead of using uninitialized channel_index, to be able to have more than one channel_consumer on the same channel.
Helge Norberg [Mon, 31 Mar 2014 15:23:51 +0000 (17:23 +0200)]
Created consumer_index counter in channel_consumer instead of using uninitialized channel_index, to be able to have more than one channel_consumer on the same channel.
Helge Norberg [Thu, 16 Jan 2014 10:17:15 +0000 (11:17 +0100)]
FFmpeg: reenabled curiously disabled logging suppression during thumbnail generation/media info extraction
CG commands: avoid logging stacktraces for user related errors, but return 404 CG ERROR instead
Helge Norberg [Wed, 15 Jan 2014 17:42:07 +0000 (18:42 +0100)]
#222 Modified html_producer so that Caspar ticks the web browser. The javascript function onEnterFrame() must be implemented in order to achieve lag-free motion
TK3 [Fri, 6 Dec 2013 03:17:33 +0000 (22:17 -0500)]
BUG FIX: FFMPEG Producer. When using LOABG with AUTO, and a SEEK or LENGTH parameter was supplied. The frame count calculation was incorrect and could result in 0.
Helge Norberg [Wed, 13 Nov 2013 15:51:33 +0000 (16:51 +0100)]
Moved framerate calculation from CLS/CINF to thumbnail generation time for each file. A new "database" media_info.csv will be created under the thumbnails folder containing the information.
TK3 [Thu, 7 Nov 2013 06:35:42 +0000 (01:35 -0500)]
Publish audio levels via osc. dBFS and pFS levels are provided. I am not sure of performance implications so perhaps this needs to be a configurable feature.
Helge Norberg [Wed, 6 Nov 2013 16:44:26 +0000 (17:44 +0100)]
Patched SFML to not sleep so much in SoundStream.cpp (changed to 10 ms), which makes the oal consumer work as well as before the change to static linking against SFML. And therefore removed portaudio and reverted oal consumer to previous implementation.
Helge Norberg [Wed, 6 Nov 2013 10:31:59 +0000 (11:31 +0100)]
No longer render flash frames as fast as possible, but paces the rendering to allow for time based (vs the preferred frame based) animations to be rendered as close to correct as possible. It will still be incorrect during buffer-recovery, but not during initial buffer fill.
Bug found in forum:
http://casparcg.com/forum/viewtopic.php?f=3&t=1770
TK3 [Fri, 1 Nov 2013 20:43:56 +0000 (16:43 -0400)]
Allow ogl window to be borderless. I found this useful in integrating a "preview" window into a client app. The client app can look for the window handle via it's name and then set it to stay on top via win32 api.
<borderless>true</borderless>
or
ADD 1 SCREEN BORDERLESS
Helge Norberg [Tue, 29 Oct 2013 16:26:18 +0000 (17:26 +0100)]
Removed incorrect usage of av_interleaved_write_frame (for the version of FFmpeg we use) for flushing frames. It seems like flush support was added later.
Helge Norberg [Thu, 24 Oct 2013 15:31:24 +0000 (17:31 +0200)]
#168 Fixed bug during deinterlace_bob_reinterlace where the first frame is incorrectly queued without deinterlacing, causing output fields to be offset by one.
Helge Norberg [Tue, 8 Oct 2013 09:37:26 +0000 (11:37 +0200)]
Flash producer
- globally serialize initialization and destruction of flash players, to avoid race conditions in flash.
- changed so that the flash buffer is filled with flash player generated content at initialization instead of empty frames.
OSC
- merged OSC improvements #152 made by Robert Nagy up until commit https://github.com/ronag/Server/commit/bae86d21f1569b4b7ac1e08c024d62f389efa57e
- enclosed multiple OSC messages in the same UDP packet inside an OSC bundle to comply with OSC spec
- ensured that UDP packets are not too big (causing fragmentation, and errors on OSC receiving side)
- removed use of Microsoft Agents library which seemed to be the cause of running out of memory after a while. Now everything is done synchronously instead (without support for multiple targets, just a single target (parent) for now).
CG commands that expects an already running flash template no longer starts a flash player with a template host just to say "no template running on layer". Now only CG ADD and CG INFO creates a flash_producer/flash player if one is not already running on the video layer.
Huge performance impact detected with chroma key support (even though not in use for a layer) in image shader. Straight alpha output support also adds a small overhead (even when not in use), so just like with blend-modes it is now conditionally compiled in the shader, and turned on in the configuration file.
New <mixer /> element added to configuration for turning on mixer features that not everybody would want to pay for (performance-wise). blend-modes also moved into this element:
* Created custom decklink allocator for reducing memory footprint.
* Made sure that more threads have the unstructured exception handler installed (avoids crashing the entire process in case of access violations), and thread naming for more threads.
* Ensure that if an exception occurs while rendering the diagnostic window, the window is closed instead of it stopping to respond to window events.