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

Ask software engineering and SDK questions for developers working on Mac OS X, Windows or Linux.
  • Author
  • Message
Offline

RalphKoerber

  • Posts: 3
  • Joined: Thu Feb 28, 2019 2:44 pm
  • Real Name: Ralph Koerber

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

PostThu Feb 28, 2019 2:56 pm

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
Offline

Cameron Nichols

Blackmagic Design

  • Posts: 167
  • Joined: Mon Sep 04, 2017 4:05 am

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

PostMon Mar 04, 2019 12:13 am

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
Offline

RalphKoerber

  • Posts: 3
  • Joined: Thu Feb 28, 2019 2:44 pm
  • Real Name: Ralph Koerber

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

PostWed Mar 06, 2019 11:14 am

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
Offline

RalphKoerber

  • Posts: 3
  • Joined: Thu Feb 28, 2019 2:44 pm
  • Real Name: Ralph Koerber

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

PostWed Mar 27, 2019 6:02 pm

Hi,

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

Kindest regards,
Ralph

Return to Software Developers

Who is online

Users browsing this forum: No registered users and 1 guest