On Tue, Feb 1, 2011 at 7:55 AM, farhan baluch
<farhanbaluch@gmail.com> wrote:
Hi All,
I am trying to read data from a usb microphone and using the pretty standard method of using ioctl's to setup the sampling rate, channels, bits and block size . This all works so the device is correctly setup. I then use "read" to read samples from the device which shows up as /dev/dsp1. I get a lot more samples from this read command in one second of recording than the set sample rate. E.g. if i set 10Khz on one run i got 269312 samples. Looking at the raw data it looks like there is a lot of duplication of data? is this common for the audio input device? if so what kind of encoding is it (e.g with some specific redundancy built in)?
You need to use the correct ioctl()'s to set up the data format before you read from the device. After you've done that, the data will make sense to you. If you just start reading from the device, you don't know the sample rate, bitdepth and channel count. I suspect the "duplication of data" happens because the device is sending data in two channels. (mono in "stereo")
Sampo