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
next prev parent 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.