All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adam Tla/lka <atlka@pg.gda.pl>
To: Jaroslav Kysela <perex@suse.cz>
Cc: alsa-devel@alsa-project.org
Subject: Re: Re: [Alsa-user] AD1985 full-duplex(?)
Date: Fri, 10 Sep 2004 09:16:14 +0200	[thread overview]
Message-ID: <20040910071614.GH4584@sunrise.pg.gda.pl> (raw)
In-Reply-To: <Pine.LNX.4.58.0409091657460.4150@server.perex-int.cz>

On Thu, Sep 09, 2004 at 05:14:29PM +0200, Jaroslav Kysela wrote:
> You've not showed me a solution. Tell me about API which meets this:
> 
> 1) additional processing
> 2) minimal overhead for direct hardware accesses
> 3) consistent API for everything
I am telling you only about mmapped mode in which I need constantly
running ring buffer from app point of view. In other modes ALSA API
is good enough and I have no claims. Of course functions like
snd_pcm_delay or snd_pcm_avail_update have sense only in normal
read/write modes. In mmapped mode I need only to now buffer_size,
buffer_boundary and current hw_ptr. All other I can calculate by myself
and update data in place where I want. 

> 
> Actually, ALSA PCM API meets all these points.
Yes, but mmaped mode is different then it seems to be. If I just don't
use it all is perfect. I am waiting for example of good working user app
using this mode.

> 
> You chose only one example (the case when the whole ring buffer should be
> accessible for immediate events), and you may implement it using current 
> ALSA API as:
> 
> a) I don't care, I want to use only raw hw:X,Y access, thus setup
>    stream transfer without xrun checking, use mmap_begin and do ugly 
>    things with the ring buffer contents ===> your code will be totaly
>    unsuported by us, because you don't follow official API
> b) I care about a support, but only hw:X,Y devices does matter for me --> 
>    use mmap_begin/mmap_commit/avail_update/forward/rewind functions.
>    Very small overhead with appl_ptr management will be added on
>    the alsa-lib side in this case. The overhead is totaly negligible.
> c) I care and want to be compatible with all plugins: In this case, use 
>    double buffer scheme - you can have a ring buffer for immediate events 
>    and use FIFO to push samples to alsa-lib using all standard functions 
>    mentioned in b) - without needing to use forward and backward calls 
>    which are not implemented in some cases or may add large amount of 
>    unwanted processing. Of course, you will double probably the latency.
> 
> Your suggested API is like a hell. You don't know, what was changed in the
> ring buffer, thus additional processing is imposible. Please, think about 
> it.
Only the c) is valid for me but latency is important in this mode
and I must modify the ALSA ring buffer (plugin buffer).
I am not talking about ALSA lib API but only OSS emulation
which should be adequate to original OSS behaviour.
Also ALSA API should allow the same functionality then OSS
in mmapped mode (other modes are OK) or better.
Unified API for all modes means that some functionality of mmaped mode
is lost because we must push the appl_pointer forward so snd_pcm_delay
and snd_pcm_avail_update functions could be used in this mode too.
So total unification is not quite good IMHO.

Regards
-- 
Adam Tla/lka      mailto:atlka@pg.gda.pl    ^v^ ^v^ ^v^
System  & Network Administration Group           ~~~~~~
Computer Center,  Gdansk University of Technology, Poland
PGP public key:   finger atlka@sunrise.pg.gda.pl


-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php

  reply	other threads:[~2004-09-10  7:17 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-31  8:52 Re: [Alsa-user] AD1985 full-duplex(?) Peter Zubaj
2004-08-31  9:39 ` Jaroslav Kysela
2004-09-06 20:45   ` Adam Tla/lka
2004-09-07  9:05     ` Jaroslav Kysela
2004-09-07 10:34       ` Adam Tla/lka
2004-09-07 13:23         ` Paul Davis
2004-09-07 13:40         ` Jaroslav Kysela
2004-09-08 17:15           ` Adam Tla/lka
     [not found]             ` <20040909122253.GE4584@sunrise.pg.gda.pl>
     [not found]               ` <Pine.LNX.4.58.0409091728420.4150@server.perex-int.cz>
2004-09-10  6:46                 ` Adam Tla/lka
2004-09-09  5:52       ` Adam Tla/lka
2004-09-09 12:59         ` Paul Davis
2004-09-09 13:28           ` Adam Tla/lka
2004-09-09 15:14         ` Jaroslav Kysela
2004-09-10  7:16           ` Adam Tla/lka [this message]
2004-09-10 11:44             ` Paul Davis
2004-09-10 19:04               ` Adam Tla/lka
2004-09-13 13:05                 ` Paul Davis
2004-09-13 17:24                   ` Adam Tla/lka
2004-09-26 22:21                   ` Adam Tlałka
2004-09-27  3:00                     ` Paul Davis
2004-09-27  6:38                       ` Adam Tlałka
2004-09-27 12:43                         ` Jaroslav Kysela
2004-09-28  5:11                           ` Adam Tlałka
2004-09-28 14:47                             ` Paul Davis
2004-09-29  5:51                               ` Adam Tlałka
2004-09-27 20:14                         ` Paul Davis
2004-09-28  6:10                           ` Adam Tlałka
     [not found] <200409281113.i8SBDo5U021462@localhost.localdomain>
2004-09-28 13:22 ` Adam Tlałka
2004-09-28 14:48   ` Jaroslav Kysela
2004-09-28 14:57   ` Paul Davis
2004-09-28 15:21     ` Takashi Iwai
2004-09-29  6:15     ` Adam Tlałka
     [not found] <Pine.HPX.4.33n.0408181538550.24798-100000@studcom.urz.uni-halle.de>
     [not found] ` <1092842830.13603.3.camel@localhost.localdomain>
     [not found]   ` <20040818181350.2b38e875@mango.fruits.de>
2004-08-18 17:37     ` Jaroslav Kysela
2004-08-18 18:15       ` Florian Schmidt
2004-08-19  8:58         ` Jaroslav Kysela
2004-08-19  9:46           ` Takashi Iwai
2004-08-19 10:28             ` Jaroslav Kysela
2004-08-23 11:36               ` Adam Tlałka
2004-08-23 11:54                 ` Jaroslav Kysela
2004-08-23 12:34                   ` Adam Tlałka
2004-08-23 14:39                     ` Jaroslav Kysela
2004-08-24  6:01                       ` Adam Tla/lka
2004-08-23 15:30                 ` Takashi Iwai
2004-08-28 19:10                   ` Adam Tlałka
2004-08-29  9:54                     ` Jaroslav Kysela
2004-08-29 18:35                       ` Adam Tlałka
2004-08-31  8:09                         ` Jaroslav Kysela
2004-08-19  9:48           ` Florian Schmidt
2004-08-20 10:58             ` Jaroslav Kysela

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=20040910071614.GH4584@sunrise.pg.gda.pl \
    --to=atlka@pg.gda.pl \
    --cc=alsa-devel@alsa-project.org \
    --cc=perex@suse.cz \
    /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.