summaryrefslogtreecommitdiff
path: root/orkaudio/OrkAudio.cpp
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2006-07-26 16:23:53 +0000
committerHenri Herscher <henri@oreka.org>2006-07-26 16:23:53 +0000
commit71001d96e240d03a98a73688060d476dd5f7c875 (patch)
tree6643ce2ec2ba8a3da7aed6a3648ea6219a797358 /orkaudio/OrkAudio.cpp
parent0f20be2ec5d75afc343cbe7ec35e3480723b4e99 (diff)
Added command line mcf file transcoding -
The syntax is: #orkaudio transcode myfile.mcf - The output has the format specified in config.xml. git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@310 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkaudio/OrkAudio.cpp')
-rw-r--r--orkaudio/OrkAudio.cpp60
1 files changed, 58 insertions, 2 deletions
diff --git a/orkaudio/OrkAudio.cpp b/orkaudio/OrkAudio.cpp
index 5a161b7..60a3a2b 100644
--- a/orkaudio/OrkAudio.cpp
+++ b/orkaudio/OrkAudio.cpp
@@ -112,6 +112,49 @@ void LoadPlugins(std::list<ACE_DLL>& pluginDlls)
}
}
+void Transcode(CStdString &file)
+{
+ OrkLogManager::Instance()->Initialize();
+
+ ObjectFactorySingleton::instance()->Initialize();
+
+ ConfigManager::Instance()->Initialize();
+
+ std::list<ACE_DLL> pluginDlls;
+ LoadPlugins(pluginDlls);
+
+ // Register in-built filters
+ FilterRef filter(new AlawToPcmFilter());
+ FilterRegistry::instance()->RegisterFilter(filter);
+ filter.reset(new UlawToPcmFilter());
+ FilterRegistry::instance()->RegisterFilter(filter);
+
+ // Register in-built tape processors and build the processing chain
+ BatchProcessing::Initialize();
+
+ if (!ACE_Thread_Manager::instance()->spawn(ACE_THR_FUNC(BatchProcessing::ThreadHandler)))
+ {
+ LOG4CXX_INFO(LOG.rootLog, CStdString("Failed to create batch processing thread"));
+ }
+
+
+
+ // Transmit the tape to the BatchProcessing
+ TapeProcessorRef bp = TapeProcessorRegistry::instance()->GetNewTapeProcessor(CStdString("BatchProcessing"));
+ AudioTapeRef tape(new AudioTape(CStdString("SinglePort"), file));
+ bp->AddAudioTape(tape);
+
+ // Make sure it stops after processing
+ tape.reset();
+ bp->AddAudioTape(tape);
+
+ // Wait for completion
+ while(!DaemonSingleton::instance()->IsStopping())
+ {
+ ACE_OS::sleep(1);
+ }
+}
+
void MainThread()
{
OrkLogManager::Instance()->Initialize();
@@ -231,6 +274,19 @@ int main(int argc, char* argv[])
{
MainThread();
}
+ else if (argument.CompareNoCase("transcode") == 0)
+ {
+ if(argc == 3)
+ {
+ DaemonSingleton::instance()->SetShortLived();
+ CStdString file = argv[2];
+ Transcode(file);
+ }
+ else
+ {
+ printf("Please specify file to transcode\n\n");
+ }
+ }
else if (argument.CompareNoCase("install") == 0)
{
DaemonSingleton::instance()->Install();
@@ -242,9 +298,9 @@ int main(int argc, char* argv[])
else
{
#ifdef WIN32
- printf("Argument incorrect. Possibilies are:\n\tinstall:\t\tinstall NT service\n\tuninstall:\t\tuninstall NT service\n\n");
+ printf("Argument incorrect. Possibilies are:\ninstall: install NT service\nuninstall: uninstall NT service\ntranscode <file>: convert .mcf file to storage format specified in config.xml\n\n");
#else
- printf("Argument incorrect. Possibilies are:\n\tdebug:\trun attached to tty\n\n");
+ printf("Argument incorrect. Possibilies are:\ndebug: run attached to tty\ntranscode <file>: convert .mcf file to storage format specified in config.xml\n\n");
#endif
}
}