Decklink's board internal oscillator accuracy
Posted: Tue Oct 02, 2018 11:34 am
During some synchronizations issue researches, i found that harware clocking of Decklink board is not stable and depends on model.
I did a test application what save time provided by:
on each
callback.
i have TWO boards: DeckLink Mini Monitor and DeckLink Dou
DecklinkDuo board has no external reference connected - it is running on internal oscillator
i did a median filters of captured timer value and FOUND that it is drifting against TSC, that is not a problem because there are no guaranty about CPU frequency oscillator stability.
PROBLEM is that two boards drifting differently:
DeckLink Mini Monitor drifts about
DeckLink SDI(1) and DeckLink SDI (2) drifts about
per frame...
Test system has latest intel cpu with invariant tsc and turned off cpu frequency scale. Decklink driver is 10.9.12a3
I did a test application what save time provided by:
- Code: Select all
struct timespec tm;
clock_gettime(CLOCK_MONOTONIC_RAW, &tm);
int64_t T = tm.tv_nsec + tm.tv_sec * 1000000000LL;
T = T % 40000000LL;
on each
- Code: Select all
virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(IDeckLinkVideoFrame *_frame, BMDOutputFrameCompletionResult result)
callback.
i have TWO boards: DeckLink Mini Monitor and DeckLink Dou
DecklinkDuo board has no external reference connected - it is running on internal oscillator
i did a median filters of captured timer value and FOUND that it is drifting against TSC, that is not a problem because there are no guaranty about CPU frequency oscillator stability.
PROBLEM is that two boards drifting differently:
DeckLink Mini Monitor drifts about
- Code: Select all
124507 ns / 250 frames = 500 ns
DeckLink SDI(1) and DeckLink SDI (2) drifts about
- Code: Select all
288157 ns / 250 frames = 1152 ns
per frame...
Test system has latest intel cpu with invariant tsc and turned off cpu frequency scale. Decklink driver is 10.9.12a3