Hi all,
I am seeing a strange problem here.
I have cross-compiled Linphone for an embedded board. ALSA is used for sound. While testing basic functionality with linphonec (just making an audio-only call to a PC running linphone), I found the following:
- When a codec other than PCMU or PCMA is used (specifically I tested speex), then the call can be established, and there is audio in both directions
- However when using PCMU or PCMA, I found that there is audio in the PC -> target board direction, but not in the target board -> PC direction
I was puzzled by this behaviour and after some testing I discovered that the problem is fixed if I use the following asound.conf (there was no asound.conf in the initial tests):
pcm.dmix_44100{
type dmix
ipc_key 5678293
ipc_key_add_uid yes
slave{
pcm "hw:0,0"
period_time 40000
buffer_time 360000
format S16_LE
rate 44100
}
}
pcm.!dsnoop_44100{
type dsnoop
ipc_key 5778293
ipc_key_add_uid yes
slave{
pcm "hw:0,0"
period_time 40000
buffer_time 360000
format S16_LE
rate 44100
}
}
pcm.asymed{
type asym
playback.pcm "dmix_44100"
capture.pcm "dsnoop_44100"
}
pcm.!default{
type plug
route_policy "average"
slave.pcm "asymed"
}
My question is: Why does this fix the problem? And why does the problem manifest only when PCMU/PCMA are used, and not with other codecs?
TIA,