More verbiage. Alas not on how to use *this* package, but we are

getting there if by virtue of not being able to postpone it too much more.
This commit is contained in:
rocky
2003-07-30 02:05:22 +00:00
parent a03fe0aa02
commit 303c06074f

View File

@@ -31,7 +31,7 @@ development.''
@titlepage @titlepage
@title GNU libcdio library @title GNU libcdio library
@subtitle $Id: libcdio.texi,v 1.2 2003/07/28 10:46:24 rocky Exp $ @subtitle $Id: libcdio.texi,v 1.3 2003/07/30 02:05:22 rocky Exp $
@author Rocky Bernstein et al. @author Rocky Bernstein et al.
@page @page
@@ -67,6 +67,7 @@ Copyright (C) 2003 Herbert Valerio Riedel and Rocky Bernstein
* History:: How this came about * History:: How this came about
* Purpose:: Why this library? * Purpose:: Why this library?
* CD Formats:: A tour through the CD-specification spectrum * CD Formats:: A tour through the CD-specification spectrum
* CD Terms:: Limitations and terminology used in CD's and libcdio
* How to use:: Okay enough babble, lemme at the library! * How to use:: Okay enough babble, lemme at the library!
Indices Indices
@@ -181,25 +182,25 @@ to by the color of the cover on the specification.
@node Red Book @node Red Book
@section Red Book @section Red Book
The first type of CD that was produced was the Compact Disc The first type of CD that was produced was the Compact Disc Digital
Digital Audio (CD-DA) or just plain "audio CD". The specification for Audio (CD-DA) or just plain ``audio CD''. The specification is
that is covered in what is called the Red Book. Music CD's are commonly called the ``Red Book''. Music CD's are recorded in this
recorded in this format which basically allows for around 74 minutes format which basically allows for around 74 minutes of audio per disc
of audio per disc and for that information to be split up into and for that information to be split up into tracks. Tracks are broken
tracks. Tracks are broken up into "sectors" and each sector contains up into "sectors" and each sector contains 2,352 bytes. To play one
2,352 bytes. To play one 44.1 kHz CD-DA sampled audio second, 75 44.1 kHz CD-DA sampled audio second, 75 sectors are used.
sectors are used.
In @value{libcdio} when you you want to read an audio sector, you call the In @value{libcdio} when you you want to read an audio sector, you call the
routine @code{cdio_read_audio_sector()}. routine @code{cdio_read_audio_sector()}.
@node Yellow Book @node Yellow Book
@section Yellow Book @section Yellow Book
The CD-ROM specification or "Yellow Book" followed a few years later The CD-ROM specification or the ``Yellow Book'' followed a few years later
and describes the extension of CD's to store computer data, and describes the extension of CD's to store computer data,
i.e. CD-ROM (Compact Disk Read Only Memory). i.e. CD-ROM (Compact Disk Read Only Memory).
The Yellow book CD standard defines two modes: Mode1 and Mode1. The specification in the Yellow Book defines two modes: Mode1 and
Mode2.
@menu @menu
* Mode1:: Mode 1 Format * Mode1:: Mode 1 Format
@@ -207,16 +208,16 @@ The Yellow book CD standard defines two modes: Mode1 and Mode1.
@end menu @end menu
@subsection ISO-9660 @subsection ISO-9660
The Yellow Book does not actually specify how data is to be stored on Nowhere in the Yellow Book ist specified how data is to be stored on a
or retrieved from a CD-ROM. It was feared that many different CD-ROM. It was feared that different companies would implement
companies would implement proprietary data storage formats using this proprietary data storage formats using this specification, resulting
specification, resulting in many different incompatible data CDs. To in incompatible data CDs. To prevent this, representatives of major
prevent this, representatives of major manufacturers met at the High manufacturers met at the High Sierra Hotel and Casino in Lake Tahoe,
Sierra Hotel and Casino in Lake Tahoe, NV, in 1985, to define a NV, in 1985, to define a standard for storing data on CDs. This format
standard for storing data on CDs. This format was nicknamed High was nicknamed High Sierra Format. In a slightly modified form it was
Sierra Format. In a slightly modified form it was later adopted as ISO later adopted as ISO the ISO 9660 standard. This standard is further
the ISO 9660 standard. This standard is further broken down into broken down into 3 "levels", the higher the level, the more
3 "levels", the higher the level, the more permissive. permissive.
@subsubsection Level1 @subsubsection Level1
Level 1 ISO 9660 defines names in the 8+3 convention so familiar to Level 1 ISO 9660 defines names in the 8+3 convention so familiar to
@@ -266,27 +267,96 @@ example, graphics and video can use this format. But in contrast to
the Red book standard, different modes can be mixed together; this is the Red book standard, different modes can be mixed together; this is
the basis for the extensions to the original data CD standards known the basis for the extensions to the original data CD standards known
as CD-ROM Extended Architecture, or CD-ROM XA. CD-ROM XA formats as CD-ROM Extended Architecture, or CD-ROM XA. CD-ROM XA formats
currently in use are CD-I Bridge formats, Photo CD and VideoCD plus currently in use are CD-I Bridge formats, Photo CD and Video CD plus
Sony's Playstation. Sony's Playstation.
@node White Book @node White Book
@section White Book @section White Book
The White Book, finalized in 1993, defines the VideoCD specification The White Book was released by Sony, Philips, Matsushita, and JVC
The White Book is also known as Digital Video (DV). A VideoCD disc in 1993, defines the Video CD specification. The White Book
contains one data track recorded in CD-ROM XA Mode 2 Form 2. It is is also known as Digital Video (DV). A Video CD contains one data
always the first track on the disc (Track 1). The ISO 9660 file track recorded in CD-ROM XA Mode 2 Form 2. It is always the first
structure and a CD-i application program are recorded in this track, track on the disc (Track 1). The ISO-9660 file structure and a CD-i
as well as the VideoCD Information Area which gives general application program are recorded in this track, as well as the Video
information about the VideoCD disc. After the data track, video is CD Information Area which gives general information about the Video
written in one or more subsequent tracks within the same Compact Disc. After the data track, video is written in one or more
session. These tracks are also recorded in Mode 2 Form 2. subsequent tracks within the same session. These tracks are also
recorded in Mode 2 Form 2.
In @value{libcdio} when you you want to read a mode2 format 2 audio In @value{libcdio} when you you want to read a mode2 format 2 audio
sector you call the routine @code{cdio_read_mode2_sector()}. sector you call the routine @code{cdio_read_mode2_sector()}.
@node CD Terms
@chapter CD Terminology
@section tracks --- disc subdivisions
In this section we describe CD properties and terms that we make use
of in @value{libcdio}.
A CD is formated into a number of @emph{tracks}, and a CD can hold at
most 99 such tracks. Between the tracks CD specifications require a
``2 second'' in gap (called a @emph{lead-in} gap. This is unused space
with no ``data'' similar to the space between tracks on an old
phonograph. The word ``second'' here really refers to a measure of
space and not really necessarily an amount of time. However in the
special case that the CD encodes an audio CD or CD-DA, the amount of
time to play a gap of this size will take 2 seconds.
The beginning (or inner edge) of the CD is supposed to have a ``2
second'' lead-in gap and there is supposed to be another ``2 second''
@emph{Lead-out} gap at the end (or outer edge) of the CD.
People have discovered that they can put useful data in the various
gaps and their equipment can read this, violating the standards but
allowing a CD to store more data.
@section block addressing (MSF, LSN, LBA)
A track is broken up into a number of 2352-byte @emph{blocks} which we
sometimes call @emph{sectors}. Whereas tracks have to have a gap
between them, a block or sector does not.
One can addressing a block in one of three formats. The oldest format
is by it's minute/second/frame number, also referred to as @emph{MSF}
and written in time-like format MM:SS:FF (e.g. 30:01:40). In this
notation there are 75 ``frames'' in a ``second,'' and the familiar (if
awkward) 60 seconds in a minute. @emph{Frame} here is what we called a
@emph{block} above. The CD specification defines ``frame'' to be
@emph{another} unit which makes up a block. Very confusing.
Even more confusing is is using this time-like notation for an address
or for a length. Too often people confuse the MSF notation this with
an amount of time. A ``second'' (or 75 blocks) in this notation is
only a second of playing time for something encoded as CD-DA. It does
@emph{not} necessarily represent the amount time that it will take to
play a of Video CD---usually you need more blocks than this. Nor does
it represent the amount of data used to play a second of an
MP3---usually you need fewer blocks than this. It is also not the
amount of time your CD-ROM will take to read a ``second'' of data off
a Compact Disc: for example a 12x CD player will read 12x75 2352-byte
blocks in a one second of time.
Furthermore when programming, it is generally more cumbersome to use
an MSF rather than a LBA or LSN described below, since subtraction of
two MSF's has the awkwardness akin to subtraction using Roman
Numerals.
Probably the simplest way to address a block is to use its @emph{LSN}
or ``logical sector number.'' This just numbers the blocks from 0
on. The Lead-in and Lead-out gaps described above have LSNs just like
any other space on a CD. The last unit of address is a @emph{LBA}. It
is the same as a LSN but the 150 blocks assocated with the initial
lead-in is are not counted. So to convert a LBA into an LSN you just
add 150. Why the distinction between LBA and LSN, I don't know.
@emph{Finish. describe TOC, 0xAA --- LEADOUT}.
@node How to use @node How to use
@chapter How to use @chapter How to use
@emph{Basically do a cdio_open, cdio_read_xxx or cdio_seek, and cdio_close.
There's a lot of complication in selecting the appropriate driver,
getting the default drive.}
@node General Index @node General Index
@unnumbered General Index @unnumbered General Index
@printindex cp @printindex cp