HRESULT CStreamSwitcherOutputPin::QueryAcceptUpstream(const AM_MEDIA_TYPE* pmt) { HRESULT hr = S_FALSE; CStreamSwitcherInputPin* pIn = (static_cast<CStreamSwitcherFilter*>(m_pFilter))->GetInputPin(); if (pIn && pIn->IsConnected() && (pIn->IsUsingOwnAllocator() || pIn->CurrentMediaType() == *pmt)) { if (CComQIPtr<IPin> pPinTo = pIn->GetConnected()) { if (S_OK != (hr = pPinTo->QueryAccept(pmt))) { return VFW_E_TYPE_NOT_ACCEPTED; } } else { return E_FAIL; } } return hr; }