GNOME Bugzilla – Bug 76537
Audio CD library support
Last modified: 2004-12-22 21:47:04 UTC
I propose to target this one for the 0.4 release, we need to have at least support for playing cds. Some stuff has already been done and we saw that it's not that hard with gstreamer to only play cds through cdparanoia... I thought quickly of a design for that. We could for example make a new implementation of monkey-media-stream creating a bin: (cdparanoia ! volume) In order for this to work, the code creating the source in monkey-media-stream might be moved in the monkey-media-audio-stream. Of course we could try (again) to use vfs for this but... it's a pain ;)
Agreed, we need this and ripping for 0.4. I htink we should just do something like check the uri for protocl type in mmstrema, if cdda:// we use cdparanoia as src element otherwise gnomevfs. (Like one of your very first patches for this, iirc ;) ) But we need some more stuff to get good audiocd support, we need something like a MonkeyMediaAudioCD object, supporting the something like the following methods: gboolean monkey_media_audio_cd_is_available (MonkeyMediaAudioCD *cd) GList *monkey_media_audio_cd_list_audio_tracks (MonkeyMediaAudioCD *cd); // list of uris and a signal like void (*cd_availability_changed) (MonkeyMediaAudioCD *cd, gboolean available) And then we need cd support in monkeymediastreaminfo, we need to check the uri for cdda://, if it's that we should invoke a streaminfo impl that fetches stuff from freedb.
I'm concerned we're taking gstreamer niftiness a step too far and wallowing in our beautiful abstractions a little too much ;-) CD Paranoia is I/O internsive which causes many linux systems with many CD drives to be less than responsive. In addition, it can be a CPU hog, and will also not work at above 1x with many CD/drive combinations (not so great cd drives combined with scratched CDs). The only good reason I can think of to use gstreamer's CD paranoia plugin here is because its easier. We should use vfs/cdparanoia sources for ripping CDs to other formats, but not for playing.
These are really valid points, but... Jorn and I already tried to use the existing the vfs plugin (broken) and to create a new one: without success... So unless someone comes with the right vfs implementation this feature will not be added to RB, except if we use gstreamer. I agree with your concerns but cdparanoia is better than nothing ;)
Who needs VFS at all? VFS would just use CD paranoia too. CD-ROM drives on PCs (I believe this is different on Macintosh) can be instructed to play certain tracks. The sound goes through a cable straight to the sound card. There are plenty of libraries that can do this, or you can see the gnome-media/gnome-cd sources for examples on doing it.
Apple and some newer pcs (like mine) dont have this cable, but indeed it used to be standard at least a while ago. Since we cannot detect it's availability, i think we should have a system wide gconf boolean for cd playback behaviour, and have all apps including gnome-cd stick to it. (Once we get both behaviours implemented in monkeymedia, it will be trivial to support if they use mm)
So on Windows, does it automatically detect that you don't have this cable and play through ripping? If so, presumably there's *some* way to find out this information.
No, I think windows doesn't automatically detect it. Iirc, it default to use "digital playback" ie it uses a cdparanoia-like method, but hidden somewhere in the cd drive properties, there is a "use digital playback" checkbox in case you don't want to use it.
Digital Playback is a must - it's one of the really great thing about windows music players. For those of us with that cable attached the old fassioned CPUless cd playing would be great - but i dont know how easy it is to control and monitor the playback in the rb interface.
We can't use gst-0.4.1 due to recent changes in the cdparanoia plugin, so this bug shouldn't block the 0.4 release.