I'm trying to get a better understanding of how timing synchronization is handled in OpenViBE, with future real-time applications in mind.
Using some BCI protocols and experiments, some time desynchronization effects were observed by my colleagues.
The presence of a delay between the time of generation of a particular stimulation and the time of its processing by a box downstream (for instance, the stimulus being recorded by a CSV saver box) is not troublesome if this delay is short and has a small variance (enough to be considered constant, in order to be compensated).
Through a simple test protocol, I'm trying to evaluate how stimulation timestamps are propagated through a running scenario, to see if I can highlight time delays, and also evaluate the impact of processing box either along the way (e.g. acquisition server/client) or in parallel (with processing/visualization boxes running on the side).
So far, my test scenario is composed of :
- a "Lua stimulator" box generating stimulations (LEFT & EOT) at regular intervals (250ms)
- a "Display Cue Image" box displaying a simple white image upon reception of the LEFT stimulation, and a black one upon reception of the EOT stimulation, and which (if I understand correctly) transfers the stimulation to the Acquisition Server
- The Acquistion Server generates a 16Hz Sawtooth signal, and sends it along with the received stimulations to the Acquisition Client
- A few recording boxes save the stimulations (and signal when appliable) at different points in the chain : right after generating stimulations, and after the Acquisition Client (in order in that case to see the impact the Acquisition Server/Client mechanism has on the timestamps)
- Running OpenViBE on Linux (Ubuntu 16.04), the stimulation times recorded after the Acq Client are a few ms (15-20) after the ones recorded right at the generation of the stimulation.
- However using Windows, the times recorded after the Acq Client are anterior to the ones at the generation (by ~30ms)... If I use a more complex scenario, keeping the core (LUA stimulator, ACQ Server/Client, CSV savers) but adding lots of signal processing boxes and visualizations, the recorded times
- Do you have any idea of what would cause this seemingly incoherent effect on the timestamps? Maybe some modification or compensation that I did not take into account?