Я hava файл.pcm с аудиоданными. В бетоне 17816 байтов, которые соответствуют 8908 образцам (44100 Гц и 16 бит). Я хочу прочитать эти образцы как двойные данные, но проблема в том, что double - это 8 байт. Итак, мой вопрос: как я могу это сделать? Когда я делаю это в Matlab с wavread-функцией, Matlab создает двойную переменную с 8908 образцами, поэтому я хочу сделать то же самое, но в c++.
Я не уверен, что MATLAB делает точно, но, по-видимому, его двойные значения находятся между 0 (или -1) и 1.
В этом случае вам нужно будет добавить коэффициент масштабирования (соответственно знаменатель):
int16_t filevalue;
double dvalue = filevalue / 32768.;
или
uint16_t filevalue;
double dvalue = filevalue / 65536.;
Прочитайте 16 бит (возможно, как unsigned short
или uint16_t
). Затем заставьте это значение double
.
double
довольно тривиально в C ++:uin16_t i = 1337; double d = i;