GNOME Bugzilla – Bug 529741
Add ioctl-based CDDA plugin for Solaris
Last modified: 2009-05-01 09:20:46 UTC
I'm attaching a patch which adds an ioctl-based GStreamer CDDA plugin which works well on Solaris. It probably would require a bit of work to get functional on Linux, since I believe the ioctls are slightly different. The advantage of this plugin is that it is LGPL, whereas libcdio and libcdparanoia are GPL and not good to link into the LGPL GStreamer framework (refer to bug #413705). Secondly, even if libcdparanoia is relicensed under LGPL, libcdparanoia does not support or build on Solaris. So, this is a handy, simply GStreamer plugin for supporting CDDA without the licensing issues of GPL. Could this plugin be added to gst-plugins-good, or gst-plugins-bad?
Created attachment 109834 [details] [review] patch adding ioctl based CDDA plugin
I wouldn't say that this is only desirable for Solaris. I understand the code as provided only works on Solaris, but other distros might want to have a LGPL CDDA plugin. It would require a bit of work to make it support Linux ioctls, but probably not more than a few hours of work for someone with a bit of experience in this area. I guess we'll see if other distros have an interest in it.
Hrm, this has been in bugzilla for a while. Are you still interested in getting this in? Some quick comments/questions: - is the code the latest version? - I think it should be called suncddasrc / GstSunCddaSrc and go into -bad/sys/sunccda or so as long as it's specific to sun/solaris (or -bad/sys/suncdda if you shed the libhal dependency, see next item) - presumably the cd drive querying could be done via glib/gio these days (GVolumeMonitor)? (Not a requirement, just wondering) - is it ok to call ioctl() on the same file descriptor / device from multiple threads at the same time? (the speed changing would be done from the main application thread while the streaming thread accesses the drive as well) - please run gst-indent on the .c file (and only the .c file) - please change all the return (foo); into return foo; to match the rest of the GStreamer code base.
Thanks for bringing this to my attention. We no longer ship this plugin on Solaris. Now we use a plugin that interfaces with the /usr/bin/cdda2wav binary directly. Joerg Schilling added some interactive features to the cdda2wav program so that our new plugin can start cdda2wav once, and the plugin can interactively request sectors. It works better than the ioctls since cdda2wav uses USCSI interfaces and more reliably can read CDDA data from the drive than ioctls can. I originally posted this bug report because I thought other platforms might be interested in making it work as a general simple ioctl-based plugin. But, since that doesn't seem to be the case, it's probably best to just close this bug as will not fix. I don't think anyone at Sun has an interest in using it anymore.
Ok, thanks.