Esempio n. 1
0
HRESULT CWavPackSplitterFilterInputPin::DoProcessingLoop(void)
{
	DWORD cmd;
	HRESULT hr;

	Reply(NOERROR);
	m_bAbort = FALSE;

	m_pParentFilter->m_pOutputPin->DeliverNewSegment(0,
	m_pParentFilter->m_rtStop - m_pParentFilter->m_rtStart,
	m_pParentFilter->m_dRateSeeking);

	do
	{
		if (m_pIACBW->StreamPos >= m_pIACBW->StreamLen || wavpack_parser_eof(m_pWavPackParser)) {
			// EOF
			m_pParentFilter->m_pOutputPin->DeliverEndOfStream();
			// TODO : check if we need to stop the thread
			return NOERROR;
		}

		hr = DeliverOneFrame(m_pWavPackParser);
		if (FAILED(hr)) {
			return hr;
		}
	} while (!CheckRequest(&cmd) && !m_bAbort);

	return NOERROR;
}
HRESULT CWavPackDSSplitterInputPin::DoProcessingLoop(void)
{
    Command com;
    HRESULT hr;

    Reply(NOERROR);
    m_bAbort = FALSE;
    
    m_pParentFilter->m_pOutputPin->DeliverNewSegment(0,
        m_pParentFilter->m_rtStop - m_pParentFilter->m_rtStart,
        m_pParentFilter->m_dRateSeeking);

    do
    {
        if(m_pIACBW->StreamPos >= m_pIACBW->StreamLen || wavpack_parser_eof(m_pWavPackParser))
        { 
            // EOF
            m_pParentFilter->m_pOutputPin->DeliverEndOfStream();
            // TODO : check if we need to stop the thread
            return NOERROR;
        }

        hr = DeliverOneFrame(m_pWavPackParser);
        if(FAILED(hr))
        {
            return hr;
        }

        // Deliver correction data
        WavPack_parser* wppc = m_pParentFilter->GetWavPackParserCorrection();
        if(wppc != NULL)
        {
            hr = DeliverOneFrame(wppc);
            if(FAILED(hr))
            {
                return hr;
            }
        }
        
    } while (!CheckRequest((DWORD*)&com) && !m_bAbort);

    return NOERROR;
}