3 Apr
2007
3 Apr
'07
4:19 p.m.
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