Audio cutoff when playing using dmix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am facing audio clipping issues when dmix is used for playback. For the test we used a full scale sine wave tone generated using software and encoded as "Signed 16 bit Little Endian, Rate 44100 Hz, Mono". The audio is getting cut out at a 2-3 second interval during playback. This happens only for a fraction of second but it is consistent. This does not happen when audio is played back on the device directly but only when going through dmix. We have observed that there were differences in audio cutting off when the sampling rate was set to 8000Hz and 32000 Hz in asound.conf.

The contents of asound.conf is pasted below for your reference:

pcm.dmixer {
    type dmix
    ipc_key 2048
    ipc_key_add_uid true

    slave {
        pcm hw:0
        rate 8000
        channels 2
    }
}

pcm.asymed {
    type asym
    playback.pcm "dmixer"
    capture.pcm "hw:0,0"
}

pcm.rateConvert {
    type plug
    slave.pcm "asymed"
}

The configuration given above works fine with dmix in 2.6.29 kernel, I am using kernel 2.6.22.18.

I have compared the configuration differences (buffers and periods) with and without using dmix. I tried applying some parameters (like buffer_size, period_time and period_size) which was in use when audio was played directly to the hardware device by aplay using the following command:

aplay -D rateConvert --period-time=92879 --buffer-size=65536 --period-size=4096 /mnt/test.wav -vvv -d 5

There was come improvement in the audio cutting off issue but it was not eliminated completely.

Given below are the logs for aplay (-vvv) with and without using dmix (with audio cutoff issue on kernel 2.6.22):
Without using dmix:

[root@OMAP3 tests]# aplay /mnt/test.wav -vvv -d 5 5
Playing WAVE '/mnt/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
Plug PCM: Hardware PCM card 0 'TWL4030' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 1
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 65536
  period_size  : 4096
  period_time  : 92879
  tick_time    : 7812
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 4096
  xfer_align   : 4096
  start_threshold  : 65536
  stop_threshold   : 65536
  silence_threshold: 0
  silence_size : 0
  boundary     : 1073741824
Max peak (4096 samples): 0x00006665 ################     79%
Max peak (4096 samples): 0x00006665 ################     79%
...Same text repeats 50 times...
Max peak (4096 samples): 0x00006665 ################     79%
Max peak (4096 samples): 0x00006665 ################     79%

Using dmix:

[root@OMAP3 tests]# aplay -D rateConvert /mnt/test.wav -vvv -d 5
Playing WAVE '/mnt/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
Plug PCM: Rate conversion PCM (8000, sformat=S16_LE)
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 1
  rate         : 44100
  exact rate   : 44100 (44100/1)
  msbits       : 16
  buffer_size  : 22050
  period_size  : 5512
  period_time  : 125000
  tick_time    : 0
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 5512
  xfer_align   : 5512
  start_threshold  : 22048
  stop_threshold   : 22050
  silence_threshold: 0
  silence_size : 0
  boundary     : 1445068800
Slave: Route conversion PCM (sformat=S16_LE)
  Transformation table:
    0 <- 0
    1 <- 0
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 1
  rate         : 8000
  exact rate   : 8000 (8000/1)
  msbits       : 16
  buffer_size  : 4000
  period_size  : 1000
  period_time  : 125000
  tick_time    : 0
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 1000
  xfer_align   : 1000
  start_threshold  : 4000
  stop_threshold   : 4000
  silence_threshold: 0
  silence_size : 0
  boundary     : 2097152000
Slave: Direct Stream Mixing PCM
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 8000
  exact rate   : 8000 (8000/1)
  msbits       : 16
  buffer_size  : 4000
  period_size  : 1000
  period_time  : 125000
  tick_time    : 0
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 1000
  xfer_align   : 1000
  start_threshold  : 4000
  stop_threshold   : 4000
  silence_threshold: 0
  silence_size : 0
  boundary     : 2097152000
Hardware PCM card 0 'TWL4030' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 8000
  exact rate   : 8000 (8000/1)
  msbits       : 16
  buffer_size  : 16000
  period_size  : 1000
  period_time  : 125000
  tick_time    : 7812
  tstamp_mode  : NONE
  period_step  : 1
  sleep_min    : 0
  avail_min    : 1000
  xfer_align   : 1000
  start_threshold  : 1
  stop_threshold   : 2097152000
  silence_threshold: 0
  silence_size : 2097152000
  boundary     : 2097152000
Max peak (5512 samples): 0x00006665 ################     79%
Max peak (5512 samples): 0x00006665 ################     79%
...Same text repeats 36 times...
Max peak (5512 samples): 0x00006665 ################     79%
Max peak (5512 samples): 0x00006665 ################     79%
Max peak (5512 samples): 0x00005f1a ###############      74%

Please help me fix this issue. Does this occur due to non-optimal settings of the parameters (buffers, periods) in the configuration or is it some other issue with the ALSA library or the kernel? Please ask if any more setup/configuration settings are required for reference.

Thanks and Regards,

Ruchi Sirauthiya

_______________________________________________
Linux-audio-user mailing list
Linux-audio-user@xxxxxxxxxxxxxxxxxxxx
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user

[Index of Archives]     [Linux Sound]     [ALSA Users]     [Pulse Audio]     [ALSA Devel]     [Sox Users]     [Linux Media]     [Kernel]     [Photo Sharing]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux