Accord.Video.DirectShow.Internals.Tools.GetPin C# (CSharp) Method

GetPin() public static method

Get filter's pin.
public static GetPin ( IBaseFilter filter, PinDirection dir, int num ) : IPin
filter IBaseFilter Filter to get pin of.
dir PinDirection Pin's direction.
num int Pin's number.
return IPin
        public static IPin GetPin( IBaseFilter filter, PinDirection dir, int num )
        {
            IPin[] pin = new IPin[1];
            IEnumPins pinsEnum = null;

            // enum filter pins
            if ( filter.EnumPins( out pinsEnum ) == 0 )
            {
                PinDirection pinDir;
                int n;

                try
                {
                    // get next pin
                    while ( pinsEnum.Next( 1, pin, out n ) == 0 )
                    {
                        // query pin`s direction
                        pin[0].QueryDirection( out pinDir );

                        if ( pinDir == dir )
                        {
                            if ( num == 0 )
                                return pin[0];
                            num--;
                        }

                        Marshal.ReleaseComObject( pin[0] );
                        pin[0] = null;
                    }
                }
                finally
                {
                    Marshal.ReleaseComObject( pinsEnum );
                }
            }
            return null;
        }