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:
@@ -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
|
and track layout information, while the @code{.BIN} file holds the
|
||||||
actual data of each track.
|
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
|
@item CD
|
||||||
Compact Disc
|
@cindex CD
|
||||||
|
Compact Disc. Capacity up to 900 MB. See also "Media models and profiles".
|
||||||
|
|
||||||
@item CD-DA
|
@item CD-DA
|
||||||
@cindex 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
|
its own `Green Book' file system only resembles ISO 9660 and isn't
|
||||||
fully compatible.
|
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
|
@item Command Packet
|
||||||
@cindex Command Packet
|
@cindex Command Packet
|
||||||
|
|
||||||
@@ -260,6 +281,70 @@ DVD-Rewriters, etc.
|
|||||||
Many manufacturers have adopted this standard and it also applies to
|
Many manufacturers have adopted this standard and it also applies to
|
||||||
ATAPI versions of their drives.
|
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
|
@item Mixed Mode CD
|
||||||
@cindex Mixed Mode CD
|
@cindex Mixed Mode CD
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
@set txicodequotebacktick
|
@set txicodequotebacktick
|
||||||
|
|
||||||
@copying
|
@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.
|
Library.
|
||||||
|
|
||||||
Copyright @copyright{} 2003, 2004, 2005, 2006, 2007, 2008, 2010 Rocky
|
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
|
@titlepage
|
||||||
@title GNU @code{libcdio}
|
@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}
|
@subtitle for version @value{VERSION}, @value{UPDATED}
|
||||||
@author Rocky Bernstein et al. (@email{bug-libcdio@@gnu.org})
|
@author Rocky Bernstein et al. (@email{bug-libcdio@@gnu.org})
|
||||||
@page
|
@page
|
||||||
@@ -287,7 +287,7 @@ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
|
|||||||
PARTICULAR PURPOSE.
|
PARTICULAR PURPOSE.
|
||||||
__________________________________
|
__________________________________
|
||||||
ISO 9660 image: ../test/joliet.iso
|
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
|
Preparer : K3b - Version 0.11.12
|
||||||
Publisher : Rocky Bernstein
|
Publisher : Rocky Bernstein
|
||||||
System : LINUX
|
System : LINUX
|
||||||
@@ -322,17 +322,13 @@ extracts files from an ISO-9660 image.
|
|||||||
|
|
||||||
Historically, @code{libcdio} did not support write access to
|
Historically, @code{libcdio} did not support write access to
|
||||||
drives. In conjunction with additional work in a separate project
|
drives. In conjunction with additional work in a separate project
|
||||||
@code{libburn}, Thomas Schmitt has modified @code{libcdio} to add
|
@code{libburn}, Thomas Schmitt has modified @code{libcdio} to enable
|
||||||
write support; @code{libburn} write audio and data CD's and reads data
|
sending SCSI write commands on some of the drivers. This enables other
|
||||||
CD's. It reads and write DVD's and Blu-Ray discs.
|
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
|
For the OS drivers which are lacking write access, volunteers are
|
||||||
@code{libdvdread}) may be helpful.
|
welcome.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
@node CD Formats
|
@node CD Formats
|
||||||
@chapter 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.
|
commands for CD, DVD, Blu-Ray devices.
|
||||||
|
|
||||||
If your optical drive understands MMC commands as most do nowadays,
|
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
|
CD-ROM devices generally support a fairly large set of MMC
|
||||||
commands. Unfortunately on most Operating Systems, one may need to do
|
commands. Unfortunately, on most Operating Systems one may need to do
|
||||||
additional steps to allow access in this manner.
|
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
|
The name ``SCSI MMC'' is often found in the literature in
|
||||||
specifications and on the Internet. The ``SCSI'' part is probably a
|
specifications and on the Internet. The ``SCSI'' part is probably a
|
||||||
little bit misleading because a drive can understand ``SCSI MMC''
|
little bit misleading because a drive can understand ``SCSI MMC''
|
||||||
commands but not use a SCSI bus protocol---ATAPI CD-ROMs are one such
|
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''
|
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
|
non-SCSI drives to make them act like more like SCSI drives, such as
|
||||||
drives. I believe that many Operating System SCSI ``pass-through''
|
by adding SCSI address naming.
|
||||||
mechanisms do roughly the same thing.
|
|
||||||
|
|
||||||
For clarity and precision we will use the term ``MMC'' rather than
|
For clarity and precision we will use the term ``MMC'' rather than
|
||||||
``SCSI MMC''.
|
``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/}
|
@item MMC 5 --- @url{ftp://ftp.t10.org/t10/drafts/mmc5/}
|
||||||
@end itemize
|
@end itemize
|
||||||
along with the several ``drafts'' of these.
|
along with the several ``drafts'' of these.
|
||||||
for each standard.
|
|
||||||
|
|
||||||
Another problem with the MMC commands related to the variations in
|
Another problem with the MMC commands related to the variations in
|
||||||
standards is the variation in the commands themselves and there are
|
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.
|
@code{scsi_mmc_get_drive_cap()}. However much more work is needed.
|
||||||
|
|
||||||
Finally, in @code{libcdio} there is a driver access mode (not a
|
Finally, in @code{libcdio} there is a driver access mode (not a
|
||||||
driver) called ``MMC''. It indicates to the specific drivers to in
|
driver) called ``MMC''. It tells the specific drivers to use MMC
|
||||||
issue MMC commands instead of other OS-specific or native drive
|
commands instead of other OS-specific mechanisms.
|
||||||
commands.
|
|
||||||
|
|
||||||
@node Access Modes
|
@node Access Modes
|
||||||
@section Access Modes
|
@section Access Modes
|
||||||
@@ -2220,7 +2214,14 @@ More work on this driver is needed. Volunteers?
|
|||||||
@node Internal Program Organization
|
@node Internal Program Organization
|
||||||
@chapter 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.
|
Here is a list of @value{libcdio} directories.
|
||||||
|
|
||||||
@@ -2296,6 +2297,18 @@ location @code{lib/driver}
|
|||||||
|
|
||||||
@end itemize
|
@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}
|
@subsection @samp{libcdio}
|
||||||
|
|
||||||
@value{libcdio} exports one opaque type @code{CdIo_t}. Internally this
|
@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
|
``parsed'' into the common internal format and then from this
|
||||||
structure it is not parsed.
|
structure it is not parsed.
|
||||||
|
|
||||||
|
@node libcdio_cdda
|
||||||
@subsection @samp{libcdio_cdda}
|
@subsection @samp{libcdio_cdda}
|
||||||
|
|
||||||
This library is intended to give access CD-DA disks using Monty's
|
This library is intended to give access CD-DA disks using Monty's
|
||||||
@@ -2335,6 +2349,7 @@ cd-paranoia library underneath.
|
|||||||
|
|
||||||
To be completed....
|
To be completed....
|
||||||
|
|
||||||
|
@node libcdio_paranoia
|
||||||
@subsection @samp{libcdio_paranoia}
|
@subsection @samp{libcdio_paranoia}
|
||||||
|
|
||||||
This library is intended to give access Monty's cd-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.
|
the part dealing with CD-DA reading.
|
||||||
|
|
||||||
To be completed....
|
To be completed....
|
||||||
|
|
||||||
|
@node libiso9660
|
||||||
@subsection @samp{libiso9660}
|
@subsection @samp{libiso9660}
|
||||||
|
|
||||||
This library is intended to give access and manipulate a ISO-9600 file
|
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....
|
To be completed....
|
||||||
|
|
||||||
|
@node libudf
|
||||||
@subsection @samp{libudf}
|
@subsection @samp{libudf}
|
||||||
|
|
||||||
This library is intended to give access and manipulate a UDF file
|
This library is intended to give access and manipulate a UDF file
|
||||||
@@ -2359,13 +2377,23 @@ image.
|
|||||||
|
|
||||||
To be completed....
|
To be completed....
|
||||||
|
|
||||||
|
@node Programming Conventions
|
||||||
|
@section Programming Conventions
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Coding Conventions::
|
||||||
|
* Namespace Conventions::
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
@node Coding Conventions
|
||||||
@subsection Coding Conventions
|
@subsection Coding Conventions
|
||||||
|
|
||||||
In @value{libcdio} there are a number of conventions used. If you
|
In @value{libcdio} there are a number of conventions used. If you
|
||||||
understand some of these conventions it may facilitate understanding
|
understand some of these conventions it may facilitate understanding
|
||||||
the code a little.
|
the code a little.
|
||||||
|
|
||||||
@subsubsection namespace names
|
@node Namespace Conventions
|
||||||
|
@subsection Namespace Conventions
|
||||||
|
|
||||||
For the most part, the visible external @value{libcdio} names follow
|
For the most part, the visible external @value{libcdio} names follow
|
||||||
conventions so as not to be confused with other applications or
|
conventions so as not to be confused with other applications or
|
||||||
|
|||||||
Reference in New Issue
Block a user