libcdio.texi: More sectioning with respect to the libraries

glossary.texi: Add Thomas Schmitt's DVD Blu-Ray and media information.
This commit is contained in:
R. Bernstein
2010-01-22 08:52:36 -05:00
parent 0c1024abfc
commit 2f5509c68e
2 changed files with 139 additions and 26 deletions

View File

@@ -33,8 +33,15 @@ format. The @code{.CUE} file is a text file which contains CD format
and track layout information, while the @code{.BIN} file holds the
actual data of each track.
@item Blu-ray Disc (BD)
@cindex Blu-ray Disc (BD)
Optical media with capacity of 25 GB as single layer and 50 GB
as double layer. See also "Media models and profiles".
@item CD
Compact Disc
@cindex CD
Compact Disc. Capacity up to 900 MB. See also "Media models and profiles".
@item CD-DA
@cindex CD-DA
@@ -114,6 +121,20 @@ translators. But also a CD-I player can read CD-XA discs even if
its own `Green Book' file system only resembles ISO 9660 and isn't
fully compatible.
@item DVD
@cindex DVD
Digital Versatile Disc. Capacity up to 4.5 GB as single layer and
8.5 GB as double layer media. See also "Media models and profiles".
@item Defect management
@cindex Defect management
A method to compensate small amounts of bad spots on media by replacing
them out of a pool of reserve blocks and performing address translation.
The necessary checkreading slows down write performance by a factor of 2 or 3.
Defect management applies by default to DVD-RAM and BD-RE. Optionally it
can be formatted onto CD-RW and DVD+RW, where it has the name "Mount Rainier".
Sequential BD-R can be formatted for defect management too.
@item Command Packet
@cindex Command Packet
@@ -260,6 +281,70 @@ DVD-Rewriters, etc.
Many manufacturers have adopted this standard and it also applies to
ATAPI versions of their drives.
@item Media models and profiles
@cindex Media models and profiles
MMC classifies media as models, which describe their logical structure,
and as profiles, which describe the capabilities of the drive with the
particular media. So both are closely related but not identical.
There are three model families: CD, DVD, Blu-ray.
CD allows special sector formats like audio as well as data
sectors of 2048 bytes. DVD and Blu-ray only record data sectors.
@table @dfn
@item Non-writable media: CD-ROM, DVD-ROM, BD-ROM.
@item Write-once media: CD-R, DVD-R, DVD+R, BD-R.
@item Reusable media: CD-RW, DVD-RW, DVD+RW, DVD-RAM, BD-RE.
@end table
Profiles depend on drive type and media state. They are expressed as
numbers. It is unfortunate that formatted CD-RW have the same
profile number as unformatted ones.
ROM drives often announce all media as ROM profiles.
Some writer drives show closed sequential media as ROM profile.
@table @dfn
@item CD-ROM 0x08
@item DVD-ROM 0x10
@item BD-ROM 0x40
@end table
Sequentially recordable profiles allow multisession in most cases.
Special burn programs are needed for writing to them.
@table @dfn
@item CD-R 0x09
@item CD-RW 0x0a (unformatted)
@item DVD-R 0x11
@item DVD-RW 0x14 (unformatted)
@item DVD-R DL 0x15 (double layer)
@item DVD+R 0x1a
@item DVD+R DL 0x2a (double layer)
@item BD-R 0x41 (single or double layer, formatted or not)
@end table
They can assume three states:
@table @dfn
@item "Blank" is not readable but writeable from scratch
@item "Appendable" is readable and after the readable part still writeable
@item "Closed" is only readable
@end table
CD-RW and DVD-RW can be brought back to blank state,
or they can be formatted to become overwriteable.
Overwriteable profiles allow random read-write access with a
granularity of 2 kB or 32 kB.
One can hope for having read-write access via the normal
POSIX operations lseek(), read(), write() of the operating system.
@table @dfn
@item CD-RW 0x0a (formatted)
@item DVD-RAM 0x12
@item DVD-RW 0x13 (formatted, 32 kB write granularity)
@item DVD+RW 0x1a
@item BD-R 0x42 (formatted for pseudo-random recording)
@item BD-RE 0x43 (single or double layer)
@end table
BD-R profile 0x42 is defined by MMC but not implemented by the consumer
priced Blu-ray burners as of year 2009.
@item Mixed Mode CD
@cindex Mixed Mode CD

View File

@@ -12,7 +12,7 @@
@set txicodequotebacktick
@copying
This manual documents @code{libcdio}, the GNU CD Input, Output and Control
This manual documents @code{libcdio}, the GNU CD Input, Output, and Control
Library.
Copyright @copyright{} 2003, 2004, 2005, 2006, 2007, 2008, 2010 Rocky
@@ -47,7 +47,7 @@ Texts. A copy of the license is included in the section entitled
@titlepage
@title GNU @code{libcdio}
@subtitle GNU Compact Disc Input, Output and Control Library
@subtitle GNU Compact Disc Input, Output, and Control Library
@subtitle for version @value{VERSION}, @value{UPDATED}
@author Rocky Bernstein et al. (@email{bug-libcdio@@gnu.org})
@page
@@ -287,7 +287,7 @@ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
__________________________________
ISO 9660 image: ../test/joliet.iso
Application: K3B THE CD KREATOR VERSION 0.11.12 (C) 2003 SEBASTIAN TRUEG AND THE K3B TEAM
Application: K3B THE CD KREATOR VERSION 0.11.12 (C) 2003 SEBASTIAN TRUEG AND...
Preparer : K3b - Version 0.11.12
Publisher : Rocky Bernstein
System : LINUX
@@ -322,17 +322,13 @@ extracts files from an ISO-9660 image.
Historically, @code{libcdio} did not support write access to
drives. In conjunction with additional work in a separate project
@code{libburn}, Thomas Schmitt has modified @code{libcdio} to add
write support; @code{libburn} write audio and data CD's and reads data
CD's. It reads and write DVD's and Blu-Ray discs.
@code{libburn}, Thomas Schmitt has modified @code{libcdio} to enable
sending SCSI write commands on some of the drivers. This enables other
programs like @code{libburn} to write to CD's, DVD's and Blu-Ray
discs.
Other writing libraries include (e.g. @code{libdi}, @code{libscg}, or
@code{libdvdread}) may be helpful.
I'm not theoretically opposed to putting support like this into
libcdio. However at present there are already many gaps in this
package, so narrowing its scope in order to focus on these things I
think is a good idea.
For the OS drivers which are lacking write access, volunteers are
welcome.
@node CD Formats
@chapter CD Formats
@@ -2040,19 +2036,19 @@ MMC (Multimedia commands) is a specification which adds special SCSI
commands for CD, DVD, Blu-Ray devices.
If your optical drive understands MMC commands as most do nowadays,
this is probably gives the most flexibility in control. SCSI and ATAPI
this probably gives the most flexibility in control. SCSI and ATAPI
CD-ROM devices generally support a fairly large set of MMC
commands. Unfortunately on most Operating Systems, one may need to do
additional steps to allow access in this manner.
commands. Unfortunately, on most Operating Systems one may need to do
some additional setup, such as install drivers or modules, to allow
access in this manner.
The name ``SCSI MMC'' is often found in the literature in
specifications and on the Internet. The ``SCSI'' part is probably a
little bit misleading because a drive can understand ``SCSI MMC''
commands but not use a SCSI bus protocol---ATAPI CD-ROMs are one such
broad class of examples. In fact there are drivers to ``encapsulate''
non-SCSI drives on non-MMC-compliant drives and make them act like MMC
drives. I believe that many Operating System SCSI ``pass-through''
mechanisms do roughly the same thing.
non-SCSI drives to make them act like more like SCSI drives, such as
by adding SCSI address naming.
For clarity and precision we will use the term ``MMC'' rather than
``SCSI MMC''.
@@ -2067,7 +2063,6 @@ One of the problems with MMC is that there are so many different
@item MMC 5 --- @url{ftp://ftp.t10.org/t10/drafts/mmc5/}
@end itemize
along with the several ``drafts'' of these.
for each standard.
Another problem with the MMC commands related to the variations in
standards is the variation in the commands themselves and there are
@@ -2100,9 +2095,8 @@ find a little bit of this for example via the routine
@code{scsi_mmc_get_drive_cap()}. However much more work is needed.
Finally, in @code{libcdio} there is a driver access mode (not a
driver) called ``MMC''. It indicates to the specific drivers to in
issue MMC commands instead of other OS-specific or native drive
commands.
driver) called ``MMC''. It tells the specific drivers to use MMC
commands instead of other OS-specific mechanisms.
@node Access Modes
@section Access Modes
@@ -2220,7 +2214,14 @@ More work on this driver is needed. Volunteers?
@node Internal Program Organization
@chapter Internal Program Organization
@subsection file organization
@menu
* File Organization::
* Library Organization::
* Programming Conventions::
@end menu
@node File Organization
@section File Organization
Here is a list of @value{libcdio} directories.
@@ -2296,6 +2297,18 @@ location @code{lib/driver}
@end itemize
@node Library Organization
@section Library Organization
@menu
* libcdio::
* libcdio_cdda:: Access to CD-DA via the CD Paranoia library
* libcdio_paranoia:: Access to the CD Paranoia library
* libiso9660:: Access to ISO 9660 file systems and structures
* libudf:: Access to UDF file systems and structures
@end menu
@node libcdio
@subsection @samp{libcdio}
@value{libcdio} exports one opaque type @code{CdIo_t}. Internally this
@@ -2328,6 +2341,7 @@ one CD-image format to another. Basically the first image format is
``parsed'' into the common internal format and then from this
structure it is not parsed.
@node libcdio_cdda
@subsection @samp{libcdio_cdda}
This library is intended to give access CD-DA disks using Monty's
@@ -2335,6 +2349,7 @@ cd-paranoia library underneath.
To be completed....
@node libcdio_paranoia
@subsection @samp{libcdio_paranoia}
This library is intended to give access Monty's cd-paranoia
@@ -2342,6 +2357,8 @@ library. It is the gap detection and jitter correction part without
the part dealing with CD-DA reading.
To be completed....
@node libiso9660
@subsection @samp{libiso9660}
This library is intended to give access and manipulate a ISO-9600 file
@@ -2352,6 +2369,7 @@ structures and fields that go into such an image.
To be completed....
@node libudf
@subsection @samp{libudf}
This library is intended to give access and manipulate a UDF file
@@ -2359,13 +2377,23 @@ image.
To be completed....
@node Programming Conventions
@section Programming Conventions
@menu
* Coding Conventions::
* Namespace Conventions::
@end menu
@node Coding Conventions
@subsection Coding Conventions
In @value{libcdio} there are a number of conventions used. If you
understand some of these conventions it may facilitate understanding
the code a little.
@subsubsection namespace names
@node Namespace Conventions
@subsection Namespace Conventions
For the most part, the visible external @value{libcdio} names follow
conventions so as not to be confused with other applications or