desktop-packages team mailing list archive
-
desktop-packages team
-
Mailing list archive
-
Message #114147
[Bug 996906]
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