我正在尝试处理音频原始数据并正在研究网络上的代码。我不明白为什么一开始进行音频编程,就使用 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/