[alsa-devel] capturing data from the microphone

Riccardo Magliocchetti riccardo.magliocchetti at gmail.com
Mon Jan 11 14:59:03 CET 2010


Riccardo Magliocchetti ha scritto:
> Raymond Yau ha scritto:
>> 2010/1/6 Riccardo Magliocchetti <riccardo.magliocchetti at gmail.com>
>>
>>> Hi Pierre,
>>>
>>> pl bossart ha scritto:
>>>> You haven't specified the buffer/period size in the hw params. See
>>>> alsa-lib/test/pcm.c
>>>> - Pierre
>>> They fail when opening default device so I had to remove them, work fine
>>> when opening
>>> plughw:0,0 though.
>>>
>>>> On Mon, Jan 4, 2010 at 11:39 AM, Riccardo Magliocchetti
>>>> <riccardo.magliocchetti at gmail.com> wrote:
>>>>> [the same message is waiting in moderator queue, sorry if you 
>>>>> receive it
>>> two times]
>>>>> Hello,
>>>>>
>>>>> i'm trying to capture audio data from the microphone, but i'm not able
>>> to
>>>>> read any frames.
>>>>> The frames are always 0 and delay is fixed to 2730. I've tried calling
>>>>> snd_pcm_avail_delay,  snd_pcm_avail_update but does not make a
>>> difference.
>>>>> The soundcard is driven by  snd_hda_intel. The code is more or less 
>>>>> the
>>>>> same as Paul Davis' tutorial on using the alsa api.
> 
>>
>> Even 4096 bytes is x86 DMA page size , seem to be a good choice for those
>> PCI sound cards, however you cannot assume all sound cards/plugins 
>> support
>> this buffer size
>>
>> If you did not set period_size, buffer_size or periods (period_time,
>> buffer_time or periods)  , you should call
>> snd_pcm_hw_params_get_buffer_size() and 
>> snd_pcm_hw_params_get_period_size()
>> after snd_pcm_hw_params()
> 
> Thank you both Pierre and Raymond, using the get functions after 
> snd_pcm_hw_params() is working, now i have some concurrency issues to 
> resolve before i can say everything is working properly.

The init works fine but snd_pcm_avail() always returns 0, full code is here 
http://pastebin.com/f687bf37a

thanks,
riccardo


More information about the Alsa-devel mailing list