private void SetCurrentCrossbarInput( IAMCrossbar crossbar, VideoInput videoInput )
{
if ( videoInput.Type != PhysicalConnectorType.Default )
{
int inPinsCount, outPinsCount;
// gen number of pins in the crossbar
if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 )
{
int videoOutputPinIndex = -1;
int videoInputPinIndex = -1;
int pinIndexRelated;
PhysicalConnectorType type;
// find index of the video output pin
for ( int i = 0; i < outPinsCount; i++ )
{
if ( crossbar.get_CrossbarPinInfo( false, i, out pinIndexRelated, out type ) != 0 )
continue;
if ( type == PhysicalConnectorType.VideoDecoder )
{
videoOutputPinIndex = i;
break;
}
}
// find index of the required input pin
for ( int i = 0; i < inPinsCount; i++ )
{
if ( crossbar.get_CrossbarPinInfo( true, i, out pinIndexRelated, out type ) != 0 )
continue;
if ( ( type == videoInput.Type ) && ( i == videoInput.Index ) )
{
videoInputPinIndex = i;
break;
}
}
// try connecting pins
if ( ( videoInputPinIndex != -1 ) && ( videoOutputPinIndex != -1 ) &&
( crossbar.CanRoute( videoOutputPinIndex, videoInputPinIndex ) == 0 ) )
{
crossbar.Route( videoOutputPinIndex, videoInputPinIndex );
}
}
}
}