1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
6 Centre for Digital Music, Queen Mary, University of London.
7 This file 2005-2006 Christian Landone.
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License as
11 published by the Free Software Foundation; either version 2 of the
12 License, or (at your option) any later version. See the file
13 COPYING included with this distribution for more information.
19 //////////////////////////////////////////////////////////////////////
20 // Construction/Destruction
21 //////////////////////////////////////////////////////////////////////
31 if( m_dataFrame != NULL )
32 delete [] m_dataFrame;
34 if( m_strideFrame != NULL )
35 delete [] m_strideFrame;
38 void Framer::configure( unsigned int frameLength, unsigned int hop )
40 m_frameLength = frameLength;
45 if( m_dataFrame != NULL )
47 delete [] m_dataFrame;
50 m_dataFrame = new double[ m_frameLength ];
52 if( m_strideFrame != NULL )
54 delete [] m_strideFrame;
57 m_strideFrame = new double[ m_stepSize ];
60 void Framer::getFrame(double *dst)
63 if( (m_ulSrcIndex + ( m_frameLength) ) < m_ulSampleLen )
65 for( unsigned int u = 0; u < m_frameLength; u++)
67 dst[ u ] = m_srcBuffer[ m_ulSrcIndex++ ];
69 m_ulSrcIndex -= ( m_frameLength - m_stepSize );
73 unsigned int rem = (m_ulSampleLen - m_ulSrcIndex );
74 unsigned int zero = m_frameLength - rem;
76 for( unsigned int u = 0; u < rem; u++ )
78 dst[ u ] = m_srcBuffer[ m_ulSrcIndex++ ];
81 for( unsigned int u = 0; u < zero; u++ )
86 m_ulSrcIndex -= (( rem - m_stepSize ) );
92 void Framer::resetCounters()
98 unsigned int Framer::getMaxNoFrames()
103 void Framer::setSource(double *src, unsigned int length)
106 m_ulSampleLen = length;
108 m_maxFrames = (unsigned int)ceil( (double)m_ulSampleLen/(double)m_stepSize ) ;