При чтении аудио низкого уровня из QAudioInput
Полученные данные представляют собой QByteArray
, При настройке QAudioInput
, вы можете сказать ему тип образца, который вы хотите из данных. Если вы укажете float, означает ли это, что данные в QByteArray
уже в этом формате? Если это так, вы просто приводите выходные данные для чтения массива с плавающей точкой? Если это не так, как он хранится, чтобы получить ожидаемые результаты?
Вся память компьютера состоит из отдельных байтов, но вы можете хранить в этих байтах все, что захотите. Не ошибись QByteArray
для QVector<char>
, QByteArray
является классом «общего буфера памяти» Qt.
Если формат записи — это число с плавающей запятой, то просто читайте числа с плавающей запятой из байтового массива, не нужно конвертировать, на самом деле это даст вам больше сэмплов, чем у вас, так как числа с плавающей запятой больше байта, и вы получите мусор.
Вы можете напрямую получить доступ к байтовому массиву data
указатель и чтение size() / sizeof(float)
плывет из него.