【发布时间】:2014-01-03 08:54:10
【问题描述】:
我有一个关于 void* 的问题。我有一个功能可以通过麦克风捕获 0.2 秒的音频块。我必须处理这些块,具体来说是卷积。
此函数将这些音频块作为 void * 返回。要处理此信息,我不能使用 void * 因为我无法访问它们,所以我必须转换为其他类型的数据,例如 double 但我不知道分配给这个新指针的长度或如何我可以吗?
我的代码:
void Pre_proc_mono::PreProcess(void *data, int lenbytes, float t_max){
double * aux = (double*) data;
}
现在,aux 的长度也是 lenbytes 吗?或者我必须这样做:
int size = lenbytes/sizeof(double);
我怎样才能做到这一点?
【问题讨论】:
-
你测试了吗?它奏效了吗?它是某种图书馆吗?如果是这样,那么文档是怎么说的?我怀疑来自麦克风的数据会是双倍的。
-
我认为我真正的问题是如何处理 void* 数据中的信息?可以很好地转换为双精度数据或其他类型的数据吗?
-
文档应该告诉你数据的格式。
-
如果您的音频采用
double格式,我会感到惊讶。这给你一个疯狂的范围(几个一百 dB),远远超过你的硬件可以处理的范围。通常,short就足够了。
标签: c++ signal-processing