получение массива с плавающей точкой из qbytearray QAudioInput

При чтении аудио низкого уровня из QAudioInputПолученные данные представляют собой QByteArray, При настройке QAudioInput, вы можете сказать ему тип образца, который вы хотите из данных. Если вы укажете float, означает ли это, что данные в QByteArray уже в этом формате? Если это так, вы просто приводите выходные данные для чтения массива с плавающей точкой? Если это не так, как он хранится, чтобы получить ожидаемые результаты?

0

Решение

Вся память компьютера состоит из отдельных байтов, но вы можете хранить в этих байтах все, что захотите. Не ошибись QByteArray для QVector<char>, QByteArray является классом «общего буфера памяти» Qt.

Если формат записи — это число с плавающей запятой, то просто читайте числа с плавающей запятой из байтового массива, не нужно конвертировать, на самом деле это даст вам больше сэмплов, чем у вас, так как числа с плавающей запятой больше байта, и вы получите мусор.

Вы можете напрямую получить доступ к байтовому массиву data указатель и чтение size() / sizeof(float) плывет из него.

0

Другие решения