James Wise [Fri, 10 Feb 2017 00:40:33 +0000 (11:40 +1100)]
Implmented a new system to manage to DMA and presenting of frames when using the bluefish hadrware.
This system uses FIFO mode on the hadware which allows for some degree of buffering on the card.
Frames are copied from caspar to a internal Q, a seperate thread then extracts frames from the Q, and does the DMA and present calls.
This system removes our DMA from the core loop of Caspar, and allows up to a full frames time to be used for the DMA.
- Important when using multiple channels.
Moved the Wait for Sync caLl to happen after the Memcopy, this should create a more stable sync time.
No longer need to set the executor thread to high priority, but setting the std::thread that i am using for the DMA to highest priority.
This change results in much better performance when doing multiple streams.
This change required some additional functions to be added to the blue_velvet.h/cpp files too,
to properly support the FIFO playback mode.
Also minor change to tell the Keyer that data is pre-multiplied when we receive it.
James Wise [Wed, 8 Feb 2017 05:53:00 +0000 (16:53 +1100)]
Changes to support the new way of setting bluefish properties.
now using a,b,c,d for channel selectiong and the keyer property to determine 422, v 4224v interna hardware keyer usage and configuration.
Changes to the casparcg.config file reflect this and provide limited documentation of usage.
aslo changed the executor priority to be highest possible, as this is required for the thread that the DMA happens on.
(building of scatter gather table and actual DMA should never yield to a less important thread)
Helge Norberg [Tue, 7 Feb 2017 18:32:02 +0000 (19:32 +0100)]
[scene] Initial work in progress XML Schema for creating Scene producer XML files. Allows for auto completion/validation/online documentation with a good XML editor
James Wise [Mon, 6 Feb 2017 22:33:58 +0000 (09:33 +1100)]
Modify the init of the function ptrs to be in the header instead of in the init_funtion_pointers func.
(stupid, dont know why i didn't do this in the first place...)
James Wise [Fri, 3 Feb 2017 04:54:11 +0000 (15:54 +1100)]
Update previous files to be more in line with CasparCG coding styles.
removed almost all sue of CamelCase, now using all smalls and underscores where possible.
Many fixes according to suggestions from @HellGore,
Including but not limited to:
Better use of RAII and shared ptr objects.
Removal of unrequired functions
Removal of system that checks if a driver is present before adding a bluefish consumer to registry.
Removal of static get/set card property funcs
Init'ing all functions ptr to nullptr.
NOT done yet:
possible modification of argument name
James Wise [Sun, 29 Jan 2017 18:02:32 +0000 (05:02 +1100)]
Add new files to the Bluefish module.
New Dir - interop, contains all the headers required to build the bluefish module.
Also updated to use latest version of these header file, and now using the BlueVelvetC and BlueVelvetCUtils interface, instead of older depreceated one.
James Wise [Sun, 29 Jan 2017 17:59:08 +0000 (04:59 +1100)]
Modifications to the files within the Bluefish module.
Changed the Bluefish internal stuff to use the BlueVelvetC API.
Now using an internal class ( BVCWrapper) that contains function pointers, so module will only get loaded if BF hardware and driver is present.
Updated inner workings to better support latest and different version of bluefish hardware.
Added support for using multiple channels
Added support multiple cards.
Added support for using the onboard keyer
Improved routing and configuration.
walterav1984 [Sun, 29 Jan 2017 13:10:42 +0000 (14:10 +0100)]
dirty hack replace shipped ffmpeg linux libs with compiled ones!
If this is done prior to building CasparCG Server with "/build-scripts/set-variables-and-build-linux.sh" building will include the custom ffmpeg version!
Helge Norberg [Fri, 27 Jan 2017 18:43:29 +0000 (19:43 +0100)]
[build] Added the modified build script based on an old version of https://github.com/zimbatm/ffmpeg-static that has been used to build the Linux ffmpeg binaries
Helge Norberg [Fri, 27 Jan 2017 16:26:36 +0000 (17:26 +0100)]
[image_mixer] #486 Fixed bug where glReadPixels() was done from the last drawn to texture instead of always from the target texture. This means that for example a MIXER KEYER layer without a layer above to key, as well as a separate alpha file with MIXER OPACITY 0 now works as expected
Helge Norberg [Tue, 17 Jan 2017 16:45:54 +0000 (17:45 +0100)]
[AMCP] #475 Added special command REQ that can be prepended before any command to identify the response with a client specified request id, allowing a client to know exactly what asynchronous response matched a specific request.
Helge Norberg [Thu, 12 Jan 2017 16:54:13 +0000 (17:54 +0100)]
[mixer] Rewrote the chroma key code to support variable hue, instead of fixed green or blue. Threshold setting was removed in favour of separate hue width, minimum saturation and minimum brightness constraints.
Helge Norberg [Tue, 15 Nov 2016 17:17:15 +0000 (18:17 +0100)]
[flash] Moved template host copying to flash module startup instead from env setup so that errors during copying is logged to the log file (setup after env setup) in addition to console. This also removes flash specific code from core.