]> git.sesse.net Git - casparcg/commit
Implmented a new system to manage to DMA and presenting of frames when using the...
authorJames Wise <james.wise@bluefish444.com>
Fri, 10 Feb 2017 00:40:33 +0000 (11:40 +1100)
committerJames Wise <james.wise@bluefish444.com>
Fri, 10 Feb 2017 00:40:33 +0000 (11:40 +1100)
commitf57e8abe56c9c1afe40c684d0235d1af4eab8e85
tree03f7acd0f07e08c5655ba9166b27282098c2b240
parent2f9317fac4c15420c2f79666354182162c530db6
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.
modules/bluefish/consumer/bluefish_consumer.cpp
modules/bluefish/util/blue_velvet.cpp
modules/bluefish/util/blue_velvet.h