XOR3::XOR3(const GraphicsInfo & r_GfxInfo, std::string r_Label) : Gate(r_GfxInfo, 5) { m_InputPins.push_back(InputPin(std::pair<int, int>(r_GfxInfo.GetX() + 2, r_GfxInfo.GetY() + 5))); m_InputPins.push_back(InputPin(std::pair<int, int>(r_GfxInfo.GetX() + 2, r_GfxInfo.GetY() + 6))); m_InputPins.push_back(InputPin(std::pair<int, int>(r_GfxInfo.GetX() + 2, r_GfxInfo.GetY() + 7))); SetLabel(r_Label); }
STDMETHODIMP CDXFilter::SetDeliveryBuffer( ALLOCATOR_PROPERTIES props, BYTE * m_pBuffer ) { // have the input/output pins been created? if( !InputPin( ) || !OutputPin( ) ) { return E_POINTER; } // they can't be connected if we're going to be changing delivery buffers // if( InputPin( )->IsConnected( ) || OutputPin( )->IsConnected( ) ) { return E_INVALIDARG; } return ((CDXFilterInPin*)m_pInput)->SetDeliveryBuffer( props, m_pBuffer ); }
HRESULT CSampleGrabber::GetConnectedMediaType( CMediaType * pmt ) { CAutoLock lock( &m_Lock ); HRESULT hr; hr = CopyMediaType( pmt, &InputPin( )->CurrentMediaType() ); return hr; }
HRESULT CSampleSender::SetDeliveryBuffer( ALLOCATOR_PROPERTIES props, BYTE * m_pBuffer ) { // they can't be connected if we're going to be changing delivery buffers // if( InputPin( )->IsConnected( ) || OutputPin( )->IsConnected( ) ) { return E_INVALIDARG; } return ((CSampleSenderInPin*)m_pInput)->SetDeliveryBuffer( props, m_pBuffer ); }
HRESULT CTransInPlaceFilter::DecideBufferSize ( IMemAllocator *pAlloc , ALLOCATOR_PROPERTIES *pProperties ) { ALLOCATOR_PROPERTIES Request, Actual; HRESULT hr; // If we are connected upstream, get his views if (m_pInput->IsConnected()) { // Get the input pin allocator, and get its size and count. // we don't care about his alignment and prefix. hr = InputPin()->PeekAllocator()->GetProperties(&Request); if (FAILED(hr)) { // Input connected but with a secretive allocator - enough! return hr; } } else { // We're reduced to blind guessing. Let's guess one byte and if // this isn't enough then when the other pin does get connected // we can revise it. ZeroMemory(&Request, sizeof(Request)); Request.cBuffers = 1; Request.cbBuffer = 1; } DbgLog((LOG_MEMORY,1,TEXT("Setting Allocator Requirements"))); DbgLog((LOG_MEMORY,1,TEXT("Count %d, Size %d"), Request.cBuffers, Request.cbBuffer)); // Pass the allocator requirements to our output side // but do a little sanity checking first or we'll just hit // asserts in the allocator. pProperties->cBuffers = Request.cBuffers; pProperties->cbBuffer = Request.cbBuffer; pProperties->cbAlign = Request.cbAlign; if (pProperties->cBuffers<=0) {pProperties->cBuffers = 1; } if (pProperties->cbBuffer<=0) {pProperties->cbBuffer = 1; } hr = pAlloc->SetProperties(pProperties, &Actual); if (FAILED(hr)) { return hr; } DbgLog((LOG_MEMORY,1,TEXT("Obtained Allocator Requirements"))); DbgLog((LOG_MEMORY,1,TEXT("Count %d, Size %d, Alignment %d"), Actual.cBuffers, Actual.cbBuffer, Actual.cbAlign)); // Make sure we got the right alignment and at least the minimum required if ( (Request.cBuffers > Actual.cBuffers) || (Request.cbBuffer > Actual.cbBuffer) || (Request.cbAlign > Actual.cbAlign) ) { return E_FAIL; } return NOERROR; } // DecideBufferSize