annotate dsp/signalconditioning/Framer.cpp @ 483:fdaa63607c15

Untabify, indent, tidy
author Chris Cannam <cannam@all-day-breakfast.com>
date Fri, 31 May 2019 11:54:32 +0100
parents d5014ab8b0e5
children 5a53b8281eb4
rev   line source
c@225 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
c@225 2
c@225 3 /*
c@225 4 QM DSP Library
c@225 5
c@225 6 Centre for Digital Music, Queen Mary, University of London.
c@309 7 This file 2005-2006 Christian Landone.
c@309 8
c@309 9 This program is free software; you can redistribute it and/or
c@309 10 modify it under the terms of the GNU General Public License as
c@309 11 published by the Free Software Foundation; either version 2 of the
c@309 12 License, or (at your option) any later version. See the file
c@309 13 COPYING included with this distribution for more information.
c@225 14 */
c@225 15
c@225 16 #include "Framer.h"
c@225 17 #include <math.h>
c@225 18
c@225 19 //////////////////////////////////////////////////////////////////////
c@225 20 // Construction/Destruction
c@225 21 //////////////////////////////////////////////////////////////////////
c@225 22
c@225 23 Framer::Framer()
c@225 24 {
c@225 25 m_dataFrame = NULL;
c@225 26 m_strideFrame = NULL;
c@225 27 }
c@225 28
c@225 29 Framer::~Framer()
c@225 30 {
cannam@483 31 if( m_dataFrame != NULL ) {
cannam@483 32 delete [] m_dataFrame;
cannam@483 33 }
c@225 34
cannam@483 35 if( m_strideFrame != NULL ) {
cannam@483 36 delete [] m_strideFrame;
cannam@483 37 }
c@225 38 }
c@225 39
c@225 40 void Framer::configure( unsigned int frameLength, unsigned int hop )
c@225 41 {
c@225 42 m_frameLength = frameLength;
c@225 43 m_stepSize = hop;
c@225 44
c@225 45 resetCounters();
c@225 46
cannam@483 47 if( m_dataFrame != NULL ) {
cannam@483 48 delete [] m_dataFrame;
cannam@483 49 m_dataFrame = NULL;
c@225 50 }
c@225 51 m_dataFrame = new double[ m_frameLength ];
c@225 52
cannam@483 53 if( m_strideFrame != NULL ) {
cannam@483 54 delete [] m_strideFrame;
cannam@483 55 m_strideFrame = NULL;
c@225 56 }
c@225 57 m_strideFrame = new double[ m_stepSize ];
c@225 58 }
c@225 59
c@225 60 void Framer::getFrame(double *dst)
c@225 61 {
c@225 62
cannam@483 63 if( (m_ulSrcIndex + ( m_frameLength) ) < m_ulSampleLen ) {
c@225 64
cannam@483 65 for( unsigned int u = 0; u < m_frameLength; u++) {
cannam@483 66 dst[ u ] = m_srcBuffer[ m_ulSrcIndex++ ];
cannam@483 67 }
cannam@483 68 m_ulSrcIndex -= ( m_frameLength - m_stepSize );
c@225 69
cannam@483 70 } else {
cannam@483 71
cannam@483 72 unsigned int rem = (m_ulSampleLen - m_ulSrcIndex );
cannam@483 73 unsigned int zero = m_frameLength - rem;
cannam@483 74
cannam@483 75 for( unsigned int u = 0; u < rem; u++ ) {
cannam@483 76 dst[ u ] = m_srcBuffer[ m_ulSrcIndex++ ];
cannam@483 77 }
cannam@483 78
cannam@483 79 for( unsigned int u = 0; u < zero; u++ ) {
cannam@483 80 dst[ rem + u ] = 0;
cannam@483 81 }
cannam@483 82
cannam@483 83 m_ulSrcIndex -= (( rem - m_stepSize ) );
c@225 84 }
c@225 85
c@225 86 m_framesRead++;
c@225 87 }
c@225 88
c@225 89 void Framer::resetCounters()
c@225 90 {
c@225 91 m_framesRead = 0;
c@225 92 m_ulSrcIndex = 0;
c@225 93 }
c@225 94
c@225 95 unsigned int Framer::getMaxNoFrames()
c@225 96 {
c@225 97 return m_maxFrames;
c@225 98 }
c@225 99
c@225 100 void Framer::setSource(double *src, unsigned int length)
c@225 101 {
c@225 102 m_srcBuffer = src;
c@225 103 m_ulSampleLen = length;
c@225 104
c@225 105 m_maxFrames = (unsigned int)ceil( (double)m_ulSampleLen/(double)m_stepSize ) ;
c@225 106 }