annotate transform/ModelTransformer.cpp @ 876:47aa3aeb687b tonioni

For outputs with unknown bin count or multiple bins with variable sample rate, create additional output models for bins beyond the first
author Chris Cannam
date Wed, 29 Jan 2014 09:31:22 +0000
parents 418cd2064769
children b109b88bfa85
rev   line source
Chris@320 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@320 2
Chris@320 3 /*
Chris@320 4 Sonic Visualiser
Chris@320 5 An audio file viewer and annotation editor.
Chris@320 6 Centre for Digital Music, Queen Mary, University of London.
Chris@320 7 This file copyright 2006 Chris Cannam.
Chris@320 8
Chris@320 9 This program is free software; you can redistribute it and/or
Chris@320 10 modify it under the terms of the GNU General Public License as
Chris@320 11 published by the Free Software Foundation; either version 2 of the
Chris@320 12 License, or (at your option) any later version. See the file
Chris@320 13 COPYING included with this distribution for more information.
Chris@320 14 */
Chris@320 15
Chris@331 16 #include "ModelTransformer.h"
Chris@320 17
Chris@350 18 ModelTransformer::ModelTransformer(Input input, const Transform &transform) :
Chris@350 19 m_input(input),
Chris@849 20 m_detached(false),
Chris@849 21 m_abandoned(false)
Chris@849 22 {
Chris@849 23 m_transforms.push_back(transform);
Chris@849 24 }
Chris@849 25
Chris@849 26 ModelTransformer::ModelTransformer(Input input, const Transforms &transforms) :
Chris@849 27 m_transforms(transforms),
Chris@849 28 m_input(input),
Chris@320 29 m_detached(false),
Chris@320 30 m_abandoned(false)
Chris@320 31 {
Chris@320 32 }
Chris@320 33
Chris@331 34 ModelTransformer::~ModelTransformer()
Chris@320 35 {
Chris@320 36 m_abandoned = true;
Chris@320 37 wait();
Chris@849 38 if (!m_detached) {
Chris@876 39 Models mine = getOutputModels(); // including any additional ones
Chris@876 40 foreach (Model *m, mine) {
Chris@849 41 delete m;
Chris@849 42 }
Chris@849 43 }
Chris@320 44 }
Chris@320 45
Chris@876 46 ModelTransformer::Models
Chris@876 47 ModelTransformer::getOutputModels()
Chris@876 48 {
Chris@876 49 Models out(m_outputs);
Chris@876 50 Models add(getAdditionalOutputModels());
Chris@876 51 foreach (Model *m, add) out.push_back(m);
Chris@876 52 return out;
Chris@876 53 }
Chris@876 54