|
|
|
@@ -22600,10 +22600,23 @@ void AudioDataConverters::convertFloatToInt16LE (const float* source, void* dest |
|
|
|
const double maxVal = (double) 0x7fff; |
|
|
|
char* intData = (char*) dest; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (dest != (void*) source || destBytesPerSample <= 4) |
|
|
|
{ |
|
|
|
*(uint16*)intData = swapIfBigEndian ((uint16) (short) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
intData += destBytesPerSample; |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
*(uint16*)intData = swapIfBigEndian ((uint16) (short) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
intData += destBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
intData += destBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= destBytesPerSample; |
|
|
|
*(uint16*)intData = swapIfBigEndian ((uint16) (short) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22612,10 +22625,23 @@ void AudioDataConverters::convertFloatToInt16BE (const float* source, void* dest |
|
|
|
const double maxVal = (double) 0x7fff; |
|
|
|
char* intData = (char*) dest; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (dest != (void*) source || destBytesPerSample <= 4) |
|
|
|
{ |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
*(uint16*)intData = swapIfLittleEndian ((uint16) (short) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
intData += destBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
*(uint16*)intData = swapIfLittleEndian ((uint16) (short) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
intData += destBytesPerSample; |
|
|
|
intData += destBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= destBytesPerSample; |
|
|
|
*(uint16*)intData = swapIfLittleEndian ((uint16) (short) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22624,10 +22650,23 @@ void AudioDataConverters::convertFloatToInt24LE (const float* source, void* dest |
|
|
|
const double maxVal = (double) 0x7fffff; |
|
|
|
char* intData = (char*) dest; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (dest != (void*) source || destBytesPerSample <= 4) |
|
|
|
{ |
|
|
|
littleEndian24BitToChars ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i])), intData); |
|
|
|
intData += destBytesPerSample; |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
littleEndian24BitToChars ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i])), intData); |
|
|
|
intData += destBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
intData += destBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= destBytesPerSample; |
|
|
|
littleEndian24BitToChars ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i])), intData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22636,10 +22675,23 @@ void AudioDataConverters::convertFloatToInt24BE (const float* source, void* dest |
|
|
|
const double maxVal = (double) 0x7fffff; |
|
|
|
char* intData = (char*) dest; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (dest != (void*) source || destBytesPerSample <= 4) |
|
|
|
{ |
|
|
|
bigEndian24BitToChars ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i])), intData); |
|
|
|
intData += destBytesPerSample; |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
bigEndian24BitToChars ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i])), intData); |
|
|
|
intData += destBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
intData += destBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= destBytesPerSample; |
|
|
|
bigEndian24BitToChars ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i])), intData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22648,10 +22700,23 @@ void AudioDataConverters::convertFloatToInt32LE (const float* source, void* dest |
|
|
|
const double maxVal = (double) 0x7fffffff; |
|
|
|
char* intData = (char*) dest; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (dest != (void*) source || destBytesPerSample <= 4) |
|
|
|
{ |
|
|
|
*(uint32*)intData = swapIfBigEndian ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
intData += destBytesPerSample; |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
*(uint32*)intData = swapIfBigEndian ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
intData += destBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
intData += destBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= destBytesPerSample; |
|
|
|
*(uint32*)intData = swapIfBigEndian ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22660,15 +22725,30 @@ void AudioDataConverters::convertFloatToInt32BE (const float* source, void* dest |
|
|
|
const double maxVal = (double) 0x7fffffff; |
|
|
|
char* intData = (char*) dest; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (dest != (void*) source || destBytesPerSample <= 4) |
|
|
|
{ |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
*(uint32*)intData = swapIfLittleEndian ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
intData += destBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
*(uint32*)intData = swapIfLittleEndian ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
intData += destBytesPerSample; |
|
|
|
intData += destBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= destBytesPerSample; |
|
|
|
*(uint32*)intData = swapIfLittleEndian ((uint32) roundDoubleToInt (jlimit (-maxVal, maxVal, maxVal * source[i]))); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void AudioDataConverters::convertFloatToFloat32LE (const float* source, void* dest, int numSamples, const int destBytesPerSample) |
|
|
|
{ |
|
|
|
jassert (dest != (void*) source || destBytesPerSample <= 4); // This op can't be performed on in-place data! |
|
|
|
|
|
|
|
char* d = (char*) dest; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
@@ -22685,6 +22765,8 @@ void AudioDataConverters::convertFloatToFloat32LE (const float* source, void* de |
|
|
|
|
|
|
|
void AudioDataConverters::convertFloatToFloat32BE (const float* source, void* dest, int numSamples, const int destBytesPerSample) |
|
|
|
{ |
|
|
|
jassert (dest != (void*) source || destBytesPerSample <= 4); // This op can't be performed on in-place data! |
|
|
|
|
|
|
|
char* d = (char*) dest; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
@@ -22704,10 +22786,23 @@ void AudioDataConverters::convertInt16LEToFloat (const void* const source, float |
|
|
|
const float scale = 1.0f / 0x7fff; |
|
|
|
const char* intData = (const char*) source; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (source != (void*) dest || srcBytesPerSample >= 4) |
|
|
|
{ |
|
|
|
dest[i] = scale * (short) swapIfBigEndian (*(uint16*)intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
dest[i] = scale * (short) swapIfBigEndian (*(uint16*)intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
intData += srcBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= srcBytesPerSample; |
|
|
|
dest[i] = scale * (short) swapIfBigEndian (*(uint16*)intData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22716,10 +22811,23 @@ void AudioDataConverters::convertInt16BEToFloat (const void* const source, float |
|
|
|
const float scale = 1.0f / 0x7fff; |
|
|
|
const char* intData = (const char*) source; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (source != (void*) dest || srcBytesPerSample >= 4) |
|
|
|
{ |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
dest[i] = scale * (short) swapIfLittleEndian (*(uint16*)intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
dest[i] = scale * (short) swapIfLittleEndian (*(uint16*)intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
intData += srcBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= srcBytesPerSample; |
|
|
|
dest[i] = scale * (short) swapIfLittleEndian (*(uint16*)intData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22728,10 +22836,23 @@ void AudioDataConverters::convertInt24LEToFloat (const void* const source, float |
|
|
|
const float scale = 1.0f / 0x7fffff; |
|
|
|
const char* intData = (const char*) source; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (source != (void*) dest || srcBytesPerSample >= 4) |
|
|
|
{ |
|
|
|
dest[i] = scale * (short) littleEndian24Bit (intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
dest[i] = scale * (short) littleEndian24Bit (intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
intData += srcBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= srcBytesPerSample; |
|
|
|
dest[i] = scale * (short) littleEndian24Bit (intData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22740,10 +22861,23 @@ void AudioDataConverters::convertInt24BEToFloat (const void* const source, float |
|
|
|
const float scale = 1.0f / 0x7fffff; |
|
|
|
const char* intData = (const char*) source; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (source != (void*) dest || srcBytesPerSample >= 4) |
|
|
|
{ |
|
|
|
dest[i] = scale * (short) bigEndian24Bit (intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
dest[i] = scale * (short) bigEndian24Bit (intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
intData += srcBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= srcBytesPerSample; |
|
|
|
dest[i] = scale * (short) bigEndian24Bit (intData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22752,10 +22886,23 @@ void AudioDataConverters::convertInt32LEToFloat (const void* const source, float |
|
|
|
const float scale = 1.0f / 0x7fffffff; |
|
|
|
const char* intData = (const char*) source; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (source != (void*) dest || srcBytesPerSample >= 4) |
|
|
|
{ |
|
|
|
dest[i] = scale * (int) swapIfBigEndian (*(uint32*) intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
dest[i] = scale * (int) swapIfBigEndian (*(uint32*) intData); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
intData += srcBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= srcBytesPerSample; |
|
|
|
dest[i] = scale * (int) swapIfBigEndian (*(uint32*) intData); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@@ -22764,10 +22911,23 @@ void AudioDataConverters::convertInt32BEToFloat (const void* const source, float |
|
|
|
const float scale = 1.0f / 0x7fffffff; |
|
|
|
const char* intData = (const char*) source; |
|
|
|
|
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
if (source != (void*) dest || srcBytesPerSample >= 4) |
|
|
|
{ |
|
|
|
for (int i = 0; i < numSamples; ++i) |
|
|
|
{ |
|
|
|
dest[i] = scale * (int) (swapIfLittleEndian (*(uint32*) intData)); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
dest[i] = scale * (int) (swapIfLittleEndian (*(uint32*) intData)); |
|
|
|
intData += srcBytesPerSample; |
|
|
|
intData += srcBytesPerSample * numSamples; |
|
|
|
|
|
|
|
for (int i = numSamples; --i >= 0;) |
|
|
|
{ |
|
|
|
intData -= srcBytesPerSample; |
|
|
|
dest[i] = scale * (int) (swapIfLittleEndian (*(uint32*) intData)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|