HRESULT OutpinVideo::OnSetPassMode(VP8PassMode m) { if (bool(m_pPinConnection)) return VFW_E_ALREADY_CONNECTED; switch (m) { case kPassModeOnePass: case kPassModeLastPass: { const Inpin& inpin = m_pFilter->m_inpin; if (bool(inpin.m_pPinConnection)) Outpin::OnInpinConnect(); else SetDefaultMediaTypes(); return S_OK; } case kPassModeFirstPass: SetFirstPassMediaTypes(); return S_OK; default: assert(false); return E_FAIL; } }
HRESULT Outpin::OnInpinDisconnect() { if (bool(m_pPinConnection)) { IFilterGraph* const pGraph = m_pFilter->m_info.pGraph; assert(pGraph); HRESULT hr = pGraph->Disconnect(m_pPinConnection); assert(SUCCEEDED(hr)); hr = pGraph->Disconnect(this); assert(SUCCEEDED(hr)); assert(!bool(m_pPinConnection)); } SetDefaultMediaTypes(); return S_OK; }
Outpin::Outpin(Filter* pFilter) : Pin(pFilter, PINDIR_OUTPUT, L"output") { SetDefaultMediaTypes(); }
OutpinVideo::OutpinVideo(Filter* pFilter) : Outpin(pFilter, L"output") { SetDefaultMediaTypes(); }