From: Wolfgang Hesseler <wolf1122@gmx.net>
To: Paul Davis <pbd@op.net>
Cc: alsa-devel@lists.sourceforge.net
Subject: Re: Callback after a specified number of samples
Date: Mon, 30 Sep 2002 16:17:27 +0200 [thread overview]
Message-ID: <3D979F1F.5EDC@gmx.net> (raw)
In-Reply-To: 20020929195903.6404gmx1@mx024-rz3.gmx.net
Paul Davis <pbd@op.net> wrote
> >Hello,
> >is it possible to get a callback after a specified number
> >of samples (e.g. 4000) are played?
> >I'd like to refill the buffer then and need the exact
> >number to synchronize audio and video.
>
> you can get this to a limited extent by setting the software parameter
> "avail_min" with snd_pcm_sw_params_set_avail_min(). it controls the
> number of frames of data/space that has to be available for a task
> sleeping on a read/write of the PCM stream to be woken up.
>
> however, it won't do what you want, because the resolution is limited
> to the interrupt frequency of the audio card, and for just about every
> interface out there, this is almost always a power of 2 value.
Is this an Alsa design or a hardware limitation?
> thus,
> you could set avail_min to 4000, but you be will woken only when the
> actual value is 4096, not 4000. why? because the ALSA driver has no
> way of knowing when the value is 4000 - it can only know when the
> interrupt comes in.
>
> the only way around this is to use an alternate, higher-frequency
> interrupt source, such as the RTC (real time clock), but this
> is invariably power-of-2 also, and worse, doesn't run in sync
> with audio or video. if you could find a suitable source, you just
> check the current frames/space available every interrupt, and move on
> from there. i don't know of any suitable interrupt sources.
>
> to put it another way, your approach is wrong :) syncing audio and
> video needs to be done differently. audio has a much higher frame
> rate, so use that as the basic time source, and simply redraw the
> screen at suitable intervals (preferably the vertical refresh
> interval), using the current audio "time" as a guide to what to draw.
You think of polling snd_pcm_avail_update and drawing the picture when
the calculated number of samples have been played?
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
next parent reply other threads:[~2002-09-30 14:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20020929195903.6404gmx1@mx024-rz3.gmx.net>
2002-09-30 14:17 ` Wolfgang Hesseler [this message]
2002-09-30 16:08 ` Callback after a specified number of samples tomasz motylewski
2002-09-30 18:27 ` Jaroslav Kysela
2002-09-30 20:48 ` tomasz motylewski
2002-10-09 5:58 ` Jaroslav Kysela
[not found] <20020930145227.16640gmx1@mx003-rz3.gmx.net>
2002-09-30 18:46 ` Wolfgang Hesseler
2002-09-29 19:14 Wolfgang Hesseler
2002-09-29 20:07 ` 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=3D979F1F.5EDC@gmx.net \
--to=wolf1122@gmx.net \
--cc=alsa-devel@lists.sourceforge.net \
--cc=pbd@op.net \
/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.