globally change all use of "frame" to refer to audio into "sample".
[ardour.git] / libs / ardour / resampled_source.cc
index 5c811706d004a57bf94eecb554121dd6962dff12..f3518537f66fc923e0bf011367a24d6305bbac91 100644 (file)
@@ -21,7 +21,7 @@
 #include "ardour/resampled_source.h"
 #include "pbd/failed_constructor.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace ARDOUR;
 using namespace PBD;
@@ -32,7 +32,7 @@ const uint32_t ResampledImportableSource::blocksize = 524288U;
 const uint32_t ResampledImportableSource::blocksize = 16384U;
 #endif
 
-ResampledImportableSource::ResampledImportableSource (boost::shared_ptr<ImportableSource> src, framecnt_t rate, SrcQuality srcq)
+ResampledImportableSource::ResampledImportableSource (boost::shared_ptr<ImportableSource> src, samplecnt_t rate, SrcQuality srcq)
        : source (src)
        , _src_state (0)
 {
@@ -69,18 +69,19 @@ ResampledImportableSource::~ResampledImportableSource ()
        delete [] _input;
 }
 
-framecnt_t
-ResampledImportableSource::read (Sample* output, framecnt_t nframes)
+samplecnt_t
+ResampledImportableSource::read (Sample* output, samplecnt_t nframes)
 {
        int err;
+       size_t bs = floor ((float)(blocksize / source->channels())) *  source->channels();
 
        /* If the input buffer is empty, refill it. */
        if (_src_data.input_frames == 0) {
 
-               _src_data.input_frames = source->read (_input, blocksize);
+               _src_data.input_frames = source->read (_input, bs);
 
                /* The last read will not be a full buffer, so set end_of_input. */
-               if ((framecnt_t) _src_data.input_frames < blocksize) {
+               if ((size_t) _src_data.input_frames < bs) {
                        _end_of_input = true;
                }
 
@@ -119,7 +120,7 @@ ResampledImportableSource::read (Sample* output, framecnt_t nframes)
 }
 
 void
-ResampledImportableSource::seek (framepos_t pos)
+ResampledImportableSource::seek (samplepos_t pos)
 {
        source->seek (pos);
 
@@ -142,7 +143,7 @@ ResampledImportableSource::seek (framepos_t pos)
        _end_of_input = false;
 }
 
-framepos_t
+samplepos_t
 ResampledImportableSource::natural_position () const
 {
         return source->natural_position() * ratio ();