Re: period_size below 8000 on Intel Edison

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Clemens,

the device is called "dummy-audio", check this output of aplay:

 >>>>>>>>>>>>>>>>>>>>>>
root@edison:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Loopback [Loopback], device 0: Loopback PCM [Loopback PCM]
   Subdevices: 8/8
   Subdevice #0: subdevice #0
   Subdevice #1: subdevice #1
   Subdevice #2: subdevice #2
   Subdevice #3: subdevice #3
   Subdevice #4: subdevice #4
   Subdevice #5: subdevice #5
   Subdevice #6: subdevice #6
   Subdevice #7: subdevice #7
card 0: Loopback [Loopback], device 1: Loopback PCM [Loopback PCM]
   Subdevices: 8/8
   Subdevice #0: subdevice #0
   Subdevice #1: subdevice #1
   Subdevice #2: subdevice #2
   Subdevice #3: subdevice #3
   Subdevice #4: subdevice #4
   Subdevice #5: subdevice #5
   Subdevice #6: subdevice #6
   Subdevice #7: subdevice #7
card 1: dummyaudio [dummy-audio], device 0: 1 []
   Subdevices: 1/1
   Subdevice #0: subdevice #0
card 1: dummyaudio [dummy-audio], device 1: ((null)) []
   Subdevices: 1/1
   Subdevice #0: subdevice #0
card 1: dummyaudio [dummy-audio], device 2: ((null)) []
   Subdevices: 1/1
   Subdevice #0: subdevice #0
root@edison:~#
<<<<<<<<<<<<<<<<<<<

As far as I know, this is just some audio driver, that Intel made for 
their Edison platform. I get the sound-data via I2S into an external 
soundcard, that reads the I2S data and produces some audible noise from 
the data. Anyway, if I use mpg123 (like this: "mpg123 -a hw:1,0 -v 
test.mp3" ), sound works fine, so the interface works fine. It just 
won't accept my settings, but here's more information on that, while I 
try to answer your questions the best way I can.

period_time has the value "2000" before I use the function 
snd_pcm_hw_params_set_period_time_near(*pcm_handle, hwparams, 
&period_time, &dir); and has the same value of 2000 after I call it. And 
yes, I do call snd_pcm_hw_params() in my program after having set the 
period_time.

For further understanding, here are the functions I call in my C-program:

 >>>>>>>>>>>>>>>>>>>>>>
err = snd_pcm_hw_params_set_period_time_near(*pcm_handle, hwparams, 
&period_time, &dir);
     if( err != 0 ) {
         printf("%s:%u error setting period time (%s), error-code: 
%d\n", __FILE__, __LINE__, strerror(err), err);
     }
     err = snd_pcm_hw_params_set_buffer_time_near( *pcm_handle, 
hwparams, &buffer_time, &dir );
     if( err != 0 ) {
         printf("%s:%u error setting buffer time (%s), error-code: 
%d\n", __FILE__, __LINE__, strerror(err), err);
     }
     err = snd_pcm_hw_params( *pcm_handle, hwparams );
     if( err != 0 ) {
         printf("%s:%u error installing hwparams (%s), error-code: 
%d\n", __FILE__, __LINE__, strerror(err), err);
         exit(EXIT_FAILURE);
     }
<<<<<<<<<<<<<<<<<<<

In addition, if I try to use the function 
snd_pcm_hw_params_set_period_size() as an alternative to 
snd_pcm_hw_params_set_period_time_near(), I get the error 
"main_alsa.c:231 error setting period size (Unknown error -22), 
error-code: -22". Here is how I call it:

 >>>>>>>>>>>>>>>>>>>>>>
val = 96;
dir = 0;
err = snd_pcm_hw_params_set_period_size(*pcm_handle, hwparams, val, dir);
if( err != 0 ) {
     printf("%s:%u error setting period size (%s), error-code: %d\n", 
__FILE__, __LINE__, strerror(err), err);
}
<<<<<<<<<<<<<<<<<<<

Any additional help would be really appreciated.

All the best and thanks in advance,
Dennis

Am 06.01.2016 um 20:58 schrieb Clemens Ladisch:
> Dennis Borgmann wrote:
>> A short while ago, I came across a new platform - the Intel Edison. I
>> would like to port my software to that hardware, which essentially works
>> out fine, as it also is a x86 platform. The only problem I see is ,that
>> I have not yet been able to configure ALSA to shrink its period size
>> down to 2ms on Intel Edison. I get the following output from
>> snd_pcm_dump(*pcm_handle,NULL);
>>
>> Hardware PCM card 1 'dummy-audio' device 0 subdevice 0
> Is that device really called "dummy"?
>
>> As you can see, the period_size is 384 and the period_time is 8000. Its
>> values should be 96 (period_size) and 2000 (period_time). I am setting
>> these values in my C-program with these commands:
>>
>> err = snd_pcm_hw_params_set_period_time_near(*pcm_handle, hwparams,
>> &period_time, &dir);
>>
>> period_time has the value 2000.
> What value does it have after this function returns?
>
> Did you call snd_pcm_hw_params?
>
>
> Regards,
> Clemens


------------------------------------------------------------------------------
_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user



[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux