GNU libcdio
GNU Compact Disc Input and Control Library
The GNU Compact Disc Input and Control library (libcdio) contains a library for CD-ROM and CD image access. Applications wishing to be oblivious of the OS- and device-dependent properties of a CD-ROM or of the specific details of various CD-image formats may benefit from using this library.
Some support for on-disk CD-image types like CDRWIN's BIN/CUE format, cdrdao's TOC format, and Nero's NRG format is available. Therefore, applications that use this library also have the ability to read on-disk CD images as though they were CDs.
A library for working with ISO-9660 filesystems (libiso9660) is included. A generic interface for issuing MMC (multimedia commands) is also part of the libcdio library.
The cdparanoia library and cdparanoia command are included making this the only single-source cdparanoia that works on FreeBSD, NetBSD, OSX, cygwin, Solaris, BSDI as well as GNU/Linux.
This list of projects using libcdio can be consulted for an idea of the range of applications using the library.
With the distribution is an OO interface via C++. (The C routines are also directly callable from C++). Access via Perl is available from CPAN via the Device::Cdio module. An interface from Python and two from Ruby are also available.
Volunteers Wanted
We are looking for volunteers to lead development of a suite of programs for GNU for the job of CD/DVD recording, comparable to cdrtools. Unfortunately, the cdrtools author has chosen to use the CDDL license for his work; since the CDDL is incompatible with the GPL, we cannot use it in GNU. The Debian fork of cdrtools, named cdrkit (aka debburn), is unfortunately also not a suitable long-term solution for GNU, since it is licensed under GPLv2-only, and has adopted a different build scheme.
Both cdrtools and cdrkit include the mkisofs program, originally written for GNU by Eric Youngdale. So that is one possible starting point. Technically, it seems the ideal result would be enhancements to libcdio at the library level to support the necessary writing functionality (the above projects have no comparable library layer), and then command-line utilities to provide a shell interface.
The future GNU utility comparable to cdrecord (wodim in cdrkit) should have compatible options, so that the myriad other GUI and other programs which work on top of it can simply substitute the command name.
The GNU vcdimager program is a potential starting point.
There are other libcdio projects that await volunteers, too; UDF filesystem support is one big one.
If you have time, background, and interest, please email libcdio-devel@gnu.org, and thanks.
Utility Programs
- cd-info
- a program which displays CD information: number of tracks, CD-format and if possible basic information about the format. If libcddb is available, the cd-info program will display CDDB matches on CD-DA discs. And if a new enough version of libvcdinfo is available (from the vcdimager project), then cd-info shows basic VCD information.
- cd-drive
- a program which decribes CD-ROM/DVD drive characteristics
- cd-paranoia
- a program for extracting audio from a CD in a jitter- and error-tolerant way.
- cd-read
- a program for performing low-level block reading of a CD or C image
- cdda-player
- a curses program using the audio controls to play a CD-DA through the audio output port.
- iso-info
- a program for displaying ISO-9660 information from an ISO-9660 image
- iso-read
- a program for extracting files from an ISO-9660 image.
Documentation
- Documentation – Documentation (including tutorial)
- API reference – API documentation courtesy of doxygen
- Development – Instructions for accessing the git repository
Source Code
- Download – Links of source code and distribution packages
- git (libcdio) – Browse libcdio source
- git (pycdio) – Browse pycdio source
- git (rbcdio) – Browse rbcdio source
- git (Perl) – Browse Perl Device::Cdio source
Other Links
- Mailing lists – GNU Mailman mailing lists
- Project Page – The GNU Savannah project page
$Id: index.html,v 1.63 2009/02/15 22:28:22 karl Exp $