Exemplo n.º 1
0
STDMETHODIMP CapturePin::QueryAccept(const AM_MEDIA_TYPE *pmt)
{
	PrintFunc(L"CapturePin::QueryAccept");

	if (pmt->majortype != captureInfo.expectedMajorType)
		return S_FALSE;
	if (!IsValidMediaType(pmt))
		return S_FALSE;

	if (connectedPin)
		connectedMediaType = pmt;

	return S_OK;
}
// IPin methods
STDMETHODIMP CapturePin::Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
{
    if(filter->state == State_Running)
        return VFW_E_NOT_STOPPED;
    if(connectedPin)
        return VFW_E_ALREADY_CONNECTED;
    if(!pmt)
        return S_OK;
    if(pmt->majortype != GUID_NULL && pmt->majortype != expectedMajorType)
        return S_FALSE;
    if(pmt->majortype == expectedMajorType && !IsValidMediaType(pmt))
        return S_FALSE;

    return S_OK;
}
STDMETHODIMP CapturePin::QueryAccept(const AM_MEDIA_TYPE *pmt)
{
    if(pmt->majortype != expectedMajorType)
        return S_FALSE;
    if(!IsValidMediaType(pmt))
        return S_FALSE;

    if(connectedPin)
    {
        FreeMediaType(connectedMediaType);
        CopyMediaType(&connectedMediaType, pmt);
    }

    return S_OK;
}