Helge Norberg [Wed, 10 Dec 2014 12:19:31 +0000 (13:19 +0100)]
- Added possibility for consumers to *not* affect the presentation time (adjustments in output.cpp made based on the buffer_depths of the consumers) of other consumers. This is good when consumers that are usually spontaneously added and removed during playout (image_consumer, ffmpeg_consumer, streaming_consumer and channel_consumer) are used, because it prevents the lag previously experienced when adding/removing such consumers.
- Fixed streaming_consumer sometimes crashing the server during destruction.
Helge Norberg [Wed, 3 Dec 2014 19:43:45 +0000 (20:43 +0100)]
* Updated Boost to 1.57.
* Thread debugging:
- The thread column in the log now records the OS thread id instead of an internal memory address of the Boost representation of a thread.
- Added INFO THREADS command to be able to map thread id:s with application thread names (only available when starting a thread with debugger attached previously).
- More descriptive thread names where the video channel id is also included.
* #321 reverted change in host_buffer.cpp to be equivalent of the previous behavior.
* Reverted all usages of tbb:enumerable_thread_specific back to boost::thread_specific_ptr, because the TBB version does not free memory for each thread when they exit, but only on destruction.
* mipmapping is by default turned off for thumbnail generation.
* Upgraded Decklink SDK to 10.1.4, bringing new DCI video modes.
- Use the old IDecklinkOutput interface if the old driver is installed and the new if the new driver is installed.
* Fixed serious COM resource/memory leak in decklink module (affects both consumer and producer), where skipped IDecklink instances while iterating was never released.
* Enabled ffmpeg filters to not be multithreaded. The filter used when pixel format converting in decklink_producer seems to have a resource leak when multithreaded. Disabled it in decklink_producer if not using a deinterlacing filter, which may be too slow otherwise.
Helge Norberg [Thu, 6 Nov 2014 19:37:54 +0000 (20:37 +0100)]
Spotted and fixed some memory leaks using Visual Leak Detector:
* Now uses TBB thread local instead of Boost thread local everywhere. Seems to clean up better at thread exit.
* FlashAxContainer.cpp: m_lpDD4 was never deleted.
* g_cef_executor now freed in html::uninit() instead of at CRT termination.
* Reduced leakage from Console thread when exiting server via KILL or RESTART instead of via q. Best would be if std::getline could be unblocked from another thread somehow.
Helge Norberg [Wed, 5 Nov 2014 12:49:48 +0000 (13:49 +0100)]
Implemented INFO QUEUES command for debugging AMCP command queues. Useful for debugging command queue overflows, where a command is deadlocked. Hopefully always accessible via console (since the general command queue on the console is separate from the TCP servers)
Helge Norberg [Fri, 31 Oct 2014 10:47:02 +0000 (11:47 +0100)]
- Increased consumer timeout to 10 seconds.
- Implemented a new AMCP command called GL
o GL GC - garbage collects GL resources not currently in use.
o GL INFO - provides information about GL resource usage.
Helge Norberg [Fri, 3 Oct 2014 12:49:18 +0000 (14:49 +0200)]
Fixed bug where both layer_producer and channel_producer display:s and empty/late first frame when the producer is called before the consumer in the other end has received the first frame.
o Added support for perspective correct corner pinning.
o Added support for mipmapped textures with anisotropic filtering for
increased downscaling quality.
o Added support for cropping a layer. Not the same as clipping.
o Added support for rotation.
o Added support for changing the anchor point around which fill_translation,
fill_scale and rotation will be done from.
AMCP
----
o To support the new mixer features the following commands has been added:
- MIXER ANCHOR -- will return or modify the anchor point for a layer
(default is 0 0 for backwards compatibility). Example:
MIXER 1-10 ANCHOR 0.5 0.5
...for changing the anchor to the middle of the layer
(a MIXER 1-10 FILL 0.5 0.5 1 1 will be necessary to place the layer at the
same place on screen as it was before).
- MIXER ROTATION -- will return or modify the angle of which a layer is
rotated by (clockwise degrees) around the point specified by ANCHOR.
[html/flash] concatenate all parameters after index 2 given to CG INVOKE before passing to CG producer just as with CALL. Allows for spaces without having to surround with quotes.
Helge Norberg [Tue, 26 Aug 2014 13:52:54 +0000 (15:52 +0200)]
html producer:
Implemented a custom version of window.requestAnimationFrame which will follow the pace of the channel, for perfectly smooth animations.
No longer manually interlaces frames, to allow for mixer fill transforms without artifacts.
Now uses CEF3 event loop to avoid 100% CPU core usage.
Helge Norberg [Tue, 5 Aug 2014 11:57:04 +0000 (13:57 +0200)]
Moved flash player global mutex serialization to put_Movie instead of around CoInitialize/CreateAxControl/DestroyAxControl. It seems that the template host does not support concurrent initialization resulting in SecurityException later on. The previous lock around CoInitialize/CreateAxControl/DestroyAxControl only seems to have reduced the likelihood of put_Movie being run concurrently.
Added support for using a different configuration file at startup than the default casparcg.config by simply adding the name of the file to use as the first command line argument to casparcg.exe.
Helge Norberg [Fri, 27 Jun 2014 12:49:37 +0000 (14:49 +0200)]
- Added support for multiple streaming_consumers on the same channel
- Added support for the placeholder <client_ip_address> for ADD and REMOVE commands resolving to the client ip address of the AMCP connection.
Helge Norberg [Thu, 26 Jun 2014 17:04:50 +0000 (19:04 +0200)]
#281
Added support for iVGA consumer to not provide channel sync even though connected. Useful for iVGA clients that downloads as fast as possible instead of in frame-rate pace, like Wirecast.
<provide-sync>false</provide-sync> has to be added inside the <newtek-ivga /> element to not provide channel sync when connected.
Helge Norberg [Wed, 18 Jun 2014 18:13:16 +0000 (20:13 +0200)]
-Fixed bug where ffmpeg parameter values with : in them did not work like -vf scale=480:360
-Fixed related bug where ffmpeg parameter values with - in them did not work like -vf yadif=3:-1
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.