コード例 #1
0
STDMETHODIMP CMpcAudioRenderer::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
	if (riid == IID_IReferenceClock)
	{
		return GetReferenceClockInterface(riid, ppv);
	}

	return CBaseRenderer::NonDelegatingQueryInterface (riid, ppv);
}
コード例 #2
0
ファイル: MpcAudioRenderer.cpp プロジェクト: Samangan/mpc-hc
STDMETHODIMP CMpcAudioRenderer::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
    if (riid == IID_IReferenceClock) {
        return GetReferenceClockInterface(riid, ppv);
    } else if (riid == IID_IDispatch) {
        return GetInterface(static_cast<IDispatch*>(this), ppv);
    } else if (riid == IID_IBasicAudio) {
        return GetInterface(static_cast<IBasicAudio*>(this), ppv);
    } else if (riid == __uuidof(ISpecifyPropertyPages)) {
        return GetInterface(static_cast<ISpecifyPropertyPages*>(this), ppv);
    } else if (riid == __uuidof(ISpecifyPropertyPages2)) {
        return GetInterface(static_cast<ISpecifyPropertyPages2*>(this), ppv);
    } else if (riid == __uuidof(IMpcAudioRendererFilter)) {
        return GetInterface(static_cast<IMpcAudioRendererFilter*>(this), ppv);
    }

    return CBaseRenderer::NonDelegatingQueryInterface (riid, ppv);
}
コード例 #3
0
HRESULT CMpcAudioRenderer::GetReferenceClockInterface(REFIID riid, void **ppv)
{
	HRESULT hr = S_OK;

	if (m_pReferenceClock)
		return m_pReferenceClock->NonDelegatingQueryInterface(riid, ppv);

	m_pReferenceClock = new CBaseReferenceClock (NAME("Mpc Audio Clock"), NULL, &hr);
	if (! m_pReferenceClock)
		return E_OUTOFMEMORY;

	m_pReferenceClock->AddRef();

	hr = SetSyncSource(m_pReferenceClock);
	if (FAILED(hr)) 
	{
		SetSyncSource(NULL);
		return hr;
	}

	return GetReferenceClockInterface(riid, ppv);
}
コード例 #4
0
HRESULT CMpcAudioRenderer::GetReferenceClockInterface(REFIID riid, void** ppv)
{
    HRESULT hr = S_OK;

    if (m_pReferenceClock) {
        return m_pReferenceClock->NonDelegatingQueryInterface(riid, ppv);
    }

    m_pReferenceClock = DEBUG_NEW CBaseReferenceClock(NAME("MPC-HC Audio Clock"), nullptr, &hr);
    if (!m_pReferenceClock) {
        return E_OUTOFMEMORY;
    }

    m_pReferenceClock->AddRef();

    hr = SetSyncSource(m_pReferenceClock);
    if (FAILED(hr)) {
        SetSyncSource(nullptr);
        return hr;
    }

    return GetReferenceClockInterface(riid, ppv);
}