← Back to team overview

desktop-packages team mailing list archive

[Bug 996906]

 

0.5 ms is just what PA reports as the minimal latency. I don't need it
to be this small, I just don't want it to grow up to 100 ms without the
possibility to automatically drop it back to normal. I suppose it's not
possible to make PA work with fragments as ALSA does. As I understand
from the Lennart's article, the latency in ALSA is the size of period
±something. For PA it's the size of fragment * number of fragments as it
reports this as the minimal latency in pacmd list-sinks. It's also very
noticeable when you use realtime apps like LMMS or games.

However, it's not true for dmix. I play a file with everything at
default on my home PC with SB Live 7.1 (at work the overall picture is
more or less the same), here's what I have:

> aplay -v /usr/share/sounds/alsa/Front_Center.wav
Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
Plug PCM: Route conversion PCM (sformat=S32_LE)
  Transformation table:
    0 <- 0
    1 <- 0
Its setup is:
  stream       : PLAYBACK
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 1
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 16
  buffer_size  : 8192
  period_size  : 1024
  period_time  : 21333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 1024
  period_event : 0
  start_threshold  : 8192
  stop_threshold   : 8192
  silence_threshold: 0
  silence_size : 0
  boundary     : 4611686018427387904
Slave: Direct Stream Mixing PCM
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 8192
  period_size  : 1024
  period_time  : 21333
  tstamp_mode  : NONE
  period_step  : 1
  avail_min    : 1024
  period_event : 0
  start_threshold  : 8192
  stop_threshold   : 8192
  silence_threshold: 0
  silence_size : 0
  boundary     : 4611686018427387904
Hardware PCM card 0 'CA0106' device 0 subdevice 0
Its setup is:
  stream       : PLAYBACK
  access       : MMAP_INTERLEAVED
  format       : S32_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 32
  buffer_size  : 8192
  period_size  : 1024
  period_time  : 21333
  tstamp_mode  : ENABLE
  period_step  : 1
  avail_min    : 1024
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 4611686018427387904
  silence_threshold: 0
  silence_size : 4611686018427387904
  boundary     : 4611686018427387904
  appl_ptr     : 0
  hw_ptr       : 0

The buffer size is 8192 frames which is8192 / 48000 == 0.17066 s == 170
ms but there's no noticeable latency at all. If I setup PA not to use
tsched and set 8 fragments of 21 ms each (almost exactly as in dmix), I
have this setup then:

Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c: Hardware PCM card 0 'CA0106' device 0 subdevice 0
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c: Its setup is:
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   stream       : PLAYBACK
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   access       : MMAP_INTERLEAVED
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   format       : S32_LE
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   subformat    : STD
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   channels     : 2
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   rate         : 48000
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   exact rate   : 48000 (48000/1)
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   msbits       : 32
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   buffer_size  : 8064
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   period_size  : 1008
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   period_time  : 21000
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   tstamp_mode  : ENABLE
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   period_step  : 1
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   avail_min    : 1008
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   period_event : 1
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   start_threshold  : -1
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   stop_threshold   : 9079256848778919936
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   silence_threshold: 0
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   silence_size : 0
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   boundary     : 9079256848778919936
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   appl_ptr     : 0
Apr 16 19:16:17 homecomp pulseaudio[6121]: [pulseaudio] alsa-util.c:   hw_ptr       : 0

The point is, while the configuration looks the same the latency is
huge, it's exactly 168 ms and is just unbearable. That's what happens
after some really bad PC slowdowns because of the workload and it
happens for every app and there's no way to make it behave properly
without restarting PA and everything else. So why PA doesn't work as
dmix does? Why dmix has 168ms buffer and responds instantly like there's
no perceptible latency? Why dmix never underruns (at least audibly)
while PA does it pretty often on a range of chipsets? I would be pretty
happy with 21 ms fixed latency that never underruns but I just can't
setup PA to work like this.

Please, Raymond, don't go into the details, like, this particular card
isn't Intel HDA the period size in PA is slightly less (1008 vs 1024)
and so on. I see it clearly, that's not important here. What's important
is the fact that dmix does its job much better than PA in any
configuration (negligible latency + no underruns) and I want to know why
and how to make PA work like dmix in this regard.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to pulseaudio in Ubuntu.
https://bugs.launchpad.net/bugs/996906

Title:
  periodic audio skips with Intel HDA

Status in PulseAudio sound server:
  Confirmed
Status in pulseaudio package in Ubuntu:
  Confirmed

