GNU CD Input and Control Library encapsulates CD-ROM reading and control for applications wishing to be oblivious to the OS- and device-dependent properties of a CD-ROM.
It provides an API for access to SCSI-MMC (multimedia commands) and support for CD image types like BIN/CUE, cdrdao's TOC, and Nero's NRG, which gives applications using the library the ability to read disc images as though they were CDs. ISO-9660 filesystem support is included, as are utility programs for displaying CD and CD-ROM drive information, reading the blocks of a CD, and extracting files from an ISO-9660 filesytem image. cdparanoia is also included.
The cdparanoia library and cdparanoia command are included making this the only single-source cdparanoia that works on FreeBSD, cygwin, Solaris, BSDI as well as GNU/Linux.
This list of projects using libcdio can be consulted for an idea of possible range of applications using of 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 from Ruby are also available.
Utility programs in the libcdio package are:
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.
a program which decribes CD-ROM/DVD drive characteristics
a program for extracting audio from a CD in a jitter- and error-tolerant way.
a program for performing low-level block reading of a CD or CD image
a curses program using the audio controls to play a CD-DA through the audio output port.
a program for displaying ISO-9660 information from an ISO-9660 image
a program for extracting files from an ISO-9660 image.