Difference between revisions of "Neurobs Presentation"
(17 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {{see also|Presentation}} | |
− | + | This page documents some bugs we encountered in Presentation. Users should go to the [[Presentation]] page. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Screen synchronization issue on 120 Hz screens == | == Screen synchronization issue on 120 Hz screens == | ||
− | There is a serious | + | There is a serious synchronization issue where the picture.present() method returns one frame too early. It can be detected by measuring the time between two consecutive present() calls returning: |
<pre> | <pre> | ||
− | wait_interval(220) | + | wait_interval(220); |
− | picture1.present() | + | picture1.present(); |
int t0 = clock.time(); | int t0 = clock.time(); | ||
picture2.present(); | picture2.present(); | ||
Line 85: | Line 16: | ||
One would expect ''picture1'' to be shown for 1 frame (1/120 s) and time ''dt'' to show this. Sometimes this is not the case. The image will be shown for one frame (1/120 s), but ''dt'' will be 2/120 s: | One would expect ''picture1'' to be shown for 1 frame (1/120 s) and time ''dt'' to show this. Sometimes this is not the case. The image will be shown for one frame (1/120 s), but ''dt'' will be 2/120 s: | ||
− | [[File:Timeline.svg|none| | + | [[File:Timeline.svg|400px|none|synchronization bug timeline]] |
The fact that ''picture1'' is shown for only 1/120 s was confirmed with a light sensor connected to an oscilloscope. | The fact that ''picture1'' is shown for only 1/120 s was confirmed with a light sensor connected to an oscilloscope. | ||
− | The chance of this issue occurring is highly | + | The chance of this issue occurring is highly dependent on the waiting time prior to the first ''present()'' call: |
− | [[File:Occurrence.png|none| | + | [[File:Occurrence.png|400px|none|synchronization bug occurrence]] |
Neurobs people seem to [http://www.neurobs.com/menu_support/menu_forums/view_thread?id=9463&expand_all=1 think] it has something to do with triple buffering, but the graph above was created without triple buffering enabled. | Neurobs people seem to [http://www.neurobs.com/menu_support/menu_forums/view_thread?id=9463&expand_all=1 think] it has something to do with triple buffering, but the graph above was created without triple buffering enabled. | ||
+ | [[File:Failsync2.png|none|Difference of arrival times of two consecutive markers (no red bars are hidden)]] | ||
+ | |||
+ | <!--==References== | ||
+ | <references/>--> |
Latest revision as of 10:36, 18 January 2016
This page documents some bugs we encountered in Presentation. Users should go to the Presentation page.
Screen synchronization issue on 120 Hz screens
There is a serious synchronization issue where the picture.present() method returns one frame too early. It can be detected by measuring the time between two consecutive present() calls returning:
wait_interval(220); picture1.present(); int t0 = clock.time(); picture2.present(); int t1 = clock.time(); int dt = t1-t0;
One would expect picture1 to be shown for 1 frame (1/120 s) and time dt to show this. Sometimes this is not the case. The image will be shown for one frame (1/120 s), but dt will be 2/120 s:
The fact that picture1 is shown for only 1/120 s was confirmed with a light sensor connected to an oscilloscope.
The chance of this issue occurring is highly dependent on the waiting time prior to the first present() call:
Neurobs people seem to think it has something to do with triple buffering, but the graph above was created without triple buffering enabled.