#include "ardour/resampled_source.h"
#include "pbd/failed_constructor.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace ARDOUR;
using namespace PBD;
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)
{
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;
}
}
void
-ResampledImportableSource::seek (framepos_t pos)
+ResampledImportableSource::seek (samplepos_t pos)
{
source->seek (pos);
_end_of_input = false;
}
-framepos_t
+samplepos_t
ResampledImportableSource::natural_position () const
{
return source->natural_position() * ratio ();