period_size below 8000 on Intel Edison

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

 



Hi alsa-users!

I have a software written in C, that's been running for quite some time 
(about 5 years) on a x86-machine(actually, it's a PC Engines ALIX-Board 
with a Debian Linux running on it). It is using ALSA for reading from a 
soundcard,  transmitting it via network to another node running roughly 
the same software that successively plays it back.

The software therefore has two buffers - one on transmitter side and one 
on receiver side. It creates audio packages of 2ms length each, that 
then get transmitted via network.

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
Its setup is:
   stream       : PLAYBACK
   access       : MMAP_INTERLEAVED
   format       : S16_LE
   subformat    : STD
   channels     : 2
   rate         : 48000
   exact rate   : 48000 (48000/1)
   msbits       : 16
   buffer_size  : 768
   period_size  : 384
   period_time  : 8000
   tstamp_mode  : NONE
   period_step  : 1
   avail_min    : 384
   period_event : 0
   start_threshold  : 384
   stop_threshold   : 768
   silence_threshold: 1
   silence_size : 1
   boundary     : 1610612736
   appl_ptr     : 0
   hw_ptr       : 0

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. After having observed this discrepancy, 
I tried to solve it via another function:

err = snd_pcm_hw_params_set_period_size( *pcm_handle, hwparams, val, dir );

The variables val and dir are set as follows: val=96; dir=0;
Still, I did not get the result I wanted or needed. The period_size is 
still at 8000.

Could anybody please point me to a hint, that could explain, why the 
Intel Edison cannot set the period_size below 8000? Is this a hardware 
issue or am I missing out something on my side? Should I try to 
configure my system in a different way? Is this maybe even a system-wide 
setting within ALSA?

Any hint would be really appreciated.

All the best,
Dennis

------------------------------------------------------------------------------
_______________________________________________
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