Be more tolerant to missing values or errors in io_config()
[ardour.git] / libs / ardour / resampled_source.cc
index 5c811706d004a57bf94eecb554121dd6962dff12..24eb12ad23bf0b2f206348e96354f5688b4e0331 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;
@@ -73,14 +73,15 @@ framecnt_t
 ResampledImportableSource::read (Sample* output, framecnt_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;
                }