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; }