void CBaseMuxerFilter::AddInput() { POSITION pos = m_pInputs.GetHeadPosition(); while(pos) { CBasePin* pPin = m_pInputs.GetNext(pos); if(!pPin->IsConnected()) return; } CStringW name; name.Format(L"Input %d", m_pInputs.GetCount()+1); CBaseMuxerInputPin* pInputPin = NULL; if(FAILED(CreateInput(name, &pInputPin)) || !pInputPin) {ASSERT(0); return;} CAutoPtr<CBaseMuxerInputPin> pAutoPtrInputPin(pInputPin); name.Format(L"~Output %d", m_pRawOutputs.GetCount()+1); CBaseMuxerRawOutputPin* pRawOutputPin = NULL; if(FAILED(CreateRawOutput(name, &pRawOutputPin)) || !pRawOutputPin) {ASSERT(0); return;} CAutoPtr<CBaseMuxerRawOutputPin> pAutoPtrRawOutputPin(pRawOutputPin); pInputPin->SetRelatedPin(pRawOutputPin); pRawOutputPin->SetRelatedPin(pInputPin); m_pInputs.AddTail(pAutoPtrInputPin); m_pRawOutputs.AddTail(pAutoPtrRawOutputPin); }
/////////////////////////////////////////////////////////// // all inherited virtual functions /////////////////////////////////////////////////////////// // 1. from CSource CBasePin *CVCam::GetPin(int n) { vcamLog(50, "CVCam::GetPin, n = %d", n); CBasePin *pin = CSource::GetPin(n); ASSERT(pin!=NULL); if(pin->IsConnected()) { vcamLog(50, " CVCam::GetPin: pin is connected"); } else { vcamLog(50, " CVCam::GetPin: pin is not connected"); } return pin; }