summaryrefslogtreecommitdiff
path: root/orkaudio/Config.cpp
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2005-10-20 13:40:58 +0000
committerHenri Herscher <henri@oreka.org>2005-10-20 13:40:58 +0000
commit7e1d63dd9fd149e4934bf77095c8610fac786b04 (patch)
tree5fe486a1b0300c3b84fb559107a868e5cc2c95da /orkaudio/Config.cpp
parent467768fc956fc3e5a253373f26c71c681b31b6b8 (diff)
First checkin
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@2 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkaudio/Config.cpp')
-rw-r--r--orkaudio/Config.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/orkaudio/Config.cpp b/orkaudio/Config.cpp
new file mode 100644
index 0000000..0f6d0cc
--- /dev/null
+++ b/orkaudio/Config.cpp
@@ -0,0 +1,112 @@
+/*
+ * 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
+ *
+ */
+
+#define _WINSOCKAPI_ // prevents the inclusion of winsock.h
+
+#include "Utils.h"
+#include "serializers/Serializer.h"
+#include "Config.h"
+#include "LogManager.h"
+
+Config::Config()
+{
+ m_logMessages = LOG_MESSAGES_DEFAULT;
+ m_logRms = LOG_RMS_DEFAULT;
+ m_enableReporting = ENABLE_REPORTING_DEFAULT;
+ m_capturePluginPath = CAPTURE_PLUGIN_PATH_DEFAULT;
+ m_storageAudioFormat = STORAGE_AUDIO_FORMAT_DEFAULT;
+ m_numBatchThreads = NUM_BATCH_THREADS_DEFAULT;
+ m_deleteNativeFile = DELETE_NATIVE_FILE_DEFAULT;
+ m_audioChunkDefaultSize = AUDIO_CHUNK_DEFAULT_SIZE_DEFAULT;
+ m_audioSegmentation = AUDIO_SEGMENTATION_DEFAULT;
+ m_audioSegmentDuration = AUDIO_SEGMENT_DURATION_DEFAULT;
+ m_vad = VAD_DEFAULT;
+ m_vadHighThresholdDb = VAD_HIGH_THRESHOLD_DB_DEFAULT;
+ m_vadLowThresholdDb = VAD_LOW_THRESHOLD_DB_DEFAULT;
+ m_vadHoldOnSec = VAD_HOLD_ON_SEC_DEFAULT;
+ m_trackerHostname = TRACKER_HOSTNAME_DEFAULT;
+ m_trackerTcpPort = TRACKER_TCP_PORT_DEFAULT;
+ m_trackerServicename = TRACKER_SERVICENAME_DEFAULT;
+
+ char hostname[40];
+ ACE_OS::hostname(hostname, 40);
+ ACE_OS::hostname(hostname, HOSTNAME_BUF_LEN);
+ m_serviceName = CStdString("orkaudio-") + hostname;
+
+ m_reportingRetryDelay = 5;
+ m_clientTimeout = 5;
+}
+
+void Config::Define(Serializer* s)
+{
+ s->BoolValue(LOG_MESSAGES_PARAM, m_logMessages);
+ s->BoolValue(LOG_RMS_PARAM, m_logRms);
+ s->BoolValue(ENABLE_REPORTING_PARAM, m_enableReporting);
+ s->StringValue(CAPTURE_PLUGIN_PARAM, m_capturePlugin);
+ s->StringValue(CAPTURE_PLUGIN_PATH_PARAM, m_capturePluginPath);
+ s->EnumValue(STORAGE_AUDIO_FORMAT_PARAM, (int&)m_storageAudioFormat, AudioTape::FileFormatToEnum, AudioTape::FileFormatToString);
+ s->IntValue(NUM_BATCH_THREADS_PARAM, m_numBatchThreads);
+ s->BoolValue(DELETE_NATIVE_FILE_PARAM, m_deleteNativeFile);
+ s->IntValue(AUDIO_CHUNK_DEFAULT_SIZE_PARAM, m_audioChunkDefaultSize);
+ s->BoolValue(AUDIO_SEGMENTATION_PARAM, m_audioSegmentation);
+ s->IntValue(AUDIO_SEGMENT_DURATION_PARAM, m_audioSegmentDuration);
+ s->BoolValue(VAD_PARAM, m_vad);
+ s->DoubleValue(VAD_HIGH_THRESHOLD_DB_PARAM, m_vadHighThresholdDb);
+ s->DoubleValue(VAD_LOW_THRESHOLD_DB_PARAM, m_vadLowThresholdDb);
+ s->DoubleValue(VAD_HOLD_ON_SEC_PARAM, m_vadHoldOnSec);
+ s->StringValue(TRACKER_HOSTNAME_PARAM, m_trackerHostname);
+ s->IntValue(TRACKER_TCP_PORT_PARAM, m_trackerTcpPort);
+ s->StringValue(TRACKER_SERVICENAME_PARAM, m_trackerServicename);
+ s->StringValue(SERVICE_NAME_PARAM, m_serviceName);
+ s->IntValue(REPORTING_RETRY_DELAY_PARAM, m_reportingRetryDelay);
+ s->IntValue(CLIENT_TIMEOUT_PARAM, m_clientTimeout);
+}
+
+void Config::Validate()
+{
+ if (m_storageAudioFormat <= AudioTape::FfUnknown || m_storageAudioFormat >= AudioTape::FfInvalid)
+ {
+ throw CStdString(CStdString("Config::Validate: value out of range:") + STORAGE_AUDIO_FORMAT_PARAM);
+ }
+ if (m_numBatchThreads > 2)
+ {
+ LOG4CXX_WARN(LOG.configLog, "It is not recommended to have more batch threads than CPUs");
+ }
+ if (m_vadHighThresholdDb < -45.0 || m_vadHighThresholdDb>0.0)
+ {
+ throw CStdString(CStdString("Config::Validate: value out of range:") + VAD_HIGH_THRESHOLD_DB_PARAM);
+ }
+ if (m_vadLowThresholdDb < -45.0 || m_vadLowThresholdDb>0.0)
+ {
+ throw CStdString(CStdString("Config::Validate: value out of range:") + VAD_LOW_THRESHOLD_DB_PARAM);
+ }
+ if (m_vadHighThresholdDb < m_vadLowThresholdDb)
+ {
+ throw CStdString(CStdString("Config::Validate: ") + VAD_LOW_THRESHOLD_DB_PARAM + " should be lower than " + VAD_HIGH_THRESHOLD_DB_PARAM);
+ }
+ if (m_vad && m_audioSegmentation)
+ {
+ throw CStdString(CStdString("Config::Validate: please choose between audio segmentation and VAD ! Both cannot be true at the same time"));
+ }
+}
+
+CStdString Config::GetClassName()
+{
+ return CStdString("Config");
+}
+
+ObjectRef Config::NewInstance()
+{
+ return ObjectRef(new Config);
+}
+