annotate host/host.cpp @ 6:b046af03c719

* Added image window stuff
author cannam
date Fri, 10 Nov 2006 17:46:44 +0000
parents 86914ea77b7b
children b30fcffc5000
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@6 15 #include "ImageWindow.h"
cannam@0 16
cannam@0 17 #include <cmath>
cannam@1 18 #include <cassert>
cannam@0 19
cannam@0 20 #include <QApplication>
cannam@0 21 #include <QFont>
cannam@0 22 #include <QPushButton>
cannam@0 23
cannam@0 24 using std::cout;
cannam@0 25 using std::cerr;
cannam@0 26 using std::endl;
cannam@0 27 using std::string;
cannam@0 28 using std::vector;
cannam@0 29
cannam@1 30 static bool loadPlugin(Processor &processor, QString id);
cannam@1 31
cannam@0 32
cannam@0 33 int main(int argc, char **argv)
cannam@0 34 {
cannam@0 35 QApplication application(argc, argv);
cannam@0 36
cannam@0 37 QFont fn = application.font();
cannam@0 38 fn.setPointSize(fn.pointSize() + 3);
cannam@0 39 application.setFont(fn);
cannam@0 40
cannam@0 41 QPushButton *button = new QPushButton("Quit");
cannam@0 42 QObject::connect(button, SIGNAL(clicked()),
cannam@0 43 &application, SLOT(closeAllWindows()));
cannam@0 44
cannam@0 45 BufferingAudioCallbackRecordTarget *target =
cannam@0 46 new BufferingAudioCallbackRecordTarget();
cannam@0 47
cannam@0 48 AudioCallbackRecordSource *source =
cannam@0 49 AudioRecordSourceFactory::createCallbackRecordSource(target);
cannam@0 50 if (!source) {
cannam@0 51 std::cerr << "ERROR: Failed to create audio record source" << std::endl;
cannam@0 52 return 1;
cannam@0 53 }
cannam@0 54
cannam@6 55 ImageWindow window;
cannam@6 56 window.show();
cannam@6 57
cannam@0 58 Processor processor(target);
cannam@0 59
cannam@6 60 QObject::connect(&processor, SIGNAL(showImage(QString)),
cannam@6 61 &window, SLOT(showImage(QString)));
cannam@6 62
cannam@3 63 SimpleXMLRuleLoader loader;
cannam@3 64 if (!loader.loadFile(processor, "test.xml")) {
cannam@3 65 std::cerr << "ERROR: Failed to load test XML file" << std::endl;
cannam@3 66 return 1;
cannam@3 67 }
cannam@0 68
cannam@0 69 button->show();
cannam@1 70 processor.start();
cannam@0 71
cannam@0 72 application.exec();
cannam@0 73 }
cannam@0 74
cannam@1 75 bool loadPlugin(Processor &processor, QString id)
cannam@1 76 {
cannam@1 77 int n = processor.addPlugin(id);
cannam@1 78 if (n) {
cannam@1 79 std::cerr << "Plugin \"" << id.toStdString() << "\" successfully loaded (index " << n << ")" << std::endl;
cannam@1 80 return true;
cannam@1 81 } else {
cannam@1 82 std::cerr << "Failed to load plugin \"" << id.toStdString() << "\"" << std::endl;
cannam@1 83 return false;
cannam@1 84 }
cannam@1 85 }