BlackMagic DeckLink - Hash in Sources

Hi,
I am working on a way to do source configuration using web. Most of it works just fine, but I am stuck on one bit. We use BlackMagic Decklink Duo Cards - and in the source configuration when you configure through OBS UI you get the following entry:

{
"deinterlace_field_order": 0,
"deinterlace_mode": 0,
"enabled": true,
"flags": 0,
"hotkeys": {
"libobs.mute": [],
"libobs.push-to-mute": [],
"libobs.push-to-talk": [],
"libobs.unmute": []
},
"id": "decklink-input",
"mixers": 0,
"monitoring_type": 0,
"muted": false,
"name": "Blackmagic enhet",
"push-to-mute": false,
"push-to-mute-delay": 0,
"push-to-talk": false,
"push-to-talk-delay": 0,
"settings": {
"device_hash": "1747275249_DeckLink Duo 2",
"device_name": "DeckLink Duo (2)",
"mode_id": -1,
"mode_name": "Auto"
},
"sync": 0,
"volume": 1.0
},

Notice the device HASH.

However, when we use the BlackMagic SDK to find the attached cards for that computer, it list up the card but the hash that it displays is as follows - notice the second entry which has the same qualified name as the source above referes to but the hash does not match:

DECKLINK DEVICES:
[DECKLINK] DeckLink Duo 2 'DeckLink Duo (1)' - HASH: '2383799'
[DECKLINK] DeckLink Duo 2 'DeckLink Duo (2)' - HASH: '21454193'
[DECKLINK] DeckLink Duo 2 'DeckLink Duo (3)' - HASH: '58870012'
[DECKLINK] DeckLink Duo 2 'DeckLink Duo (4)' - HASH: '60068066'

How does OBS set the HASH in the configuration files? I tried to read up on the code, but C isn't my strong suite and I didn't quite manage to locate it.
 

pkv

Developer
const std::string& DeckLinkDevice::GetHash(void) const
{
return hash;
}
l. 128 decklink-device.cpp
& also l 31 decklink-device.hpp
 
Thanks pkv, you put me in the right direction. While it's true they return the hash as I call it, if you notice on line 100 and forward in decklink-device.cpp you see that they actually use something else as "hash". But then I know how it's put together :-)

int64_t value;
if (attributes->GetInt(BMDDeckLinkPersistentID, &value) != S_OK &&
attributes->GetInt(BMDDeckLinkTopologicalID, &value) != S_OK)
return true;
std::ostringstream os;
os << value << "_" << name;
hash = os.str();
 
Top