All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eliot Blennerhassett <linux@audioscience.com>
To: ALSA devel <alsa-devel@alsa-project.org>
Subject: Re: What does snd_pcm_delay() actually return?
Date: Tue, 17 Jun 2008 12:53:59 +1200	[thread overview]
Message-ID: <48570B27.2090403@audioscience.com> (raw)
In-Reply-To: <s5hprqlqr29.wl%tiwai@suse.de>

Takashi Iwai wrote:
  > First off, it's not only about USB but for hardwares that require the
> own h/w queue.  There bunch of such hardwares, and we provide really
> poor support for them.  The above sounds like bandaiding on a bandaid 
> over a bandaid.

Hmm.  This thread will take some digesting...meanwhile here are my (not 
particularly coherent) thoughts from the POV of driver developer for 
cards that have large on-card FIFOs. (asihpi)

The period-based refresh makes it hard to use the fifo effectively.  If 
the card fifo is allowed to 'suck' all the data from the ringbuffer then 
it makes it look like an underrun. Also it makes time appear to run fast 
until the fifo is filled up.

The 'fast time' creates problems for ALSA on playback start, because 
alsa assumes that it will take a whole period for a period of data to be 
consumed, while the driver is capable of consuming multiple periods 
almost instantly.  In my driver I have to throttle the rate that data is 
transferred to the card fifos.

Just as in the network case, where it is desirable to get data across 
the network as early as possible to allow secure playback, we want to 
fill the oncard fifo as early and as much as possible.

Only if both ringbuffer and fifo are empty (playback) or full (record) 
is a true xrun occuring.

Our underlying API returns the following info
* Size of host ringbuffer
* Amount of unread data in host ringbuffer
* Amount of unread data in card fifo
* Frames output at the DAC/input at ADC since stream start
Plus info about granularity and latency of the above info.

I suspect that a byte-stream approach would be a better match to our cards.

regards

Eliot Blennerhassett

  reply	other threads:[~2008-06-17  0:54 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-09 19:02 What does snd_pcm_delay() actually return? Lennart Poettering
2008-06-10 14:01 ` RafałMużyło
2008-06-10 14:36 ` James Courtier-Dutton
2008-06-11 16:56 ` Takashi Iwai
2008-06-11 20:24   ` Colin Guthrie
2008-06-11 21:40     ` Tomas Carnecky
2008-06-12 10:25     ` Takashi Iwai
2008-06-12 11:51       ` Colin Guthrie
2008-06-12 12:08         ` Takashi Iwai
2008-06-12 21:00           ` Lennart Poettering
2008-06-13  6:22             ` Takashi Iwai
2008-06-12 20:52   ` Lennart Poettering
2008-06-13  6:13     ` Takashi Iwai
2008-06-13 13:51       ` Lennart Poettering
2008-06-13 13:55         ` Jaroslav Kysela
2008-06-13 14:29           ` Lennart Poettering
2008-06-13  6:59     ` Takashi Iwai
2008-06-13  8:14       ` Jaroslav Kysela
2008-06-13 10:14         ` James Courtier-Dutton
2008-06-13 12:44           ` Colin Guthrie
2008-06-13 13:06             ` Jaroslav Kysela
2008-06-13 14:48               ` Lennart Poettering
2008-06-13 15:02                 ` Jaroslav Kysela
2008-06-13 15:42                   ` Takashi Iwai
2008-06-17  0:53                     ` Eliot Blennerhassett [this message]
2008-06-13 14:38           ` Lennart Poettering
2008-06-13 15:27         ` Takashi Iwai
2008-06-13 15:44           ` Jaroslav Kysela
2008-06-13 15:59             ` Takashi Iwai
2008-06-13 16:20               ` Jaroslav Kysela
2008-06-13 16:38                 ` Takashi Iwai
2008-06-13 16:48                   ` Takashi Iwai
2008-06-13 19:55                 ` James Courtier-Dutton
2008-06-16 12:07                   ` Jaroslav Kysela
2008-06-19 17:59                     ` Lennart Poettering
2008-06-13 19:59                 ` James Courtier-Dutton
2008-06-13 14:25       ` Lennart Poettering
2008-06-13 15:55         ` Takashi Iwai
2008-06-13 16:11           ` Jaroslav Kysela
2008-06-13 16:26             ` Takashi Iwai
2008-06-13 16:47               ` Jaroslav Kysela
2008-06-13 16:52                 ` Takashi Iwai
2008-06-13 17:37                   ` Jaroslav Kysela
2008-06-13 18:23                     ` Takashi Iwai
2008-06-13 18:48                     ` Lennart Poettering
2008-06-13 18:43                 ` Lennart Poettering
2008-06-13 18:29               ` Lennart Poettering
2008-06-13 18:46                 ` Takashi Iwai
2008-06-13 19:01                   ` Lennart Poettering
2008-06-13 19:05                     ` Takashi Iwai
2008-06-13 18:22           ` Lennart Poettering
2008-06-13 18:32             ` Takashi Iwai
2008-06-14  9:51             ` James Courtier-Dutton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48570B27.2090403@audioscience.com \
    --to=linux@audioscience.com \
    --cc=alsa-devel@alsa-project.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.