32 const unsigned int numChannels_,
33 const unsigned int bitsPerSample_)
48 const unsigned int bitsPerSample_)
66 while (--numSamples >= 0)
68 const double samp = *src++;
71 *dest = std::numeric_limits<int>::min();
73 *dest = std::numeric_limits<int>::max();
75 *dest =
roundToInt (std::numeric_limits<int>::max() * samp);
83 int64 numSamplesToRead)
85 const int bufferSize = 16384;
88 int* buffers[128] = {
nullptr };
93 if (numSamplesToRead < 0)
96 while (numSamplesToRead > 0)
98 const int numToDo = (
int)
jmin (numSamplesToRead, (
int64) bufferSize);
100 if (! reader.
read (buffers, (
int)
numChannels, startSample, numToDo,
false))
105 int** bufferChan = buffers;
107 while (*bufferChan !=
nullptr)
109 void*
const b = *bufferChan++;
111 constexpr auto scaleFactor = 1.0f /
static_cast<float> (0x7fffffff);
120 if (!
write (
const_cast<const int**
> (buffers), numToDo))
123 numSamplesToRead -= numToDo;
124 startSample += numToDo;
134 while (numSamplesToRead > 0)
136 auto numToDo =
jmin (numSamplesToRead, samplesPerBlock);
139 info.clearActiveBufferRegion();
146 numSamplesToRead -= numToDo;
158 return write ((
const int**) channels, numSamples);
160 std::vector<int*> chans (256);
161 std::vector<int> scratch (4096);
163 jassert (numSourceChannels < (
int) chans.size());
164 const int maxSamples = (
int) scratch.size() / numSourceChannels;
166 for (
int i = 0;
i < numSourceChannels; ++
i)
167 chans[(
size_t)
i] = scratch.data() + (
i * maxSamples);
169 chans[(size_t) numSourceChannels] =
nullptr;
172 while (numSamples > 0)
174 auto numToDo =
jmin (numSamples, maxSamples);
176 for (
int i = 0;
i < numSourceChannels; ++
i)
179 if (!
write ((
const int**) chans.data(), numToDo))
182 startSample += numToDo;
183 numSamples -= numToDo;
192 jassert (startSample >= 0 && startSample + numSamples <= source.
getNumSamples() && numSourceChannels > 0);
194 if (startSample == 0)
197 const float* chans[256];
200 for (
int i = 0;
i < numSourceChannels; ++
i)
203 chans[numSourceChannels] =
nullptr;
219 buffer (channels, numSamples),
242 int start1, size1, start2, size2;
243 fifo.prepareToWrite (numSamples, start1, size1, start2, size2);
245 if (size1 + size2 < numSamples)
248 for (
int i =
buffer.getNumChannels(); --
i >= 0;)
254 fifo.finishedWrite (size1 + size2);
266 auto numToDo =
fifo.getTotalSize() / 4;
268 int start1, size1, start2, size2;
269 fifo.prepareToRead (numToDo, start1, size1, start2, size2);
274 writer->writeFromAudioSampleBuffer (
buffer, start1, size1);
285 writer->writeFromAudioSampleBuffer (
buffer, start2, size2);
293 fifo.finishedRead (size1 + size2);
311 if (newReceiver !=
nullptr)
328 std::unique_ptr<AudioFormatWriter>
writer;
354 buffer->setDataReceiver (receiver);
359 buffer->setFlushInterval (numSamplesPerFlush);
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
Definition juce_AbstractFifo.h:73
Definition juce_AudioSampleBuffer.h:34
Type * getWritePointer(int channelNumber) noexcept
Definition juce_AudioSampleBuffer.h:291
int getNumChannels() const noexcept
Definition juce_AudioSampleBuffer.h:236
int getNumSamples() const noexcept
Definition juce_AudioSampleBuffer.h:242
const Type * getReadPointer(int channelNumber) const noexcept
Definition juce_AudioSampleBuffer.h:253
const Type ** getArrayOfReadPointers() const noexcept
Definition juce_AudioSampleBuffer.h:327
Definition juce_AudioChannelSet.h:47
Definition juce_AudioSource.h:110
virtual void getNextAudioBlock(const AudioSourceChannelInfo &bufferToFill)=0
Definition juce_CriticalSection.h:43
static void JUCE_CALLTYPE convertFixedToFloat(float *dest, const int *src, float multiplier, int num) noexcept
Definition juce_FloatVectorOperations.cpp:1425
Definition juce_OutputStream.h:38
Definition juce_String.h:53
Definition juce_TimeSliceThread.h:44
friend class TimeSliceThread
Definition juce_TimeSliceThread.h:68
Definition juce_TimeSliceThread.h:83
UINT_D64 w
Definition inflate.c:942
register unsigned i
Definition inflate.c:1575
struct backing_store_struct * info
Definition jmemsys.h:183
JSAMPIMAGE data
Definition jpeglib.h:945
float out
Definition lilv_test.c:1461
Definition carla_juce.cpp:31
CriticalSection::ScopedLockType ScopedLock
Definition juce_CriticalSection.h:186
constexpr Type jmin(Type a, Type b)
Definition juce_MathsFunctions.h:106
long long int64
Definition juce_MathsFunctions.h:54
static void convertFloatsToInts(int *dest, const float *src, int numSamples) noexcept
Definition juce_AudioFormatWriter.cpp:64
int roundToInt(const FloatType value) noexcept
Definition juce_MathsFunctions.h:465
constexpr int numElementsInArray(Type(&)[N]) noexcept
Definition juce_MathsFunctions.h:344
#define false
Definition ordinals.h:83
Definition juce_AudioSource.h:33
typedef int(UZ_EXP MsgFn)()