Page 1 of 1

Problem with Decklink SDK (DecklinkAPI.dll) in VB.NET

PostPosted: Thu Feb 28, 2019 2:56 pm
by RalphKoerber
Hello,

we use the Decklink SDK (DecklinkAPI.dll) in VB.NET to record all 8 devices from a Decklink Quad 2 Card.
In doing so, we lose frames when we use more than 2 devices (Interval > 100ms)
Is it possible that there is a setting on the card that disable this interval or is the problem already known here in the forum?

Kindest regards,
Ralph Koerber

Re: Problem with Decklink SDK (DecklinkAPI.dll) in VB.NET

PostPosted: Mon Mar 04, 2019 12:13 am
by Cameron Nichols
Hi Ralph,

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.
Regards
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

Re: Problem with Decklink SDK (DecklinkAPI.dll) in VB.NET

PostPosted: Wed Mar 06, 2019 11:14 am
by RalphKoerber
Dear Cameron,
thank you for your Response.

This data is shown to us in the Status Monitor:
Busy: 00000000
Duplex Mode: half-duplex
PCIe Link Width: 4x
PCIe Link Speed: Gen. 2
Video Input Signal Locked: no
Current Video Input Mode: 1080i59.94
Current Video Input Flags: 00000000
Current Video Input Pixel Format: 10-bit YUV
Current Video Output Mode: 1080i50
Current Video Output Flags: 00000000
Last Video Output Pixel Format: 10-bit YUV
Reference Signal Locked: no
Reference Signal Mode: Unknown

When we retrieve and record all 8 devices via DirectShow, it seems to work (without compression).
So it can't be at the PCIe interface, can it?

Kindest regards,
Ralph

Re: Problem with Decklink SDK (DecklinkAPI.dll) in VB.NET

PostPosted: Wed Mar 27, 2019 6:02 pm
by RalphKoerber
Hi,

we found a solution.
We change our Hardware (Motherboard, RAM, CPU and Graphics)

Kindest regards,
Ralph