* dshow.cpp : DirectShow access module for vlc
*****************************************************************************
* Copyright (C) 2002, 2003 VideoLAN
- * $Id: dshow.cpp,v 1.25 2004/01/25 17:31:22 gbazin Exp $
+ * $Id: dshow.cpp,v 1.26 2004/01/28 16:46:52 gbazin Exp $
*
* Author: Gildas Bazin <gbazin@netcourrier.com>
*
{
IEnumPins *p_enumpins;
IPin *p_output_pin;
- ULONG i_fetched;
if( S_OK != p_filter->EnumPins( &p_enumpins ) ) return false;
- while( S_OK == p_enumpins->Next( 1, &p_output_pin, &i_fetched ) )
+ while( S_OK == p_enumpins->Next( 1, &p_output_pin, NULL ) )
{
if( S_OK == p_graph->ConnectDirect( p_output_pin, p_input_pin, 0 ) )
{
+ p_output_pin->Release();
p_enumpins->Release();
return true;
}
+ p_output_pin->Release();
}
p_enumpins->Release();
* filter.c : DirectShow access module for vlc
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: filter.cpp,v 1.11 2004/01/26 18:24:17 gbazin Exp $
+ * $Id: filter.cpp,v 1.12 2004/01/28 16:46:52 gbazin Exp $
*
* Author: Gildas Bazin <gbazin@netcourrier.com>
*
msg_Dbg( p_input, "CaptureEnumPins::Next" );
#endif
- *pcFetched = 0;
+ unsigned int i_fetched = 0;
if( i_position < 1 && cPins > 0 )
{
IPin *pPin = p_filter->CustomGetPin();
*ppPins = pPin;
pPin->AddRef();
- *pcFetched = 1;
+ i_fetched = 1;
i_position++;
}
- return *pcFetched == cPins ? NOERROR : S_FALSE;
+ if( pcFetched ) *pcFetched = i_fetched;
+
+ return (i_fetched == cPins) ? S_OK : S_FALSE;
};
STDMETHODIMP CaptureEnumPins::Skip( ULONG cPins )
{
msg_Dbg( p_input, "CaptureEnumPins::Skip" );
#endif
- if( cPins > 1 )
+ i_position += cPins;
+
+ if( i_position > 1 )
{
return S_FALSE;
}
- i_position += cPins;
- return NOERROR;
+ return S_OK;
};
STDMETHODIMP CaptureEnumPins::Reset()
{