Jaroslav Kysela wrote: > > I think that I have one present problem. It was not possible to write, > something like the dmix plugin does (in the server/client model): Transfer > data to different areas in the ring buffer. Imagine that client1 wants to > write data at the end of the ring buffer (assume that server don't change > the r/w pointer). Then client2 comes with some data to be placed at the > start of the buffer later (server rewinds the stream position). Then > hardware processed a period and client1 wants to continue (server forwards > the stream position at the end of the ring buffer). > > I can imagine more examples where "later" samples might be wanted to be > processed before "quick" ones.
Your examples appears a little confused at my eyes, but if I've understood correctly don't you think this might be solved by snd_pcm_rewind done by server? At least this is how it works in pcm_share. > > > I'm also going to propose next extension: Actually, the appl_ptr managing > > > routines - snd_pcm_reset(), snd_pcm_rewind(), snd_pcm_forward() always > > > uses an ioctl for it's operation. I think that it wouldn't be a bad idea > > > to implement these function in the lightweight variant, too. I mean that > > > they will operate only with the actual hw_ptr without calling the kernel > > > code. We have already functions to synchronize the hw_ptr with the > > > hardware (snd_pcm_delay(), snd_pcm_hwsync()). Because it's late to change > > > this behaviour in alsa-lib, I propose to create a function > > > 'snd_pcm_fast_rw_change()' (better name?) which tells the alsa-lib that no > > > accurate operation is required. Especially lowlatency applications will > > > benefit that we removed more 'user<->kernel' switches. > > > > Note that the assumption of monotonic direction of appl_ptr is spread > > everywhere so I doubt that this is feasible for snd_pcm_rewind. > > I don't understand here. I've looked to the ioctl implementation and there > are no problems to change appl_ptr in the user space only as well. Have you thought what happens if appl_ptr is changed backward during interrupt handler? Lock free ring buffer absolute precondition is monotonic direction. -- Abramo Bagnara mailto:[EMAIL PROTECTED] Opera Unica Phone: +39.546.656023 Via Emilia Interna, 140 48014 Castel Bolognese (RA) - Italy ------------------------------------------------------- This SF.net email is sponsored by: SlickEdit Inc. Develop an edge. The most comprehensive and flexible code editor you can use. Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial. www.slickedit.com/sourceforge _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel