All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Adam Tlałka" <atlka@pg.gda.pl>
To: Paul Davis <paul@linuxaudiosystems.com>,
	alsa-devel@lists.sourceforge.net
Subject: Re: Re: [Alsa-user] AD1985 full-duplex(?)
Date: Mon, 27 Sep 2004 08:38:39 +0200	[thread overview]
Message-ID: <4157B56F.9000905@pg.gda.pl> (raw)
In-Reply-To: <200409270300.i8R30Ro1016070@localhost.localdomain>

> no, thats not the type of wrapping that matters. suppose the h/w
> buffer is 4096 frames in size. suppose that a rogue PCI driver or
> device prevents receipt of an interrupt for an entire buffer's worth
> of time, maybe even longer. looking at the value of the h/w ptr by
> itself doesn't tell you anything about whether there is an xrun. you
> have to constantly monitor the *expected* time of the next interrupt
> along with the *expected* position of the h/w ptr in order to
> establish if there was an xrun or not (at least for the class of xruns
> caused by this kind of delay).
NO NO NO - look at the OSS man page. GETOPTR call returns also bytes 
value which represents a number of bytes processed since opening the 
device. So I can easily detect xruns just by comparing two returned
bytes values - a previous and a current one. There is also a blocks 
value which represents number of fragments transitions (hw periods 
transfers) since the previous call to this ioctl - reset to 0 after each 
call. I am not monitoring hw-ptr difference but count of data processed 
be a device. I need hw-ptr only for correct mixing of data but not for 
xrun detection. Anyway if some hw device blocks hw handler of a sound 
card you will not detect xruns without counting interuppts and their 
time in the device driver. This situaction means badly designed system 
or hardware.

> user-space is not in a position to determine this, because the
> interrupt handler is the only place where the value of the h/w ptr can
> be reliably determined (even though on many cards, there are other
> ways and times as well).
I just need to obtain hw_ptr from a device driver in mmapped mode.
If there is a ioctl getting it that is good thing IMHO. In ALSA I must 
maintain my appl_ptr and call snd_pcm_delay or snd_pcm_avail_update and 
then calculate hw_ptr by myself. Of course I must be aware of boundary 
wrap to obtain the correct result.

> ALSA and the entire kernel development team have spent the last 5
> years moving things *out* of kernel space. forget ALSA - you will have
> a very, very hard time explaining to the kernel crew why this is
> actually a good idea.
Hmm, actually from my observation this approach (in lib mixing and 
effects) makes more problems and disadventages then doing this in a 
device manner and as a kernel RT thread. I tried to modify AOSS to use 
callbacks (works almost good but scheduling/swapping effects still 
there) but I found an app which disables SIGIO for example.
So now I in a dead end. I think that ALSA lib approach has serious 
compability limitations which could not be solved.

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. 24. Go here: http://sf.net/ppc_contest.php

  reply	other threads:[~2004-09-27  6:38 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
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 [this message]
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=4157B56F.9000905@pg.gda.pl \
    --to=atlka@pg.gda.pl \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=paul@linuxaudiosystems.com \
    /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.