diff plugin/transform/Transform.cpp @ 328:21bd032ae791

* Introduce new Transform class which contains data necessary to describe the context for a plugin -- the plugin's name and output, the step/block size etc (formerly spread across ExecutionContext and TransformFactory). Other code hasn't been updated to use this yet. * Rename existing Transform stuff to Transformers (because they run Transforms) I'm still not 100% sure about this change, don't rely on it.
author Chris Cannam
date Mon, 05 Nov 2007 15:31:06 +0000
parents 32e50b620a6c
children 13e5870040e6
line wrap: on
line diff
--- a/plugin/transform/Transform.cpp	Fri Nov 02 16:50:31 2007 +0000
+++ b/plugin/transform/Transform.cpp	Mon Nov 05 15:31:06 2007 +0000
@@ -4,7 +4,7 @@
     Sonic Visualiser
     An audio file viewer and annotation editor.
     Centre for Digital Music, Queen Mary, University of London.
-    This file copyright 2006 Chris Cannam.
+    This file copyright 2006-2007 Chris Cannam and QMUL.
    
     This program is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License as
@@ -15,18 +15,61 @@
 
 #include "Transform.h"
 
-Transform::Transform(Model *m) :
-    m_input(m),
-    m_output(0),
-    m_detached(false),
-    m_abandoned(false)
+#include "plugin/PluginIdentifier.h"
+
+Transform::Transform() :
+    m_stepSize(0),
+    m_blockSize(0),
+    m_windowType(HanningWindow),
+    m_sampleRate(0)
 {
 }
 
 Transform::~Transform()
 {
-    m_abandoned = true;
-    wait();
-    if (!m_detached) delete m_output;
 }
 
+QString
+Transform::createIdentifier(QString type, QString soName, QString label,
+                            QString output)
+{
+    QString pluginId = PluginIdentifier::createIdentifier(type, soName, label);
+    return pluginId + ":" + output;
+}
+
+void
+Transform::parseIdentifier(QString identifier,
+                           QString &type, QString &soName,
+                           QString &label, QString &output)
+{
+    output = identifier.section(':', 3);
+    PluginIdentifier::parseIdentifier(identifier.section(':', 0, 2),
+                                      type, soName, label);
+}
+
+Transform::Type
+Transform::getType() const
+{
+    QString type, soName, label, output;
+    parseIdentifier(m_id, type, soName, label, output);
+    if (type == "vamp") return FeatureExtraction; //!!! lousy
+    else return RealTimeEffect;
+}
+
+QString
+Transform::getPluginIdentifier() const
+{
+    return m_id.section(':', 0, 2);
+}
+
+QString
+Transform::getOutput() const
+{
+    return m_id.section(':', 3);
+}
+
+void
+Transform::toXml(QTextStream &stream, QString indent, QString extraAttributes) const
+{
+    
+}