[alsa-devel] What does snd_pcm_delay() actually return?

Takashi Iwai tiwai at suse.de
Fri Jun 13 18:48:06 CEST 2008


At Fri, 13 Jun 2008 18:38:53 +0200,
I wrote:
> 
> At Fri, 13 Jun 2008 18:20:43 +0200 (CEST),
> Jaroslav Kysela wrote:
> > 
> > On Fri, 13 Jun 2008, Takashi Iwai wrote:
> > 
> > > The point is that the wake-up timing isn't defined as constant but via
> > > a timing queue (or a request queue).  This is more suitable for
> > > pull-style apps like JACK.  Which irq source is used doesn't matter.
> > 
> > But applications can use timers or any other wakeup source directly (for 
> > example from video card interrupt) - thus I'm not sure if it's good to 
> > complicate our API, again. If we remove period tied I/O operations and 
> > assumptions in alsa-lib (thus we will do only byte-stream transfers), then 
> > everything will be fine and possible.
> > 
> > Other option is to create such timing queues separately as complete new 
> > API without integration to PCM API. Complex apps call poll() anyway. 
> > Support this complex timing for read()/write() for simple apps does not 
> > make much sense, I think.
> 
> Well, you miss the point.  Let me clarify some issues:
> 
>  - The timing queue is optional.  As default, we assume the period
>    model as is now.
> 
>  - The period model is internally driven as the automatic fill of
>    constant periods to the timing queue.
> 
>  - The stream is handled as a byte-stream.
> 
>  - If apps wants another wakeup source, it's fine.  This has nothing
>    to do with wakeup of the sound driver, no?  It's up to apps how to
>    handle streams.  We just provide the timing from our system.
> 
>  - What the timing queue affects is only the wake-up timing of
>    poll/read/write.  So, basically, no other API change is required
>    (although a simpler API with combination of queue+read/write would
>    be more helpful).
> 
>  - In my original implementation, periods become the sync points
>    between the hardware position and the system timer.  But, this can
>    be optional.

And one thing forgotten.

- If this were so great, I'd have already pushed to the upstream.
  But I didn't.  So you can guess that it's no perfect solution.


Takashi


More information about the Alsa-devel mailing list