画波形图的问题
想实现波形图的绘制,波形数据为PCM编码,存储在buffer(char *)中,数据的格式不确定,可能是单声道或立体声,采样位数可能是8 or 16,如何实现?
是不是要按采样点画? 左右声道的数据要不要合成一个数据?还是左右声道取其一?
(我得到的数据大小在-128~127,左右声道作为两个数据)
[解决办法]
左右声道不需要合成一个数据,画波形图的时候,如果有两个声道的话,就画两个声道,左声道数据和右声道数据单独处理。网上应该有很多这样的例子。以前写过一个简单的类似的程序。
[解决办法]
codeproject上面有个例子的。。其实说穿了也简单,找一些过滤点,这些过滤点要根据你自己的需要,比如你在1024个像素上面画10分钟44100的16位双声道数据,那就是在10分钟里面找出1024个点画。你的8为和16位要通过wav的头来读出,使用音频数据你是没办法判断左右声道8/16位的。
便于缩放,把画出来的图形保存在一个bitmap里面,缩放的时候,再copy到缩放区域就可以了。