Exemple #1
0
STDMETHODIMP CBaseMuxerFilter::SetPositions(LONGLONG* pCurrent, DWORD dwCurrentFlags, LONGLONG* pStop, DWORD dwStopFlags)
{
	FILTER_STATE fs;

	if(SUCCEEDED(GetState(0, &fs)) && fs == State_Stopped)
	{
		POSITION pos = m_pInputs.GetHeadPosition();
		while(pos)
		{
			CBasePin* pPin = m_pInputs.GetNext(pos);
			CComQIPtr<IMediaSeeking> pMS = pPin->GetConnected();
			if(!pMS) pMS = GetFilterFromPin(pPin->GetConnected());
			if(pMS) pMS->SetPositions(pCurrent, dwCurrentFlags, pStop, dwStopFlags);
		}

		return S_OK;
	}

	return VFW_E_WRONG_STATE;
}
Exemple #2
0
 // if bSet, only accept settable pins
 SeekingCollection(CBaseFilter* pFilter)
 {
     for (int i = 0; i < pFilter->GetPinCount(); i++)
     {
         CBasePin* pPin = pFilter->GetPin(i);
         PIN_DIRECTION pindir;
         pPin->QueryDirection(&pindir);
         if (pindir == PINDIR_INPUT)
         {
             IMediaSeekingPtr pSeek = pPin->GetConnected();
             if (pSeek != NULL)
             {
                 m_Pins.push_back(pSeek.Detach());
             }
         }
     }
 }