private VideoInput[] ColletCrossbarVideoInputs( IAMCrossbar crossbar )
{
lock ( cacheCrossbarVideoInputs )
{
if ( cacheCrossbarVideoInputs.ContainsKey( deviceMoniker ) )
{
return cacheCrossbarVideoInputs[deviceMoniker];
}
List<VideoInput> videoInputsList = new List<VideoInput>( );
if ( crossbar != null )
{
int inPinsCount, outPinsCount;
// gen number of pins in the crossbar
if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 )
{
// collect all video inputs
for ( int i = 0; i < inPinsCount; i++ )
{
int pinIndexRelated;
PhysicalConnectorType type;
if ( crossbar.get_CrossbarPinInfo( true, i, out pinIndexRelated, out type ) != 0 )
continue;
if ( type < PhysicalConnectorType.AudioTuner )
{
videoInputsList.Add( new VideoInput( i, type ) );
}
}
}
}
VideoInput[] videoInputs = new VideoInput[videoInputsList.Count];
videoInputsList.CopyTo( videoInputs );
cacheCrossbarVideoInputs.Add( deviceMoniker, videoInputs );
return videoInputs;
}
}