[alsa-devel] Problems with snd_pcm_writei() function
Douglas Lopes Pereira
douglaslopespereira at gmail.com
Tue Oct 27 18:07:00 CET 2009
Hi Clemens,
thanks for your replay. Sorry about the delay, I was taking care of
high priority tasks.
Back to my problem, I'm convinced that I'm passing the correct number
of frames. Do I have to change the buffer if discarding non complete
buffers (<> 160bytes)?
I'm not sure how timing is managed since my function is called by a
third part application but it looks like my code is invoked in a "for"
loop. Next is part of the code which calls my function:
for (cur = f, next = AST_LIST_NEXT(cur, frame_list);
cur;
cur = next, next = cur ? AST_LIST_NEXT(cur, frame_list) : NULL) {
if (!skip) {
if ((res = chan->tech->write(chan, cur)) < 0) {
chan->_softhangup |= AST_SOFTHANGUP_DEV;
skip = 1;
} else if (next) {
/* don't do this for the last frame in the list,
as the code outside the loop will do it once
*/
chan->fout = FRAMECOUNT_INC(chan->fout);
}
}
ast_frfree(cur);
}
I sent a copy of my code to pastbin. It is available at:
http://www.pastebin.org/48749
I would be glad if you take a look at it.
Thanks for your time.
Regards,
Douglas
On Fri, Oct 23, 2009 at 5:39 AM, Clemens Ladisch <clemens at ladisch.de> wrote:
> Douglas Lopes Pereira wrote:
>> I'm splitting my audio data into 160 bytes buffers but when buffer
>> with different size is passed to that function I hear a noise (like
>> 'Krrr') on my audio device.
>
> Do you actually pass the correct number of frames?
>
> How do you manage the timing of the snd_pcm_writei() calls?
>
>
> Best regards,
> Clemens
>
More information about the Alsa-devel
mailing list