IDecklink::GetDisplayName() returns non-unique for Duo2

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

altug.simsek

  • Posts: 26
  • Joined: Wed Jan 04, 2017 12:18 pm

IDecklink::GetDisplayName() returns non-unique for Duo2

PostThu Oct 24, 2019 2:00 pm

2 x Duo2 cards installed.
Driver 11.4.1.
SDK 11.4.

8 cards are queried by using IDeckLinkIterator::Next().
The values returned from IDecklink::GetDisplayName() are like:

DeckLink Duo (1)
DeckLink Duo (2)
DeckLink Duo (3)
DeckLink Duo (4)
DeckLink Duo (1)
DeckLink Duo (2)
DeckLink Duo (3)
DeckLink Duo (4)

It seems to return the same displayName for each port on 2 different Duo2 cards.

Tested the same issue with multiple Decklink SDI cards. No such problems.

The SDK documentation says:

The GetDisplayName method returns a string suitable for display in a user interface. If the
device has a custom label specified (see bmdDeckLinkConfigDeviceInformationLabel),
the label will be used as the display name for the device.
Otherwise, the string is made of the model name (as returned by GetModelName) followed
by an increasing number (starting from 1) if more than one instance of a device is present in
the system. If not, the returned string is simply the model name.


Is this a driver bug or a new feature, bmdDeckLinkConfigDeviceInformationLabel?
We do not set anything like bmdDeckLinkConfigDeviceInformationLabel.
Offline

altug.simsek

  • Posts: 26
  • Joined: Wed Jan 04, 2017 12:18 pm

Re: IDecklink::GetDisplayName() returns non-unique for Duo2

PostSat Oct 26, 2019 9:40 am

If we set custom labels for each port from Control Panel utility, GetDisplayName() returns the values we set.

If we do not set custom labels, the problem occurs as described.
Offline

Cameron Nichols

Blackmagic Design

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

Re: IDecklink::GetDisplayName() returns non-unique for Duo2

PostMon Oct 28, 2019 12:32 am

Hi Altug,

You can programmatically set the Device label via the BMDDeckLinkConfigurationID bmdDeckLinkConfigDeviceInformationLabel [1] by calling IDeckLinkConfiguration::SetString() [2]. You will need to then call IDeckLinkConfiguration::WriteConfigurationToPreferences() method [3] to ensure that the setting is persistent after IDeckLinkConfiguration interface object is released. This process is demonstrated in the DeviceConfiguration SDK sample and is equivalent to setting the device label in the Desktop Video Setup application. This feature was introduced in Desktop Video SDK 10.4.

Each of the DeckLink Duo 2 cards has its own unique persistent ID, so the labels will be persistent with the matching ID. Older cards such as the DeckLink SDI do not have the persistent ID, so you cannot write to the bmdDeckLinkConfigDeviceInformationLabel setting. The default labels will occur when there is no string set against the bmdDeckLinkConfigDeviceInformationLabel configuration.

You may need to remove 1 card whilst writing the labels for the other so you can initially differentiate each card.

Regards
Cameron

References (DeckLink SDK Manual):
[1] 2.7.18 DeckLink Configuration ID
[2] 2.5.15.8 IDeckLinkConfiguration::SetString method
[3] 2.5.15.9 IDeckLinkConfiguration::WriteConfigurationToPreferences method
Offline

altug.simsek

  • Posts: 26
  • Joined: Wed Jan 04, 2017 12:18 pm

Re: IDecklink::GetDisplayName() returns non-unique for Duo2

PostMon Oct 28, 2019 8:43 am

So, under default settings, if we do not write any persistent labels, is there any way to make those new cards, behave like the old ones?

I mean, multiple cards populated & each port is given a unique DisplayName with auto incrementing indices (xx) ?

When the driver is installed, without any further settings, I would expect to see:

DeckLink Duo (1)
DeckLink Duo (2)
DeckLink Duo (3)
DeckLink Duo (4)
DeckLink Duo (5)
DeckLink Duo (6)
DeckLink Duo (7)
DeckLink Duo (8)

As in the good old days.

I can set those values manually by using the Control Panel Utility, of course.
Would this be the solution you propose, if I am unwilling to deal with configuring card labels programatically?

Return to Software Developers

Who is online

Users browsing this forum: No registered users and 12 guests