From: Jonathan Andrews <jon@jonshouse.co.uk>
To: alsa-devel@alsa-project.org
Subject: Trying to understand alsa
Date: Thu, 12 Jan 2012 23:36:52 +0000 [thread overview]
Message-ID: <1326411412.23310.45.camel@jonspc> (raw)
On Thu, 2012-01-12 at 21:50 +0000, Fons Adriaensen wrote:
> On Thu, Jan 12, 2012 at 09:44:11PM +0000, Jonathan Andrews wrote:
>
> > What I want to do is tell ALSA to hold a buffer of 3 of my packets (3 x
> > 1024Bytes, thats 512 x 16 bit samples) while I feed extra packets (1K
> > Byte, 512 samples per buffer) in for playback. The packets are arriving
> > at roughly the correct rate, I just need a buffer to iron out any
> > jitter in network transmit, do I have to do this myself ?
>
> Unless data is arriving on average at *exactly* the sample
> rate of the ALSA device your buffering will sooner or later
> underrun or overrun. ALSA itself can't handle this use case,
> it requires adaptive resampling and it's not easy.
I'm assuming alsa is holding 3k bytes for me and im writing 1k byte
chunks, so if the audio has not been refreshed by 3 chunks (70ms) then I
should throw it away as its no longer 'real time'
At the moment i would happy just to throw away packets that would cause
an overrun. I just wish i could convince alsa to buffer for me .... ho
hum ...
with pulse I just did this to set up 'some sort of buffer length' with
'some sort of pre buffering before play' interval. Its a bit hacky at
the moment but seems to work.
pa_buffer_attr paattr;
int buflen=sizeof(audio);
paattr.tlength = buflen * 4; // Playback only, target length of the buffer (was *2)
paattr.minreq = buflen;
paattr.fragsize = buflen;
paattr.prebuf = buflen * 6; // How much data pulse holds before it starts playing (was *4)
paattr.maxlength = buflen * 8; // playback pipeline N samples deep (was *4)
Im looking for alsa equivalent.
Thanks,
Jon
next reply other threads:[~2012-01-12 23:33 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-12 23:36 Jonathan Andrews [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-01-12 23:45 Trying to understand alsa Jonathan Andrews
2012-01-13 1:25 ` Jonathan Andrews
2012-01-12 23:36 Jonathan Andrews
2012-01-12 21:44 Jonathan Andrews
2012-01-12 21:50 ` Fons Adriaensen
2012-01-12 22:12 ` Andrew Eikum
[not found] ` <1326410207.23310.17.camel@jonspc>
2012-01-13 15:10 ` Andrew Eikum
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=1326411412.23310.45.camel@jonspc \
--to=jon@jonshouse.co.uk \
--cc=alsa-devel@alsa-project.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).