Сохранить в двойных переменных образцах 16 бит

0

Я hava файл.pcm с аудиоданными. В бетоне 17816 байтов, которые соответствуют 8908 образцам (44100 Гц и 16 бит). Я хочу прочитать эти образцы как двойные данные, но проблема в том, что double - это 8 байт. Итак, мой вопрос: как я могу это сделать? Когда я делаю это в Matlab с wavread-функцией, Matlab создает двойную переменную с 8908 образцами, поэтому я хочу сделать то же самое, но в c++.

  • 0
    Преобразование 16-разрядного целого числа в double довольно тривиально в C ++: uin16_t i = 1337; double d = i;
Теги:
signal-processing

2 ответа

1
Лучший ответ

Я не уверен, что MATLAB делает точно, но, по-видимому, его двойные значения находятся между 0 (или -1) и 1.

В этом случае вам нужно будет добавить коэффициент масштабирования (соответственно знаменатель):

int16_t filevalue;
double dvalue = filevalue / 32768.;

или

uint16_t filevalue;
double dvalue = filevalue / 65536.;
1

Прочитайте 16 бит (возможно, как unsigned short или uint16_t). Затем заставьте это значение double.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню