[alsa-devel] Vanilla Blocked I/O probs
Gordon Miller
gordonamiller at btinternet.com
Tue Apr 3 16:19:01 CEST 2007
Thanks Takashi
I went for this :
/*******************************************************/
void
record_block (void *buffer)
{
int rc, needed = MAX_LEN;
void *buf_ptr = buffer;
do
{
rc = snd_pcm_readi (handle, buf_ptr, needed);
needed -= rc;
buf_ptr += rc * (stereo_channel ? BPSSTEREO : BPSMONO);
}
while (needed);
} /* end record_block */
/****************************************************/
I have a global variable "stereo_channel" as you see that is 0 (mono), 1
(stereo left only) or 2 (stereo right only). If it is non-zero I
multiply by BPSSTEREO (4) else BPSMONO (2). So "needed" counts down to
0, and buf_ptr moves along.
It's not pretty, but it works !
Gordon
More information about the Alsa-devel
mailing list