[alsa-devel] ASoC: Choppy audio on OMAP using McBSP3 interface
Pedro Sanchez
psanchez at fosstel.com
Tue May 31 15:21:47 CEST 2011
Hello,
I wrote a ASoC driver for a TI DM3730-based custom board interfacing a
TI TAS5709 codec over the McBSP2 interface. I'm using the Linux kernel
2.6.32. The driver works very well, no problems with the sound quality
at all.
Unfortunately due to reasons alien to me I needed to move the driver to
work using the McBSP3 interface instead. All I did was then to change
the pointer in my machine code to point to the McBSP3 interface:
static struct snd_soc_dai_link bp_audio_dai = {
.name = "tas5709",
.stream_name = "tas5709",
.cpu_dai = &omap_mcbsp_dai[2], <-- from [1] to [2]
.codec_dai = &tas5709_dai,
.init = bp_audio_init,
.ops = &bp_audio_ops,
};
and in my machine init code:
*(unsigned int *)bp_audio_dai.cpu_dai->private_data = 2;
With this change the audio driver works well when playing local audio
files via the aplay command. But it fails miserably when playing
streaming audio from a VoIP connection, the audio is very choppy as it
happens when there is a large packet loss. However audio is mono 16 bits
@8 KHz, not really very demanding.
I realize there is a big difference in the internal buffer size for the
two interfaces, the McBSP2 having 10 times the buffer space of the
McBSP3. I suspect this is somehow the source of my problems. I'm
inclined to believe that there is some DMA-related optimization issue
that has to be addressed somehow, but this is just a guess.
I fail to understand why is it that I can play local audio files but not
streaming audio. What makes the difference? Any suggestions on how to
address this issue?
Thank you,
--
Pedro
More information about the Alsa-devel
mailing list