Bug description:
  When running PulseAudio, if I'm playing music via any source (Exaile, Totem,
  Flash in Firefox or Chromium, VLC, etc.) every few minutes the audio will skip
  once or twice.  top doesn't show any process eating CPU any more when it
  happens.  dmesg doesn't show anything.  Nothing else seems to be affected.  It
  doesn't seem to happen regularly.

  I just installed Ubuntu 12.04 from scratch (with pulseaudio 1:1.1-0ubuntu15),
  but the same thing happened in 10.04 on the same hardware.  Uninstalling the
  PulseAudio packages and going back to ALSA gives me no issues whatsoever, which
  is how I know the issue is with PulseAudio.  I'm using my onboard audio device:

  $ lspci | grep Audio
  00:14.2 Audio device: Advanced Micro Devices [AMD] nee ATI SBx00 Azalia (Intel
  HDA)

  Following mailing list instructions, pulseaudio -vvvv --log-time shows during a
  skip:

  ( 684.030|   5.000) I: [alsa-sink] alsa-sink.c: Underrun!
  ( 684.030|   0.000) I: [alsa-sink] alsa-sink.c: Increasing minimal latency to
  26.00 ms
  ( 684.030|   0.000) D: [alsa-sink] alsa-sink.c: Latency set to 26.00ms
  ( 684.030|   0.000) D: [alsa-sink] alsa-sink.c: hwbuf_unused=60952
  ( 684.030|   0.000) D: [alsa-sink] alsa-sink.c: setting avail_min=15944
  ( 684.030|   0.000) D: [alsa-sink] alsa-sink.c: Latency set to 26.00ms
  ( 684.030|   0.000) D: [alsa-sink] alsa-sink.c: hwbuf_unused=60952
  ( 684.030|   0.000) D: [alsa-sink] alsa-sink.c: setting avail_min=15944
  ( 684.031|   0.000) D: [alsa-sink] protocol-native.c: Underrun on 'ALSA
  Playback', 0 bytes in queue.
  ( 684.036|   0.004) D: [alsa-sink] protocol-native.c: Requesting rewind due to
  end of underrun.
  ( 684.036|   0.000) D: [alsa-sink] alsa-sink.c: Requested to rewind 10940
  bytes.
  ( 684.036|   0.000) D: [alsa-sink] alsa-sink.c: Limited to 3320 bytes.
  ( 684.036|   0.000) D: [alsa-sink] alsa-sink.c: before: 830
  ( 684.036|   0.000) D: [alsa-sink] alsa-sink.c: after: 830
  ( 684.036|   0.000) D: [alsa-sink] alsa-sink.c: Rewound 3320 bytes.
  ( 684.036|   0.000) D: [alsa-sink] sink.c: Processing rewind...
  ( 684.036|   0.000) D: [alsa-sink] sink.c: latency = 1337
  ( 684.036|   0.000) D: [alsa-sink] sink-input.c: Have to rewind 3320 bytes on
  render memblockq.
  ( 684.036|   0.000) D: [alsa-sink] source.c: Processing rewind...
  ( 696.234|  12.197) I: [alsa-sink] alsa-sink.c: Underrun!
  ( 696.234|   0.000) I: [alsa-sink] alsa-sink.c: Increasing wakeup watermark to
  15.99 ms
  ( 702.033|   5.799) I: [alsa-sink] alsa-sink.c: Underrun!
  ( 702.033|   0.000) I: [alsa-sink] alsa-sink.c: Increasing minimal latency to
  36.00 ms
  ( 702.033|   0.000) D: [alsa-sink] alsa-sink.c: Latency set to 36.00ms
  ( 702.033|   0.000) D: [alsa-sink] alsa-sink.c: hwbuf_unused=59188
  ( 702.033|   0.000) D: [alsa-sink] alsa-sink.c: setting avail_min=15680
  ( 702.033|   0.000) D: [alsa-sink] alsa-sink.c: Latency set to 36.00ms
  ( 702.034|   0.000) D: [alsa-sink] alsa-sink.c: hwbuf_unused=59188
  ( 702.034|   0.000) D: [alsa-sink] alsa-sink.c: setting avail_min=15680
  ( 702.034|   0.000) D: [alsa-sink] protocol-native.c: Underrun on 'ALSA
  Playback', 0 bytes in queue.

  ...and it goes on.

  The "Underrun!" messages alone happened a few times before, but it
  didn't skip.

  I'd like to use PulseAudio, but it's pretty annoying having audio skip all the
  time.

  ProblemType: Bug
  DistroRelease: Ubuntu 12.04
  Package: pulseaudio 1:1.1-0ubuntu15
  ProcVersionSignature: Ubuntu 3.2.0-24.37-generic 3.2.14
  Uname: Linux 3.2.0-24-generic x86_64
  NonfreeKernelModules: nvidia
  AlsaVersion: Advanced Linux Sound Architecture Driver Version 1.0.24.
  ApportVersion: 2.0.1-0ubuntu7
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  toxite     2136 F.... pulseaudio
   /dev/snd/pcmC0D0p:   toxite     2136 F...m pulseaudio
  Card0.Amixer.info:
   Card hw:0 'SB'/'HDA ATI SB at 0xfe024000 irq 16'
     Mixer name	: 'Realtek ALC889'
     Components	: 'HDA:10ec0889,1458a102,00100004'
     Controls      : 48
     Simple ctrls  : 22
  Date: Tue May  8 21:45:17 2012
  InstallationMedia: Ubuntu 12.04 LTS "Precise Pangolin" - Release amd64 (20120425)
  ProcEnviron:
   TERM=xterm
   PATH=(custom, user)
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  SourcePackage: pulseaudio
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 12/03/2009
  dmi.bios.vendor: Award Software International, Inc.
  dmi.bios.version: F2
  dmi.board.name: GA-790FXTA-UD5
  dmi.board.vendor: Gigabyte Technology Co., Ltd.
  dmi.board.version: x.x
  dmi.chassis.type: 3
  dmi.chassis.vendor: Gigabyte Technology Co., Ltd.
  dmi.modalias: dmi:bvnAwardSoftwareInternational,Inc.:bvrF2:bd12/03/2009:svnGigabyteTechnologyCo.,Ltd.:pnGA-790FXTA-UD5:pvr:rvnGigabyteTechnologyCo.,Ltd.:rnGA-790FXTA-UD5:rvrx.x:cvnGigabyteTechnologyCo.,Ltd.:ct3:cvr:
  dmi.product.name: GA-790FXTA-UD5
  dmi.sys.vendor: Gigabyte Technology Co., Ltd.

To manage notifications about this bug go to:
https://bugs.launchpad.net/pulseaudio/+bug/996906/+subscriptions