annotate transform/ModelTransformer.cpp @ 1288:5ef9b4d4bbdb 3.0-integration

Filter out Xing/LAME info frames, rather than letting them go to the mp3 decoder as if they were audio frames. Fixes the 1152-sample zero pad at start of some decoded mp3 files (distinct from decoder delay). The logic here is based on the madplay code.
author Chris Cannam
date Thu, 24 Nov 2016 13:32:04 +0000
parents b109b88bfa85
children fe3f7f8df3a3
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@877 21 m_detachedAdd(false),
Chris@849 22 m_abandoned(false)
Chris@849 23 {
Chris@849 24 m_transforms.push_back(transform);
Chris@849 25 }
Chris@849 26
Chris@849 27 ModelTransformer::ModelTransformer(Input input, const Transforms &transforms) :
Chris@849 28 m_transforms(transforms),
Chris@849 29 m_input(input),
Chris@320 30 m_detached(false),
Chris@877 31 m_detachedAdd(false),
Chris@320 32 m_abandoned(false)
Chris@320 33 {
Chris@320 34 }
Chris@320 35
Chris@331 36 ModelTransformer::~ModelTransformer()
Chris@320 37 {
Chris@320 38 m_abandoned = true;
Chris@320 39 wait();
Chris@849 40 if (!m_detached) {
Chris@877 41 Models mine = getOutputModels();
Chris@877 42 foreach (Model *m, mine) delete m;
Chris@877 43 }
Chris@877 44 if (!m_detachedAdd) {
Chris@877 45 Models mine = getAdditionalOutputModels();
Chris@877 46 foreach (Model *m, mine) delete m;
Chris@849 47 }
Chris@320 48 }
Chris@320 49