133 lines
5.3 KiB
Plaintext
133 lines
5.3 KiB
Plaintext
/**
|
|
@author Mario Danic, Thomas Schmitt
|
|
|
|
@mainpage Libburn Documentation Index
|
|
|
|
@section intro Introduction
|
|
|
|
Libburn is an open-source library for reading, mastering and writing
|
|
optical discs. For now this means only CD-R and CD-RW.
|
|
|
|
The project comprises of several more or less interdependent parts which
|
|
together strive to be a usable foundation for application development.
|
|
These are libraries, language bindings, and middleware binaries which emulate
|
|
classical (and valuable) Linux tools.
|
|
|
|
Our scope is currently Linux 2.4 and 2.6 only. For ports to other systems
|
|
we would need : login on a development machine resp. a live OS on CD or DVD,
|
|
advise from a system person about the equivalent of Linux sg or FreeBSD CAM,
|
|
volunteers for testing of realistic use cases.
|
|
|
|
We do have a workable code base for burning data CDs, though. The burn API is
|
|
quite comprehensively documented and can be used to build a presentable
|
|
application.
|
|
We do have a functional binary which emulates parts of cdrecord in order to
|
|
prove that usability, and in order to allow you to explore libburn's scope
|
|
by help of existing cdrecord frontends.
|
|
|
|
@subsection components The project components (list subject to growth, hopefully):
|
|
|
|
- libburn is the library by which preformatted data get onto optical media.
|
|
It uses either /dev/sgN (e.g. on kernel 2.4 with ide-scsi) or
|
|
/dev/hdX (e.g. on kernel 2.6).
|
|
libburn is the foundation of our cdrecord emulation.
|
|
|
|
- libisofs is the library to pack up hard disk files and directories into a
|
|
ISO 9660 disk image. This may then be brought to CD via libburn.
|
|
libisofs is to be the foundation of our upcoming mkisofs emulation.
|
|
|
|
- cdrskin is a limited cdrecord compatibility wrapper for libburn.
|
|
cdrecord is a powerful GPL'ed burn program included in Joerg
|
|
Schilling's cdrtools. cdrskin strives to be a second source for
|
|
the services traditionally provided by cdrecord.
|
|
cdrskin does not contain any bytes copied from cdrecord's sources.
|
|
Many bytes have been copied from the message output of cdrecord
|
|
runs, though.
|
|
See cdrskin/README for more.
|
|
|
|
- "test" is a collection of application gestures and examples given by the
|
|
authors of the library features. The main API example of libburn
|
|
is named test/libburner.c .
|
|
Explore these examples if you look for inspiration.
|
|
|
|
We plan to be a responsive upstream. Bear with us.
|
|
|
|
|
|
@section using Using the libraries
|
|
|
|
Our build system is based on autotools.
|
|
User experience tells us that you will need at least autotools version 1.7.
|
|
|
|
To build libburn and its subprojects it should be sufficient to go into
|
|
its toplevel directory and execute
|
|
|
|
- ./bootstrap (needed if you downloaded from SVN)
|
|
|
|
- ./configure
|
|
|
|
- make
|
|
|
|
To make the libraries accessible for running resp. developing applications
|
|
|
|
- make install
|
|
|
|
Both libraries are written in C language and get built by autotools.
|
|
Thus we expect them to be useable by a wide range of Linux-implemented
|
|
languages and development tools.
|
|
|
|
|
|
@section libburner Libburner
|
|
|
|
libburner is a minimal demo application for the library libburn
|
|
(see: libburn/libburn.h) as provided on http://libburn.pykix.org .
|
|
It can list the available devices, can blank a CD-RW and
|
|
can burn to CD-R or CD-RW.
|
|
|
|
It's main purpose, nevertheless, is to show you how to use libburn and also
|
|
to serve the libburn team as reference application. libburner does indeed
|
|
define the standard way how above three gestures can be implemented and
|
|
stay upward compatible for a good while.
|
|
|
|
@subsection libburner-help Libburner --help
|
|
<pre>
|
|
Usage: test/libburner
|
|
[--drive <address>|<driveno>|"-"] [--audio]
|
|
[--blank_fast|--blank_full] [--try_to_simulate]
|
|
[<one or more imagefiles>|"-"]
|
|
Examples
|
|
A bus scan (needs rw-permissions to see a drive):
|
|
test/libburner --drive -
|
|
Burn a file to drive chosen by number:
|
|
test/libburner --drive 0 my_image_file
|
|
Burn a file to drive chosen by persistent address:
|
|
test/libburner --drive /dev/hdc my_image_file
|
|
Blank a used CD-RW (is combinable with burning in one run):
|
|
test/libburner --drive /dev/hdc --blank_fast
|
|
Burn two audio tracks
|
|
lame --decode -t /path/to/track1.mp3 track1.cd
|
|
test/dewav /path/to/track2.wav -o track2.cd
|
|
test/libburner --drive /dev/hdc --audio track1.cd track2.cd
|
|
Burn a compressed afio archive on-the-fly, pad up to 700 MB:
|
|
( cd my_directory ; find . -print | afio -oZ - ) | \
|
|
test/libburner --drive /dev/hdc -
|
|
To be read from *not mounted* CD via: afio -tvZ /dev/hdc
|
|
Program tar would need a clean EOF which our padded CD cannot deliver.
|
|
</pre>
|
|
libburner has two companions, telltoc and dewav, which help to perform some
|
|
peripheral tasks of burning.
|
|
|
|
telltoc prints a table of content (sessions, tracks and leadouts), it tells
|
|
about type and state of CD media, and also is able to provide the necessary
|
|
multi-session information for program mkisofs option -C. See: telltoc --help.
|
|
|
|
dewav extracts raw byte-swapped audio data from files of format .wav (MS WAVE)
|
|
or .au (SUN Audio). See example in libburner --help.
|
|
|
|
@subsection libburner-source Sourceode of libburner
|
|
|
|
Click on blue names of functions, structures, variables, etc in oder to
|
|
get to the according specs of libburn API or libburner sourcecode.
|
|
|
|
@include libburner.c
|
|
*/
|