annotate host/host.cpp @ 3:86914ea77b7b

* start simple xml rule file loading
author cannam
date Fri, 03 Nov 2006 16:40:46 +0000
parents 4342352b8ef3
children b046af03c719
rev   line source
cannam@0 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
cannam@0 2
cannam@0 3 #include <vamp-sdk/PluginHostAdapter.h>
cannam@0 4
cannam@0 5 #include "audioio/BufferingAudioCallbackRecordTarget.h"
cannam@0 6 #include "audioio/AudioRecordSourceFactory.h"
cannam@0 7
cannam@0 8 #include <iostream>
cannam@0 9 #include <sndfile.h>
cannam@0 10
cannam@0 11 #include "system/System.h"
cannam@0 12
cannam@0 13 #include "Processor.h"
cannam@3 14 #include "SimpleXMLRuleLoader.h"
cannam@0 15
cannam@0 16 #include <cmath>
cannam@1 17 #include <cassert>
cannam@0 18
cannam@0 19 #include <QApplication>
cannam@0 20 #include <QFont>
cannam@0 21 #include <QPushButton>
cannam@0 22
cannam@0 23 using std::cout;
cannam@0 24 using std::cerr;
cannam@0 25 using std::endl;
cannam@0 26 using std::string;
cannam@0 27 using std::vector;
cannam@0 28
cannam@1 29 static bool loadPlugin(Processor &processor, QString id);
cannam@1 30
cannam@0 31
cannam@0 32 int main(int argc, char **argv)
cannam@0 33 {
cannam@0 34 QApplication application(argc, argv);
cannam@0 35
cannam@0 36 QFont fn = application.font();
cannam@0 37 fn.setPointSize(fn.pointSize() + 3);
cannam@0 38 application.setFont(fn);
cannam@0 39
cannam@0 40 QPushButton *button = new QPushButton("Quit");
cannam@0 41 QObject::connect(button, SIGNAL(clicked()),
cannam@0 42 &application, SLOT(closeAllWindows()));
cannam@0 43
cannam@0 44 BufferingAudioCallbackRecordTarget *target =
cannam@0 45 new BufferingAudioCallbackRecordTarget();
cannam@0 46
cannam@0 47 AudioCallbackRecordSource *source =
cannam@0 48 AudioRecordSourceFactory::createCallbackRecordSource(target);
cannam@0 49 if (!source) {
cannam@0 50 std::cerr << "ERROR: Failed to create audio record source" << std::endl;
cannam@0 51 return 1;
cannam@0 52 }
cannam@0 53
cannam@0 54 Processor processor(target);
cannam@0 55
cannam@3 56 SimpleXMLRuleLoader loader;
cannam@3 57 if (!loader.loadFile(processor, "test.xml")) {
cannam@3 58 std::cerr << "ERROR: Failed to load test XML file" << std::endl;
cannam@3 59 return 1;
cannam@3 60 }
cannam@0 61
cannam@0 62 button->show();
cannam@1 63 processor.start();
cannam@0 64
cannam@0 65 application.exec();
cannam@0 66 }
cannam@0 67
cannam@1 68 bool loadPlugin(Processor &processor, QString id)
cannam@1 69 {
cannam@1 70 int n = processor.addPlugin(id);
cannam@1 71 if (n) {
cannam@1 72 std::cerr << "Plugin \"" << id.toStdString() << "\" successfully loaded (index " << n << ")" << std::endl;
cannam@1 73 return true;
cannam@1 74 } else {
cannam@1 75 std::cerr << "Failed to load plugin \"" << id.toStdString() << "\"" << std::endl;
cannam@1 76 return false;
cannam@1 77 }
cannam@1 78 }