From 7e1d63dd9fd149e4934bf77095c8610fac786b04 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Thu, 20 Oct 2005 13:40:58 +0000 Subject: First checkin git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@2 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkaudio/ImmediateProcessing.cpp | 61 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 orkaudio/ImmediateProcessing.cpp (limited to 'orkaudio/ImmediateProcessing.cpp') diff --git a/orkaudio/ImmediateProcessing.cpp b/orkaudio/ImmediateProcessing.cpp new file mode 100644 index 0000000..197f505 --- /dev/null +++ b/orkaudio/ImmediateProcessing.cpp @@ -0,0 +1,61 @@ +/* + * Oreka -- A media capture and retrieval platform + * + * Copyright (C) 2005, orecx LLC + * + * http://www.orecx.com + * + * This program is free software, distributed under the terms of + * the GNU General Public License. + * Please refer to http://www.gnu.org/copyleft/gpl.html + * + */ + +#include "ImmediateProcessing.h" +#include "LogManager.h" +#include "ace/OS_NS_unistd.h" +#include "BatchProcessing.h" + +ImmediateProcessing ImmediateProcessing::m_immediateProcessingSingleton; + +ImmediateProcessing* ImmediateProcessing::GetInstance() +{ + return &m_immediateProcessingSingleton; +} + +void ImmediateProcessing::AddAudioTape(AudioTapeRef audioTapeRef) +{ + if (!m_audioTapeQueue.push(audioTapeRef)) + { + // Log error + LOG4CXX_ERROR(LOG.immediateProcessingLog, CStdString("ImmediateProcessing: queue full")); + } +} + +void ImmediateProcessing::ThreadHandler(void *args) +{ + ImmediateProcessing* pImmediateProcessing = ImmediateProcessing::GetInstance(); + + for(;;) + { + try + { + AudioTapeRef audioTapeRef = pImmediateProcessing->m_audioTapeQueue.pop(); + //LOG4CXX_DEBUG(LOG.immediateProcessingLog, CStdString("Got chunk")); + + audioTapeRef->Write(); + + if (audioTapeRef->IsStoppedAndValid()) + { + // Forward to batch processing thread + BatchProcessing::GetInstance()->AddAudioTape(audioTapeRef); + } + } + catch (CStdString& e) + { + LOG4CXX_ERROR(LOG.immediateProcessingLog, CStdString("ImmediateProcessing: ") + e); + } + } +} + + -- cgit v1.2.3