You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
qoa_desc qoa = {...}
// Conversion from planar to interleaved PCM format
// and conversion from float32 to int16 (possible data loss)
// 0..............qoa.samples.......qoa.samples * 2
// | |
// v v
// LLLLL..........LLLLLRRRRR...........RRRRR
const float *planar_data = ...;
// 0.....................qoa.samples * 2
// |
// v
// LRLRLRLR............LRLRLRLR
short interleaved_data[5120 * QOA_MAX_CHANNELS];
for (uint c = 0; c < qoa.channels; c++) {
for (int i = 0; i < qoa.samples; i++) {
int planar_index = i + (qoa.samples * c);
float f = planar_data[planar_index];
if (f > 1.0) f = 1.0;
if (f < -1.0) f = -1.0;
int16_t s = (int16_t)(f * 0x7fff);
int interleaved_index = (i * qoa.channels) + c;
interleaved_data[interleaved_index] = s;
}
}
unsigned char *encoded_data = qoa_encode(interleaved_data, &qoa, &out_len);
...
Is there a way to convert planar audio data (float 32 : LLLLLL.......RRRRRR) to qoa format with minimum data loss?
The text was updated successfully, but these errors were encountered: