About the problem of i.MX6 alsa setup the rate

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

About the problem of i.MX6 alsa setup the rate

997 Views
liangyu
Contributor III

Hi everyone, I met a problem about the i.MX6 alsa setup the rate. When I use the aplay to play a wav file, the log show it is ok,but when I setup alsa param in linphone, the alsa problem comes. I can't setup the rate what I want. The log is follow as:

platform: i.MX6 LTIB

aplay -vv /unit_tests/audio8k16S.wav

aplay log:

   aplay -vv /unit_tests/audio8k16S.wav        (the red parts I add it in alsa-lib)
=======>best=8000,val=8000,min=8000,max=8000
Playing WAVE '/unit_tests/audio8k16S.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Stereo
====>min=2124648108
====>min=2124648108
====>min=2124647444
====>min=2124647444
====>min=2124647444
====>min=2124647444
====>min=2124647444
====>min=2124646172
====>min=2124646172
=======>best=8000,val=8000,min=8000,max=8000
Plug PCM: Direct Stream Mixing PCM
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 8000
exact rate : 8000 (8000/1)
msbits : 16
buffer_size : 2880
period_size : 320
period_time : 40000
tstamp_mode : NONE
period_step : 1
avail_min : 320
period_event : 0
start_threshold : 2880
stop_threshold : 2880
silence_threshold: 0
silence_size : 0
boundary : 1509949440
Hardware PCM card 0 'wm8960-audio' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : MMAP_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 8000
exact rate : 8000 (8000/1)
msbits : 16
buffer_size : 2880
period_size : 320
period_time : 40000
tstamp_mode : ENABLE
period_step : 1
avail_min : 320
period_event : 0
start_threshold : 1
stop_threshold : 1509949440
silence_threshold: 0
silence_size : 1509949440
boundary : 1509949440
appl_ptr : 0
hw_ptr : 0
##+ | 03%

#############################################################

linphone alsa log:

MSFilePlayer[0x6fec90]: /unit_tests/audio8k16S.wav opened: rate=8000,channel=2
alsa_open_w: opening default at 8000Hz, bits=16, stereo=0
=======>best=8000,val=8000,min=8000,max=8000
====>min=743887532
====>min=743887532
====>min=743886868
====>min=743886868
====>min=743886868
====>min=743886868
====>min=743886868
=============11111=============>
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: [4000 4294967295)
PERIOD_TIME: 40000
PERIOD_SIZE: [160 171798692)
PERIOD_BYTES: [320 343597384)
PERIODS: (0 9663677)
BUFFER_TIME: [1 4294967295]
BUFFER_SIZE: [320 1546188226]
BUFFER_BYTES: [640 3092376452]
TICK_TIME: ALL
===========>exact_uvalue=8000
=======>best=716636324,val=716636324,min=716636324,max=716636324
===============2222================>
ACCESS: RW_INTERLEAVED
FORMAT: S16_LE
SUBFORMAT: STD
SAMPLE_BITS: 16
FRAME_BITS: 16
CHANNELS: 1
RATE: 716636324
PERIOD_TIME: 40000
PERIOD_SIZE: (28665452 28665453)
PERIOD_BYTES: (57330904 57330906)
PERIODS: (1 10)
BUFFER_TIME: (79999 360000)
BUFFER_SIZE: [57330905 257989076]
BUFFER_BYTES: [114661810 515978152]
TICK_TIME: ALL

In linphone Log, the red parts in alsa-lib(I add) , the blue is before snd_pcm_hw_params_set_period_size_near, and the green is after snd_pcm_hw_params_set_period_size_near function.

I want to know why same code show different result. What make the alsa "snd_pcm_hw_params_set_period_size_near" wrong?

Thank you!

Labels (3)
0 Kudos
2 Replies

663 Views
igorpadykov
NXP Employee
NXP Employee

Hi liang

one can try to debug MSFilePlayer, in particular why running as :

MSFilePlayer opened channel=2 it reported later as CHANNELS: 1
also seems its rate is wrong.

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos

663 Views
liangyu
Contributor III

In linphone , we use resample change the channel 2 to 1,but the sample rate setup 8000,and return the result is uncorrect.

0 Kudos