'Twas brillig, and gammay at 13/08/09 09:18 did gyre and gimble:
Hello, I am looking at making this product use case possible: Audio samples are streamed over wire/wireless from a source device to a sink device. The streaming format is in mp3. On the source device I need to capture locally played mp3 samples and stream to the sink device. The sink device takes care of uncompressing and playback.
Can we capture compressed mp3 streams directly using ALSA? It is possible to capture uncompressed PCM samples using file plug or by other means in ALSA. While it is possible to directly read from the mp3 file, I would rather grap the samples that a media player sends out because a) it takes care of timing b) I can control the media player to play/pause the stream and for playlist management. For the user it is transperent - he/she will use only the local media player to control the streaming.
I am not sure if this lies in the domain of ALSA at all - as I understand once we are in ALSA we are dealing with only PCM. In such case, please give me some pointers where I can look at to make this possible. I am using mplayer, but can also look at other types (non-GUI, command-line based). Can we do this in a non-media player specific way?
Sounds like something that is much more in the gstreamer domain I think.
For general purpose interaction with network devices generally for desktop audio systems, pulseaudio is more appropriate (it already interacts with UPnP devices, native pulseaudio servers and Apple RAOP Airtunes devices over the network). It does not deal with codecs at present however, but some kind of work in that area will probably have to be done eventually (tho' it wont do any encoding/decoding by itself - it would always hand over to e.g. gstreamer for this job).
Jump on IRC and have a chat over at #gstreamer or #pulseaudio for inspiration.
Col