[alsa-devel] new driver: 30mS interval problem

William Juul william at juul.no
Tue Feb 26 15:04:13 CET 2008


On Tue, Feb 26, 2008 at 2:22 PM, Takashi Iwai <tiwai at suse.de> wrote:
> At Tue, 26 Feb 2008 13:56:51 +0100,
>
>
> William Juul wrote:
>  >
>  > On Mon, Feb 25, 2008 at 4:43 PM, Takashi Iwai <tiwai at suse.de> wrote:
>  > > At Mon, 25 Feb 2008 15:46:28 +0100,
>  > >
>  > > William Juul wrote:
>  > >  >
>  > >  > Hello
>  > >  >
>  > >  > I am new to ALSA and trying to write a new driver for a DAC connected
>  > >  > with PCM to an AVR32 on a NGW100 reference card provided by Atmel.
>  > >  >
>  > >  > The sampling rate I am currently using is 11047and the DAC is
>  > >  > providing 4 channels of 24bit. The HW interface is using DMA to copy
>  > >  > data to RAM.
>  > >  > By studying the audio data in hexdump or in Audacity I can verify that
>  > >  > the sound looks good in intervals of about 30mS, then all channels are
>  > >  > garbled for 30mS. This pattern repeat itself throughout the audio
>  > >  > capture.
>  > >  >
>  > >  > I am not confident I have configured all ALSA parameters properly.
>  > >  > How can I go about fixing/debugging this 30mS intverval problem?
>  > >
>  > >  Maybe the period size has to be aligned to some value?
>  > >
>  > >
>  > >  >
>  > >  > Below is the command I am using.
>  > >  >
>  > >  >
>  > >  > Best regards
>  > >  > William Juul
>  > >  >
>  > >  > # arecord -r 11047 -c 4 -f S24_LE -s 1 -A 100 -d 5 --buffer-size 16384
>  > >  > -F 21333 -v > test.wav
>  > >
>  > >  Try to change the period size as well.
>  > >
>  > >
>  > >  Takashi
>  > >
>  > I tried changing the period size in both directions but it would never
>  > change to anything but 490.
>
>  Then your driver has some constraints.  Or does it use dmix?
>
>
>  > Then I tried changing the number of channels. -c 1 gave me lots of
>  > "overrun", but -c 2 made everything work. The WAV file would still
>  > contain data from all 4 channels. I do not understand the correlation
>  > between the different parameters and why it behaves like this. Thus I
>  > do not know what to adjust to remedy this.
>  >
>  > The command I used to make everything work was:
>  > arecord -r 11047 -c 2 -f S24_LE -s 100 -A 10000 -d 5 > test.wav
>  >
>  > It turned out that --buffer-size and -F did not actually change anything.
>
>  Check with -v option what plugins are being used.
>

This is the output with -v. The configuration is printed twice since I
have compiled a version of arecord that always print it.
I do not use dmix, and I have not intentionally made any constraints.
The driver source code is attached.

best regards
William

 # arecord -r 22786 -c 2 -f S24_LE -s 100 -A 10000 -d 5 -v > temp.wav
ALSA /home/williaj/src/ads127x/src/ads127x.c:158: snd_ads127x_pcm_open
Recording WAVE 'stdin' : Signed 24 bit Little Endian, Rate 22786 Hz, Stereo
pcm->setup: 1
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S24_LE
  subformat    : STD
  channels     : 2
  rate         : 22786
  exact rate   : 22786 (22786/1)
  msbits       : 32
  buffer_size  : 4044
  period_size  : 1011
  period_time  : 44369
  tick_time    : 4000
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 1011
  xfer_align   : 1011
  start_threshold  : 1
  stop_threshold   : 4044
  silence_threshold: 0
  silence_size : 0
  boundary     : 2120220672
Plug PCM: Hardware PCM card 0 'AVR32 NGW100 external DAC' device 0 subdevice 0
Its setup is:
pcm->setup: 1
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S24_LE
  subformat    : STD
  channels     : 2
  rate         : 22786
  exact rate   : 22786 (22786/1)
  msbits       : 32
  buffer_size  : 4044
  period_size  : 1011
  period_time  : 44369
  tick_time    : 4000
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 100
  avail_min    : 227
  xfer_align   : 1
  start_threshold  : 1
  stop_threshold   : 15020
  silence_threshold: 0
  silence_size : 0
  boundary     : 2120220672

>
>  Takashi
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ads127x.c
Type: text/x-csrc
Size: 21852 bytes
Desc: not available
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20080226/098ae27a/attachment-0001.c 


More information about the Alsa-devel mailing list