- Posts: 3
- Joined: Thu Feb 28, 2019 2:44 pm
- Real Name: Ralph Koerber
First can you confirm that your PCIe topology is able to capture the 8 input streams. I would first load
the StatusMonitor sample and check the PCIe link width and speed. Also you will need to check your hardware specification to ensure the PCIe bandwidth is not shared by multiple devices, you should refer to your motherboard manual for this detail.
Secondly, please check that you are returning from the IDeckLinkInputCallback::VideoInputFrameArrived callback in a prompt manner. If required add a reference to the videoFrame and push the frame onto another thread for processing, but do not delay return otherwise incoming frames will be queued and eventually dropped.
You should make the following tests for the efficiency of your callback:
- IDeckLinkInput::GetAvailableVideoFrameCount [1] can be used to detect when there is frames being queued by the driver and it is likely that VideoInputFrameArrived callback is not being serviced fast enough to empty the queue.
- IDeckLinkVideoInputFrame::GetHardwareReferenceTimestamp [2] to test the timestamp of the incoming frame against IDeckLinkInput::GetHardwareReferenceClock [3]. The actual values of the timestamps are meaningless, but subsequent calls can be used to measure drift in the callback time.
Cameron
References:
[1] 2.5.4.5 IDeckLinkInput::GetAvailableVideoFrameCount method
[2] 2.5.11.2 IDeckLinkVideoInputFrame:: GetHardwareReferenceTimestamp method
[3] 2.5.4.16 IDeckLinkInput::GetHardwareReferenceClock method