diff dsp/signalconditioning/Framer.cpp @ 502:162673c8f9de

Style fixes: avoid unsigned, fix formatting
author Chris Cannam <cannam@all-day-breakfast.com>
date Wed, 05 Jun 2019 11:05:58 +0100
parents 5a53b8281eb4
children
line wrap: on
line diff
--- a/dsp/signalconditioning/Framer.cpp	Wed Jun 05 10:21:48 2019 +0100
+++ b/dsp/signalconditioning/Framer.cpp	Wed Jun 05 11:05:58 2019 +0100
@@ -14,74 +14,65 @@
 */
 
 #include "Framer.h"
-#include <cmath>
-#include <cstddef>
 
-//////////////////////////////////////////////////////////////////////
-// Construction/Destruction
-//////////////////////////////////////////////////////////////////////
+#include <limits.h>
 
-Framer::Framer()
+Framer::Framer() :
+    m_sampleLen(0),
+    m_framesRead(0),
+    m_srcBuffer(0),
+    m_dataFrame(0),
+    m_strideFrame(0),
+    m_frameLength(0),
+    m_stepSize(0),
+    m_maxFrames(0),
+    m_srcIndex(0)
 {
-    m_dataFrame = NULL;
-    m_strideFrame = NULL;
 }
 
 Framer::~Framer()
 {
-    if( m_dataFrame != NULL ) {
-        delete [] m_dataFrame;
-    }
-
-    if( m_strideFrame != NULL ) {
-        delete [] m_strideFrame;
-    }
+    delete[] m_dataFrame;
+    delete[] m_strideFrame;
 }
 
-void Framer::configure( unsigned int frameLength, unsigned int hop )
+void Framer::configure(int frameLength, int hop)
 {
     m_frameLength = frameLength;
     m_stepSize = hop;
 
     resetCounters();
 
-    if( m_dataFrame != NULL ) {
-        delete [] m_dataFrame;  
-        m_dataFrame = NULL;
-    }
+    delete[] m_dataFrame;  
     m_dataFrame = new double[ m_frameLength ];
 
-    if( m_strideFrame != NULL ) {
-        delete [] m_strideFrame;        
-        m_strideFrame = NULL;
-    }
+    delete [] m_strideFrame;        
     m_strideFrame = new double[ m_stepSize ];
 }
 
 void Framer::getFrame(double *dst)
 {
+    if ((m_srcIndex + int64_t(m_frameLength)) < m_sampleLen) {
 
-    if( (m_ulSrcIndex + ( m_frameLength) ) < m_ulSampleLen ) {
+        for (int i = 0; i < m_frameLength; i++) {
+            dst[i] = m_srcBuffer[m_srcIndex++]; 
+        }
+        m_srcIndex -= (m_frameLength - m_stepSize);
 
-        for( unsigned int u = 0; u < m_frameLength; u++) {
-            dst[ u ] = m_srcBuffer[ m_ulSrcIndex++ ]; 
-        }       
-        m_ulSrcIndex -= ( m_frameLength - m_stepSize );
+    } else { // m_srcIndex is within m_frameLength of m_sampleLen
 
-    } else {
+        int rem = int(m_sampleLen - m_srcIndex);
+        int zero = m_frameLength - rem;
 
-        unsigned int rem = (m_ulSampleLen - m_ulSrcIndex );
-        unsigned int zero = m_frameLength - rem;
-
-        for( unsigned int u = 0; u < rem; u++ ) {
-            dst[ u ] = m_srcBuffer[ m_ulSrcIndex++ ];
+        for (int i = 0; i < rem; i++) {
+            dst[i] = m_srcBuffer[m_srcIndex++];
         }
                 
-        for( unsigned int u = 0; u < zero; u++ ) {
-            dst[ rem + u ] = 0;
+        for (int i = 0; i < zero; i++ ) {
+            dst[rem + i] = 0.0;
         }
 
-        m_ulSrcIndex -= (( rem - m_stepSize ) );
+        m_srcIndex -= (rem - m_stepSize);
     }
 
     m_framesRead++;
@@ -90,18 +81,23 @@
 void Framer::resetCounters()
 {
     m_framesRead = 0;
-    m_ulSrcIndex = 0;
+    m_srcIndex = 0;
 }
 
-unsigned int Framer::getMaxNoFrames()
+int Framer::getMaxNoFrames()
 {
     return m_maxFrames;
 }
 
-void Framer::setSource(double *src, unsigned int length)
+void Framer::setSource(double *src, int64_t length)
 {
     m_srcBuffer = src;
-    m_ulSampleLen = length;
+    m_sampleLen = length;
 
-    m_maxFrames = (unsigned int)ceil( (double)m_ulSampleLen/(double)m_stepSize ) ;
+    int64_t maxFrames = length / int64_t(m_stepSize);
+    if (maxFrames * int64_t(m_stepSize) < length) {
+        ++maxFrames;
+    }
+    if (maxFrames > INT_MAX) maxFrames = INT_MAX;
+    m_maxFrames = maxFrames;
 }