- Posts: 26
- Joined: Wed Jan 04, 2017 12:18 pm
IDecklinkIterator does not report last device when the IDeckLinkInput interfaces are acquired and kept open.
1x Intensity Pro
1x Mini Recorder
4x Quad2 in HalfDuplex mode
A total of 34 devices.
AMD Threadripper 1900x platform
CentOS Linux release 7.9.2009 (Core)
Linux kernel 3.10.0-1160.2.2.el7.x86_64
Blackmagic_Desktop_Video_Linux_11.6.tar
Drivers for all devices are loaded. No dmesg errors, etc.
Firmware updater, DeviceConfigure & DeviceList samples from the SDK see all of the 34 devices.
My intention is to simultaneously capture from all available devices.
Simplified code as follows:
If the call the call to QueryInterface(IID_IDeckLinkInput) is commented out, iterator reports 34 devices as expected:
If QueryInterface(IID_IDeckLinkInput) code is not commented out and IDeckLinkInput interfaces are stored in an array to be used for simultaneous capture, the iterator reports 33 devices. The last device is always missing!
My code works and captures from 33 devices, but not the 34th device because I cannot detect its presence. A SDK issue?
Regards...
1x Intensity Pro
1x Mini Recorder
4x Quad2 in HalfDuplex mode
A total of 34 devices.
AMD Threadripper 1900x platform
CentOS Linux release 7.9.2009 (Core)
Linux kernel 3.10.0-1160.2.2.el7.x86_64
Blackmagic_Desktop_Video_Linux_11.6.tar
Drivers for all devices are loaded. No dmesg errors, etc.
Firmware updater, DeviceConfigure & DeviceList samples from the SDK see all of the 34 devices.
My intention is to simultaneously capture from all available devices.
Simplified code as follows:
- Code: Select all
m_pDecklinkIterator = CreateDeckLinkIteratorInstance();
if ( m_pDecklinkIterator == NULL )
{
LOG_WRITE( ERROR0 , "Cannot create m_pDecklinkIterator. DeckLink drivers may not be installed..." );
}
cardIndex = 0;
while ( m_pDecklinkIterator -> Next( &m_pDecklink[ cardIndex ] ) == S_OK )
{
mbDispName = NULL;
m_pDecklink[ cardIndex ] -> GetDisplayName( &mbDispName );
LOG_WRITE( DEBUG3 , "DEVICE[%02d] ==> %s" , cardIndex , mbDispName );
free( ( void * )mbDispName ); // Allocated from inside Decklink API. free() should be used.
/*
LOG_WRITE( DEBUG3 , "Getting input interface of DEVICE[%02d]" , cardIndex );
hr = m_pDecklink[ cardIndex ] -> QueryInterface( IID_IDeckLinkInput , ( void ** )&m_pDecklinkInput[ cardIndex ] );
if ( FAILED( hr ) )
{
LOG_WRITE( ERROR0 , "Cannot get m_pDecklinkInput interface. 0x%08x" , hr );
}
*/
/*
** Next ?
*/
cardIndex++;
}
m_pDecklinkIterator -> Release();
If the call the call to QueryInterface(IID_IDeckLinkInput) is commented out, iterator reports 34 devices as expected:
DEVICE[00] ==> Intensity Pro
DEVICE[01] ==> DeckLink Mini Recorder
DEVICE[02] ==> DeckLink-Quad-1-1
DEVICE[03] ==> DeckLink-Quad-1-2
DEVICE[04] ==> DeckLink-Quad-1-3
DEVICE[05] ==> DeckLink-Quad-1-4
DEVICE[06] ==> DeckLink-Quad-1-5
DEVICE[07] ==> DeckLink-Quad-1-6
DEVICE[08] ==> DeckLink-Quad-1-7
DEVICE[09] ==> DeckLink-Quad-1-8
DEVICE[10] ==> DeckLink-Quad-2-1
DEVICE[11] ==> DeckLink-Quad-2-2
DEVICE[12] ==> DeckLink-Quad-2-3
DEVICE[13] ==> DeckLink-Quad-2-4
DEVICE[14] ==> DeckLink-Quad-2-5
DEVICE[15] ==> DeckLink-Quad-2-6
DEVICE[16] ==> DeckLink-Quad-2-7
DEVICE[17] ==> DeckLink-Quad-2-8
DEVICE[18] ==> DeckLink-Quad-3-1
DEVICE[19] ==> DeckLink-Quad-3-2
DEVICE[20] ==> DeckLink-Quad-3-3
DEVICE[21] ==> DeckLink-Quad-3-4
DEVICE[22] ==> DeckLink-Quad-3-5
DEVICE[23] ==> DeckLink-Quad-3-6
DEVICE[24] ==> DeckLink-Quad-3-7
DEVICE[25] ==> DeckLink-Quad-3-8
DEVICE[26] ==> DeckLink-Quad-4-1
DEVICE[27] ==> DeckLink-Quad-4-2
DEVICE[28] ==> DeckLink-Quad-4-3
DEVICE[29] ==> DeckLink-Quad-4-4
DEVICE[30] ==> DeckLink-Quad-4-5
DEVICE[31] ==> DeckLink-Quad-4-6
DEVICE[32] ==> DeckLink-Quad-4-7
DEVICE[33] ==> DeckLink-Quad-4-8
If QueryInterface(IID_IDeckLinkInput) code is not commented out and IDeckLinkInput interfaces are stored in an array to be used for simultaneous capture, the iterator reports 33 devices. The last device is always missing!
DEVICE[00] ==> Intensity Pro
Getting input interface of DEVICE[00]
DEVICE[01] ==> DeckLink Mini Recorder
Getting input interface of DEVICE[01]
DEVICE[02] ==> DeckLink-Quad-1-1
Getting input interface of DEVICE[02]
DEVICE[03] ==> DeckLink-Quad-1-2
Getting input interface of DEVICE[03]
DEVICE[04] ==> DeckLink-Quad-1-3
Getting input interface of DEVICE[04]
DEVICE[05] ==> DeckLink-Quad-1-4
Getting input interface of DEVICE[05]
DEVICE[06] ==> DeckLink-Quad-1-5
Getting input interface of DEVICE[06]
DEVICE[07] ==> DeckLink-Quad-1-6
Getting input interface of DEVICE[07]
DEVICE[08] ==> DeckLink-Quad-1-7
Getting input interface of DEVICE[08]
DEVICE[09] ==> DeckLink-Quad-1-8
Getting input interface of DEVICE[09]
DEVICE[10] ==> DeckLink-Quad-2-1
Getting input interface of DEVICE[10]
DEVICE[11] ==> DeckLink-Quad-2-2
Getting input interface of DEVICE[11]
DEVICE[12] ==> DeckLink-Quad-2-3
Getting input interface of DEVICE[12]
DEVICE[13] ==> DeckLink-Quad-2-4
Getting input interface of DEVICE[13]
DEVICE[14] ==> DeckLink-Quad-2-5
Getting input interface of DEVICE[14]
DEVICE[15] ==> DeckLink-Quad-2-6
Getting input interface of DEVICE[15]
DEVICE[16] ==> DeckLink-Quad-2-7
Getting input interface of DEVICE[16]
DEVICE[17] ==> DeckLink-Quad-2-8
Getting input interface of DEVICE[17]
DEVICE[18] ==> DeckLink-Quad-3-1
Getting input interface of DEVICE[18]
DEVICE[19] ==> DeckLink-Quad-3-2
Getting input interface of DEVICE[19]
DEVICE[20] ==> DeckLink-Quad-3-3
Getting input interface of DEVICE[20]
DEVICE[21] ==> DeckLink-Quad-3-4
Getting input interface of DEVICE[21]
DEVICE[22] ==> DeckLink-Quad-3-5
Getting input interface of DEVICE[22]
DEVICE[23] ==> DeckLink-Quad-3-6
Getting input interface of DEVICE[23]
DEVICE[24] ==> DeckLink-Quad-3-7
Getting input interface of DEVICE[24]
DEVICE[25] ==> DeckLink-Quad-3-8
Getting input interface of DEVICE[25]
DEVICE[26] ==> DeckLink-Quad-4-1
Getting input interface of DEVICE[26]
DEVICE[27] ==> DeckLink-Quad-4-2
Getting input interface of DEVICE[27]
DEVICE[28] ==> DeckLink-Quad-4-3
Getting input interface of DEVICE[28]
DEVICE[29] ==> DeckLink-Quad-4-4
Getting input interface of DEVICE[29]
DEVICE[30] ==> DeckLink-Quad-4-5
Getting input interface of DEVICE[30]
DEVICE[31] ==> DeckLink-Quad-4-6
Getting input interface of DEVICE[31]
DEVICE[32] ==> DeckLink-Quad-4-7
Getting input interface of DEVICE[32]
My code works and captures from 33 devices, but not the 34th device because I cannot detect its presence. A SDK issue?
Regards...