【发布时间】:2015-02-03 04:42:55
【问题描述】:
尽可能简单地说。
- 我从设备接收数据并且信号是 24 位有符号整数。
- 我想创建 16 位 WAV 文件。
- 为此,我想继续将即将到来的包含 256 个样本的音频缓冲区写入 *.wav 文件流。
- 如何将缓冲区值(用指向 256 元素数组的简单指针写入的井值)从 [24 位有符号整数] 转换为 [16 位有符号整数]。
有缩放值吗?例如,当我想将 [24 bit signed int] 转换为 [24 bit signed double] 我是这样做的:
for (int i=0; i<256; i++) {
bufferInDouble = *((int*)bufferRawData[currentPan]+i) / (double)0x7fffffff;
}
有没有类似的方法?
【问题讨论】:
-
设备是否对带限信号进行采样?您是否在 24 位过采样?
-
抱歉 :D 在所有这些位/数据操作方面,我有点新手。在设备文档中有一条信息:“系统使用 24 位信号路径处理所有数据,无论 I/O 格式如何。您可以以任何支持的采样率录制和播放 16 位或 24 位音频文件”。我想知道这是否足以回答您的问题。
-
在那种情况下,我认为@jaket 的回答就足够了
标签: c++ audio casting signal-processing