as pulseaudio use snd_pcm_rewind() which require the sound card report accurate hwptr position than those sound card which report hwptr position at period bounary when interrupt occur
the difference between hda-intel and your ca0106 is the granularity of the pointer callback https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/include/linux/dmaengine.h /** * enum dma_residue_granularity - Granularity of the reported transfer residue * @DMA_RESIDUE_GRANULARITY_DESCRIPTOR: Residue reporting is not support. The * DMA channel is only able to tell whether a descriptor has been completed or * not, which means residue reporting is not supported by this channel. The * residue field of the dma_tx_state field will always be 0. * @DMA_RESIDUE_GRANULARITY_SEGMENT: Residue is updated after each successfully * completed segment of the transfer (For cyclic transfers this is after each * period). This is typically implemented by having the hardware generate an * interrupt after each transferred segment and then the drivers updates the * outstanding residue by the size of the segment. Another possibility is if * the hardware supports scatter-gather and the segment descriptor has a field * which gets set after the segment has been completed. The driver then counts * the number of segments without the flag set to compute the residue. * @DMA_RESIDUE_GRANULARITY_BURST: Residue is updated after each transferred * burst. This is typically only supported if the hardware has a progress * register of some sort (E.g. a register with the current read/write address * or a register with the amount of bursts/beats/bytes that have been * transferred or still need to be transferred). */ hda-intel can report DMA_RESIDUE_GRANULARITY_BURST seem both read hwptr from hardware register can your ca0106 report DMA_RESIDUE_GRANULARITY_SEGMENT or DMA_RESIDUE_GRANULARITY_BURST ? https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/pci/ca0106/ca0106_main.c static snd_pcm_uframes_t snd_ca0106_pcm_pointer_playback(struct snd_pcm_substream *substream) { struct snd_ca0106 *emu = snd_pcm_substream_chip(substream); struct snd_pcm_runtime *runtime = substream->runtime; struct snd_ca0106_pcm *epcm = runtime->private_data; unsigned int ptr, prev_ptr; int channel = epcm->channel_id; int timeout = 10; if (!epcm->running) return 0; prev_ptr = -1; do { ptr = snd_ca0106_ptr_read(emu, PLAYBACK_LIST_PTR, channel); ptr = (ptr >> 3) * runtime->period_size; ptr += bytes_to_frames(runtime, snd_ca0106_ptr_read(emu, PLAYBACK_POINTER, channel)); if (ptr >= runtime->buffer_size) ptr -= runtime->buffer_size; if (prev_ptr == ptr) return ptr; prev_ptr = ptr; } while (--timeout); dev_warn(emu->card->dev, "ca0106: unstable DMA pointer!\n"); return 0; } https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/pci/hda/hda_controller.c static snd_pcm_uframes_t azx_pcm_pointer(struct snd_pcm_substream *substream) { struct azx_pcm *apcm = snd_pcm_substream_chip(substream); struct azx *chip = apcm->chip; struct azx_dev *azx_dev = get_azx_dev(substream); return bytes_to_frames(substream->runtime, azx_get_position(chip, azx_dev)); } -- 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 -- Mailing list: https://launchpad.net/~desktop-packages Post to : desktop-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~desktop-packages More help : https://help.launchpad.net/ListHelp