Hello Everyone,
In my new job I've been assigned to create a proof of concept "mp3 player"
using an existing product from our company. Trouble is, I've not done
anything with audio before and the timeframe is tight. I guess my new boss
thinks it's a piece of cake - "it's only software, after all, right?"
The
main problem is that this Linux-based device doesn't have _any_ audio
capability so we're having to engineer something. The current plan is to
connect a fancy Bluetooth (CSR BC5) chip and use it for the audio-output
stage.
Although I don't think this forum is necessarily the right place to go
looking for help, I'm hoping someone can point me in the right direction for
where to get some education. I really don't understand the finer points of
how the audio signal gets to the device driver and this is where some help
would be appreciated. Specific questions I have are:
- What's the general flow of the data from the disk file (or streaming
audio source) to the device driver? Is it: MP3file -> streaming software ->
codec -> driver or// MP3file -> streaming software -> Codec -> streaming
software (e.g. via callback) -> driver? (or does it even have a standard
approach?)
- The Bluetooth part can be connected by UART or USB to the host. USB
would be better because the BT part enumerates as an audio-class device.
This would probably solve my problem, but our Linux device hasn't an
available host-side interface, I'd have to delve into USB OTG and maybe cut
and jumper some traces. That leaves UART. I don't see how a UART can be made
to look like an audio device unless I write a driver that presents as an
audio interface to Linux and exchanges the audio traffic between user space
at the top-end and the UART on its bottom-end. Is there an easier way to
create an audio interface out of a UART?
I've downloaded several packages to take a look at how they implemented, but
they all contain dozens (or hundreds) of files. Progress through will be
slow, but I'm guaranteed to find an answer. I've got copies of:
- gstreamer
- MuSE
- madplay
Between the three of these I think I'll be able to figure something out
(needs to be ported to ARM9). Is anyone able to make a recommendation?
Thanks for reading this post - I promise not to be a pest on this list (but
would be happy to share my eventual solution, if anyone wanted to know it)
Regards,
Pete Moss.