12#include "water/audioformat/AudioFormatManager.h"
13#include "water/audioformat/AudioFormatReader.h"
14#include "water/text/StringPairArray.h"
27 static water::AudioFormatManager afm;
28 static bool needsInit =
true;
32 afm.registerBasicFormats();
35 water::AudioFormatReader* reader = afm.createReaderFor(
file_);
46 reader->read(buf, 0,
static_cast<int>(
sampleLength_ + 4), 0,
true,
true);
49 water::StringPairArray *metadata = &reader->metadataValues;
50 int numLoops = metadata->getValue(
"NumSampleLoops",
"0").getIntValue();
61 carla_zeroStruct(
info);
66 if (
info.frames >= std::numeric_limits<int>::max())
68 carla_stderr2(
"sfzero::Sample::load() - file is too big!");
78 float*
const rbuffer = (
float*)std::calloc(1,
sizeof(
float)*
info.frames);
80 if (rbuffer ==
nullptr)
82 carla_stderr2(
"sfzero::Sample::load() - out of memory");
95 carla_stderr2(
"sfzero::Sample::load() - failed to read complete file: " P_SSIZE " vs " P_INT64,
r,
info.frames);
105 for (
int i=
info.channels; --
i >= 0;)
106 buffer_->copyFromInterleavedSource(
i, rbuffer,
r);
133void Sample::checkIfZeroed(
const char *where)
137 dbgprintf(
"SFZSample::checkIfZeroed(%s): no buffer!", where);
141 int samplesLeft =
buffer_->getNumSamples();
143 const float *
p =
buffer_->getReadPointer(0);
144 for (; samplesLeft > 0; --samplesLeft)
157 dbgprintf(
"Buffer not zeroed at %s (%lu vs. %lu).", where, nonzero, zero);
161 dbgprintf(
"Buffer zeroed at %s! (%lu zeros)", where, zero);
#define P_SSIZE
Definition CarlaDefines.h:141
#define CARLA_SAFE_ASSERT_RETURN(cond, ret)
Definition CarlaDefines.h:190
#define P_INT64
Definition CarlaDefines.h:136
audio-decoder - wrapper around libsndfile and libav*
int ad_close(void *sf)
Definition ad_plugin.c:96
ssize_t ad_read(void *sf, float *out, size_t len)
Definition ad_plugin.c:110
void * ad_open(const char *fn, struct adinfo *nfo)
Definition ad_plugin.c:72
water::uint64 loopEnd_
Definition SFZSample.h:47
virtual ~Sample()
Definition SFZSample.cpp:115
water::uint64 loopStart_
Definition SFZSample.h:47
water::String getShortName()
Definition SFZSample.cpp:117
water::AudioSampleBuffer * detachBuffer()
Definition SFZSample.cpp:125
water::String dump()
Definition SFZSample.cpp:130
CarlaScopedPointer< water::AudioSampleBuffer > buffer_
Definition SFZSample.h:45
water::File file_
Definition SFZSample.h:44
bool load()
Definition SFZSample.cpp:24
double sampleRate_
Definition SFZSample.h:46
water::uint64 sampleLength_
Definition SFZSample.h:47
void setBuffer(water::AudioSampleBuffer *newBuffer)
Definition SFZSample.cpp:119
Definition AudioSampleBuffer.h:42
register unsigned i
Definition inflate.c:1575
static char filename[]
Definition features.c:5
struct backing_store_struct * info
Definition jmemsys.h:183
Definition SFZDebug.cpp:11
unsigned long long uint64
Definition water.h:102
long long int64
Definition water.h:100
uch * p
Definition crypt.c:594
int r
Definition crypt.c:458