Esempio n. 1
0
        protected ArrayList findAudioSources(ICaptureGraphBuilder2 graphBuilder, IBaseFilter deviceFilter)
        {
            ArrayList sources = new ArrayList();
            IAMAudioInputMixer audioInputMixer = deviceFilter as IAMAudioInputMixer;
            if ( audioInputMixer != null )
            {
                // Get a pin enumerator off the filter
                IEnumPins pinEnum;
                int hr = deviceFilter.EnumPins( out pinEnum );
                pinEnum.Reset();
                if( (hr == 0) && (pinEnum != null) )
                {
                    // Loop through each pin
                    IPin[] pins = new IPin[1];
                    int f;
                    do
                    {
                        // Get the next pin
                        hr = pinEnum.Next( 1, pins, out f );
                        if( (hr == 0) && (pins[0] != null) )
                        {
                            // Is this an input pin?
                            PinDirection dir = PinDirection.Output;
                            hr = pins[0].QueryDirection( out dir );
                            if( (hr == 0) && (dir == (PinDirection.Input)) )
                            {
                                // Add the input pin to the sources list
                                AudioSource source = new AudioSource( pins[0] );
                                sources.Add( source );
                            }
                            pins[0] = null;
                        }
                    }
                    while( hr == 0 );

                    Marshal.ReleaseComObject( pinEnum ); pinEnum = null;
                }
            }

            // If there is only one source, don't return it
            // because there is nothing for the user to choose.
            // (Hopefully that single source is already enabled).
            if ( sources.Count == 1 )
                sources.Clear();

            return( sources );
        }
 protected ArrayList findAudioSources(ICaptureGraphBuilder2 graphBuilder, IBaseFilter deviceFilter)
 {
     ArrayList list = new ArrayList();
     if (deviceFilter is IAMAudioInputMixer)
     {
         IEnumPins pins;
         int num = deviceFilter.EnumPins(out pins);
         pins.Reset();
         if ((num == 0) && (pins != null))
         {
             IPin[] ppPins = new IPin[1];
             do
             {
                 int num2;
                 num = pins.Next(1, ppPins, out num2);
                 if ((num == 0) && (ppPins[0] != null))
                 {
                     PinDirection output = PinDirection.Output;
                     num = ppPins[0].QueryDirection(out output);
                     if ((num == 0) && (output == PinDirection.Input))
                     {
                         AudioSource source = new AudioSource(ppPins[0]);
                         list.Add(source);
                     }
                     ppPins[0] = null;
                 }
             }
             while (num == 0);
             Marshal.ReleaseComObject(pins);
             pins = null;
         }
     }
     if (list.Count == 1)
     {
         list.Clear();
     }
     return list;
 }