Helge Norberg [Tue, 3 Nov 2015 15:04:05 +0000 (16:04 +0100)]
* Renamed fonts-path to font-path and thumbnails-path to thumbnail-path and changed the default value of template-path from templates to template. All for the sake of consistency.
Helge Norberg [Thu, 29 Oct 2015 13:54:28 +0000 (14:54 +0100)]
* Absolutely *huge* performance improvement (or bugfix actually) in the rendering pipeline, allowing the next frame to be rendered immediately after the current frame has been *sent* to consumers, instead of *after* the consumers are ready for next frame.
Helge Norberg [Thu, 29 Oct 2015 12:36:30 +0000 (13:36 +0100)]
* screen_consumer: Avoid logging dropped-frame diagnostics tags while moving or resizing window (pollEvent blocks while moving/resizing on at least Windows)
Helge Norberg [Wed, 28 Oct 2015 16:24:21 +0000 (17:24 +0100)]
* audio_mixer: Fixed bug where int32 -> float -> back to int32 could cause an overflow when the amplitude was at maximum. Changed to double (can represent all integer values of int32, which float can't). Also added graceful clipping instead of overflow support, and diagnostic for when it happens
Helge Norberg [Wed, 28 Oct 2015 14:01:06 +0000 (15:01 +0100)]
* Added logging of severe diagnostics events to log at warning level. graph::set_tag now takes a severity parameter allowing expected tags such as param and seek to not be logged as a warning
Helge Norberg [Tue, 27 Oct 2015 10:09:44 +0000 (11:09 +0100)]
* Removed some redundant logging from AsyncEventServer.
* Removed print() from client_connection in favor of always using address()
* Moved some logging from info to trace.
* Fixed potential lifetime issue with using asio post/dispatch in AsyncEventServer.
* Fixed problem where AsyncEventServer did not log the ip address of the remote client, only the servers address.
* Log the number total number of connections served by one AsyncEventServer on connect and disconnect.
Helge Norberg [Mon, 12 Oct 2015 13:36:00 +0000 (15:36 +0200)]
* Implemented FLS command (font list).
* Fixed some resource leaks in text_producer.
* Load font list each time a text_producer is created to discover fonts uploaded after start.
Helge Norberg [Fri, 9 Oct 2015 09:54:07 +0000 (11:54 +0200)]
* Reenabled unit-test project after move to CMake.
* Reimplemented multichannel audio support from 2.0.7 but using ffmpeg's pan filter.
- Fixed bug in caspar::array where it assumed std::uint8_t instead of T.
- Started using caspar::array for audio as well, to allow for AVFrame to be the storage to avoid unnecessary copying when pan filtering audio.
* Made win32_exception a caspar_exception to enable full stack trace information when an access violation or similar occurs.
* FFMpeg Consumer now send more data via OSC to enable clients to indicate recording progress.
* Code changes required by Visual Studio 2015 including some local disabling of some warnings.
* Removed some workarounds previously required for Visual Studio 2013 but not for 2015.
* win32_exception is now a caspar_exception to allow complete stack trace information to be attached.
* streaming_consumer.cpp is now more backwards compatible with ffmpeg_consumer.cpp. Will hopefully be able to completely replace it.
* Fixed race condition in io_service shutdown.
* tbb_malloc does not work on vc14 yet. Disabled for now.
* Changed usage of BOOST_THROW_EXCEPTION to CASPAR_THROW_EXCEPTION in all places, to fill in stack trace information.
* Fixed double av_freep in ffmpeg_consumer
* Made all CG commands which operate on a running cg_proxy instance return 404 CG ERROR if no cg_proxy is running.
* Fixed bug in input where video without audio causes input to be ticked to much in the beginning.
* Merged read_fps code from 2.0 to 2.1 for correctly detecting framerate.
* Changed logging of execution of AMCP commands.
* Changed to int to simplify code in places in the photoshop producer where the exact size of the integer is not essential to correctly parse the document.
* Fixed subtle bug in photoshop producer where an uint16 was casted to int but should have been casted to int16 before casting to int (usually widening, so more than 16 bits).
* Reverted usage of wstring in pdf_reader to string.
* Fixed bug where lexical_cast from double to string in Linux where swprintf was used under the hood causing , to always be used regardless of C-locale or C++-locale by defining BOOST_NO_SWPRINTF on Linux.
* Added better info() to scene_producer.
* PSD producer is now implemented with more portable cstdint types where applicable.
* Added a lot of trace logging to PSD producer to debug file format easier when developing.
* Fixed serious bug in PSD producer where the code was dependant on function arg evaluation order (unspecified in C++).
* Fixed bug in PSD producer where PSD 'long' types should be interpreted as signed 32 bit values instead of unsigned.
* Fixed bug in PSD producer where EngineDict.StyleRun.RunArray..StyleSheet.StyleSheetData.FillColor.Values was not optional.
Helge Norberg [Wed, 26 Aug 2015 16:53:26 +0000 (18:53 +0200)]
* Improved precision of prec_timer on Linux.
* Made screen consumer poll the second field from the yadif filter after the first field has been displayed to better utilize the cpu time.
* Buffer more audio in oal_consumer when higher frame rates are used to reduce the possibility of audio pops.
Helge Norberg [Wed, 19 Aug 2015 15:56:28 +0000 (17:56 +0200)]
* Removed provide sync support from newtek_ivga_consumer. It didn't work as expected.
* Removed risk of newtek_ivga_consumer lagging the entire channel if bandwidth/cpu power is not sufficient.
Helge Norberg [Tue, 18 Aug 2015 20:14:01 +0000 (22:14 +0200)]
- Removed need of non-deterministic sleeps during server shutdown.
- Made KILL and RESTART shutdown as cleanly as "q".
- Added logging to some destructors to help when debugging shutdown issues.
- Fixed some deadlocks/lifetime issues.
Helge Norberg [Fri, 14 Aug 2015 14:43:33 +0000 (16:43 +0200)]
* Installed general protection fault handler in more places.
* Catch and log exceptions in all custom boost::threads
* Log the thread name when logging stack traces.
* Fixed bug in AsyncEventServer destructor where "this" will be destroyed when a posted task is executed.
Helge Norberg [Tue, 11 Aug 2015 17:55:56 +0000 (19:55 +0200)]
* Enforce help descriptions for consumers in code.
* Added HELP CONSUMER command to list available consumers and get help for them.
* Updated generate_docs.cpp to also include a wiki page for the consumers.
* Enforce help descriptions for producers in code.
* Added HELP PRODUCER command to list available producers and get help for them.
* Updated generate_docs.cpp to also include a wiki page for the producers.
* Refactored so that frame_producers are stored in a frame_producer_registry instance instead of being stored in global variables.
* Created a new executable called generate_docs which generates the relevant parts of the wiki which can be auto generated from the online help.
Helge Norberg [Tue, 30 Jun 2015 12:53:52 +0000 (14:53 +0200)]
* Merged RESUME command.
* Refactored AMCP commands to simply be implemented as free functions instead of a class for each command. Also added support for considering sub commands as a command on their own, to allow for example MixerCommand to be split up into MIXER FILL and MIXER OPACITY etc.
* Also simplified error handling in AMCP commands by embracing the use of exceptions more (letting AMCPCommandQueue.cpp create the error responses based on the type of exception).
* Created an online help system which could also be leveraged for generating parts of the wiki (AMCP command syntax and other artifacts that are tightly coupled to server code). This makes it easier to be forced to write documentation when adding new AMCP commands etc. The actual documentation for each AMCP command is documented close to the implementation of each command, making it easier to catch inconsistencies in the documentation.
* Added possibility for the SWAP command to swap mixer transformations in addition to the layers themselves.
* Fixed bug in INFO TEMPLATE command.
Helge Norberg [Thu, 18 Jun 2015 17:34:46 +0000 (19:34 +0200)]
* Merged layer_producer and channel_producer from 2.0 to the reroute module (replacing the existing implementation).
* In order to support route:// without the same intrusive changes in AMCPCommandsImpl.cpp from 2.0, refactored so that every producer factory gets a list of channels.
* Refactored so that frame_factory and video_format_desc is now part of a type called frame_producer_dependencies. The list of channels needed by reroute producer was also added to this class. Future dependencies will not need a change in the signature of every producer factory.
* Fixed possible race condition in stage.cpp where std::map could be modified from multiple threads
Helge Norberg [Tue, 16 Jun 2015 15:33:43 +0000 (17:33 +0200)]
* Merged streaming_consumer from 2.0
* Merged <CLIENT_IP_ADDRESS> paceholder support on ADD and REMOVE commands
* Made consumers support mixed case parameters, allowing streaming_consumer to work correctly.
* Modified newtek_ivga_consumer AMCP construction to require the parameter DONT_PROVIDE_SYNC instead of the parameter PROVIDE_SYNC, which makes more sense since the default is to provide sync.