c++ - 音频编程数据类型

标签 c++ c audio types

我正在尝试处理音频原始数据并正在研究网络上的代码。我不明白为什么一开始进行音频编程,就使用 qint64 而不是简单的 int (我使用的是 Qt),甚至更多,为什么要使用字符

 qint64 readData(char *data, qint64 maxlen);
 qint64 writeData(const char *data, qint64 len);

char * data 是指向保存数据的字符数组的指针。该数组保存音频样本。一个样本表示为一个值,例如 unsigned int。为什么我们需要或使用char?我总是想到字符数据,但音频数据存储为一些数字,如 int,不是吗?

最佳答案

它使用 qint64 (或者通常是 64 位数据类型),因为音频文件中的数据大小可能大于 2GB,这是 32 位有符号的限制数字(负长度对于大多数目的来说往往是无用的)。

数据是 char 因为它是通用的并且“可以用于任何东西” - 因为音频数据可以是每个 channel 8、16、12、24 或 32 位,并且接口(interface)不支持在进一步“向下堆栈”之前我真的不想说哪个。换句话说,它是一个字节流,就像您查看二进制文件一样 - 字节可能会以不同的方式集中在一起,具体取决于它的实际含义。但这个函数的接口(interface)应该“接受任何东西”。

关于c++ - 音频编程数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31217567/

相关文章:

c++ - 如何从多索引中获取值

c - 如何通过传感器控制鼠标光标?

python - 将音频信号分成小样本

c - Windows中的系统调用

angularjs - ReferenceError:在Ionic App中未定义媒体

c++ - 将音频和视频文件合并为一个 [C++]

c++ - 隐藏 QDockWidget 的小部件并同时设置垂直标题栏

c++ - 包含对其自身实例的引用的标准 vector 的模板类

c++ - 动态实例化和初始化结构

c - 丢弃 C 数组中的重复元素/超出数组边界