Improve cdrdao grammar. More on SVCD. Minor index and other corrections.

Probably the last lookover before the 0.72 release.
This commit is contained in:
rocky
2005-01-31 09:22:35 +00:00
parent 6796ed982a
commit 6c50829f71
2 changed files with 75 additions and 67 deletions

View File

@@ -188,7 +188,7 @@ Media Catalog Number. A identification number on an audio CD. Also
called a UPC. Another identification number is ISRC. called a UPC. Another identification number is ISRC.
@item MMC @item MMC
@cindex MMC @cindex MMC (Multimedia Commands)
MMC (Multimedia Commands). A SCSI programming specification made by MMC (Multimedia Commands). A SCSI programming specification made by
the SCSI committee T10 organization @url{http://www.t10.org/}. MMC the SCSI committee T10 organization @url{http://www.t10.org/}. MMC
@@ -234,12 +234,6 @@ Yet another way of issuing MMC commands for accessing a CD-ROM. As
with MMC or ASPI, the CD-ROM doesn't necessarily have to be a with MMC or ASPI, the CD-ROM doesn't necessarily have to be a
SCSI-attached drive. See also @acronym{MMC} and @acronym{ASPI}. SCSI-attached drive. See also @acronym{MMC} and @acronym{ASPI}.
@item SPTI
@cindex SPTI
SCSI Pass Through Interface. See SCSI Pass Through Interface
@item Session @item Session
A fully readable complete recording that contains one or more tracks A fully readable complete recording that contains one or more tracks
@@ -248,16 +242,28 @@ of computer data or audio on a CD.
@item SVCD @item SVCD
@cindex Super VCD (SVCD) @cindex Super VCD (SVCD)
Super @acronym{VCD} @uref{http://www.dvdrhelp.com/svcd} Super @acronym{VCD}
An improvement of Video CD 2.0 specification which includes most
notably a switch from @acronym{MPEG}-1 (constant bit rate encoding) to
@acronym{MPEG}-2 (variable bit rate encoding) for the video stream.
Also added was higher video-stream resolution, up to 4 overlay
graphics and text (@dfn{OGT}) sub-channels for user switchable
subtitle displaying, closed caption text, and command lists for
controlling the @acronym{SVCD} virtual machine.
See @uref{http://www.dvdrhelp.com/svcd}
@item TOC @item TOC
@cindex TOC @cindex TOC (CD Table of Contents)
Table of Contents. The TOC contains the starting track number, last (Compact Disc) Table of Contents. The TOC contains the starting track
track number individual track starting time, format of track: CDDA or number, last track number individual track starting time, and some
CDROM. Every CD must have at least 1 TOC, the first TOC is always track flags (copy protection, linear audio preemphasis, track format:
recorded at the start of the CD (lead-in area). A multi-session CD CDDA or data). Every CD must have at least 1 TOC, the first TOC is
may have several TOCs. always recorded at the start of the CD (lead-in area). A
multi-session CD may have several TOCs.
@item Track @item Track
@cindex track @cindex track

View File

@@ -46,7 +46,7 @@ development.''
@titlepage @titlepage
@title GNU libcdio library @title GNU libcdio library
@subtitle $Id: libcdio.texi,v 1.35 2005/01/29 20:54:20 rocky Exp $ @subtitle $Id: libcdio.texi,v 1.36 2005/01/31 09:22:35 rocky Exp $
@author Rocky Bernstein et al. @author Rocky Bernstein et al.
@page @page
@@ -669,7 +669,9 @@ format.
@subsection CDRDAO Grammar @subsection CDRDAO Grammar
Here is a list of lexical tokens taken from the cdrdao grammar. Below are the lexical tokens and grammar for a cdrdao TOC. It was
taken from the cdrdao's pacct grammar; the token and nonterminal names
are the same.
@example @example
#lexclass START #lexclass START
@@ -679,7 +681,6 @@ Here is a list of lexical tokens taken from the cdrdao grammar.
#token "\n" #token "\n"
#token BeginString "\"" #token BeginString "\""
#token Integer "[0-9]+" #token Integer "[0-9]+"
#token Index "INDEX"
#tokclass AudioFile @{ "AUDIOFILE" "FILE" @} #tokclass AudioFile @{ "AUDIOFILE" "FILE" @}
#lexclass STRING #lexclass STRING
@@ -693,73 +694,73 @@ Here is a list of lexical tokens taken from the cdrdao grammar.
@example @example
toc ::= ( "CATALOG" string | tocType )* @{ cdTextGlobal @} ( track )+ Eof <toc> ::= ( "CATALOG" <string> | <tocType> )* @{ <cdTextGlobal> @}
( <track> )+ Eof
track ::= "TRACK" trackMode <track> ::= "TRACK" <trackMode>
@{ subChannelMode @} @{ <subChannelMode> @}
( "ISRC" string | @{ "NO" @} "COPY" | @{ "NO" @} "PRE_EMPHASIS" ( "ISRC" <string> | @{ "NO" @} "COPY" | @{ "NO" @} "PRE_EMPHASIS"
| "TWO_CHANNEL_AUDIO" | "FOUR_CHANNEL_AUDIO" )* | "TWO_CHANNEL_AUDIO" | "FOUR_CHANNEL_AUDIO" )*
@{ cdTextTrack @} @{ <cdTextTrack> @}
@{ "PREGAP" msf @} @{ "PREGAP" <msf> @}
( subTrack | "START" | "END" )+ ( <subTrack> | "START" | "END" )+
( Index msf )* ( "INDEX" <msf> )*
subTrack ::= <subTrack> ::=
( AudioFile string @{ "SWAP" @} @{ "#" sLong @} samples AudioFile <string> @{ "SWAP" @} @{ "#" <sLong> @} <samples>
| "DATAFILE" string @{ "#" sLong @{ dataLength @} @} | "DATAFILE" <string> @{ "#" <sLong> @{ <dataLength> @} @}
| "FIFO" string dataLength | "FIFO" <string> <dataLength>
| "SILENCE" samples | "SILENCE" <samples>
| "ZERO" @{ dataMode @} @{ subChannelMode @} dataLength | "ZERO" @{ dataMode @} @{ <subChannelMode> @} <dataLength>
)
string ::= BeginString ( ( String | StringQuote | StringOctal ) )+
<string> ::= BeginString ( String | StringQuote | StringOctal )+
EndString EndString
stringEmpty ::= BeginString ( ( String | StringQuote | StringOctal ) )* <stringEmpty> ::= BeginString ( String | StringQuote | StringOctal )*
EndString EndString
uLong ::= Integer <uLong> ::= Integer
sLong ::= Integer <sLong> ::= Integer
msf ::= Integer ":" Integer ":" Integer <msf> ::= Integer ":" Integer ":" Integer
samples ::= ( msf | uLong ) <samples> ::= <msf> | <uLong>
dataLength ::= ( msf | uLong ) <dataLength> ::= <msf> | <uLong>
dataMode ::= ( "AUDIO" | "MODE0" | "MODE1" | "MODE1_RAW" | "MODE2" <dataMode> ::= "AUDIO" | "MODE0" | "MODE1" | "MODE1_RAW" | "MODE2"
| "MODE2_RAW" | "MODE2_FORM1" | "MODE2_FORM2" | "MODE2_FORM_MIX" ) | "MODE2_RAW" | "MODE2_FORM1" | "MODE2_FORM2" | "MODE2_FORM_MIX"
trackMode ::= ( "AUDIO" | "MODE1" | "MODE1_RAW" | "MODE2" <trackMode> ::= "AUDIO" | "MODE1" | "MODE1_RAW" | "MODE2"
| "MODE2_RAW" | "MODE2_FORM1" | "MODE2_FORM2" | "MODE2_FORM_MIX" ) | "MODE2_RAW" | "MODE2_FORM1" | "MODE2_FORM2" | "MODE2_FORM_MIX"
subChannelMode ::= ( "RW" | "RW_RAW" ) <subChannelMode> ::= "RW" | "RW_RAW"
tocType ::= ( "CD_DA" | "CD_ROM" | "CD_ROM_XA" | "CD_I" ) <tocType> ::= "CD_DA" | "CD_ROM" | "CD_ROM_XA" | "CD_I"
packType ::= ( "TITLE" | "PERFORMER" | "SONGWRITER" | "COMPOSER" | "ARRANGER" <packType> ::= "TITLE" | "PERFORMER" | "SONGWRITER" | "COMPOSER" | "ARRANGER"
| "MESSAGE" | "DISC_ID" | "GENRE" | "TOC_INFO1" | "TOC_INFO2" | "MESSAGE" | "DISC_ID" | "GENRE" | "TOC_INFO1" | "TOC_INFO2"
| "RESERVED1" | "RESERVED2" | "RESERVED3" | "RESERVED4" | "UPC_EAN" | | "RESERVED1" | "RESERVED2" | "RESERVED3" | "RESERVED4" | "UPC_EAN" |
"ISRC" | "SIZE_INFO" ) "ISRC" | "SIZE_INFO"
binaryData ::= "\@{" <binaryData> ::= "@{"
@{ Integer ( "," Integer )* @} @{ Integer ( "," Integer )* @}
"\@}" "@}"
cdTextItem ::= packType ( stringEmpty | binaryData ) <cdTextItem> ::= <packType> ( <stringEmpty> | <binaryData> )
cdTextBlock ::= "LANGUAGE" Integer "\@{" ( cdTextItem )* "\@}" <cdTextBlock> ::= "LANGUAGE" Integer "@{" ( <cdTextItem> )* "@}"
<cdTextLanguageMap> ::=
cdTextLanguageMap ::= "LANGUAGE_MAP" "@{"
LanguageMap "\@{"
( Integer ":" ( Integer | "EN" ) )+ ( Integer ":" ( Integer | "EN" ) )+
"\@}" "@}"
cdTextTrack ::= "CD_TEXT" "\@{" ( cdTextBlock )* "\@}" <cdTextTrack> ::= "CD_TEXT" "@{" ( <cdTextBlock> )* "@}"
cdTextGlobal ::= "CD_TEXT" "\@{" @{ cdTextLanguageMap @} ( cdTextBlock )* "\@}" <cdTextGlobal> ::= "CD_TEXT" "@{" @{ <cdTextLanguageMap> @} ( <cdTextBlock> )* "@}"
@end example @end example
@@ -1825,9 +1826,9 @@ bit misleading because a drive can understand ``SCSI MMC'' commands
but not use a SCSI interface. In fact there are drivers to but not use a SCSI interface. In fact there are drivers to
``encapsulate'' non-SCSI drive or a non-MMC-compliant drive and make ``encapsulate'' non-SCSI drive or a non-MMC-compliant drive and make
it act like a MMC drive. I believe that many OS SCSI ``pass-through'' it act like a MMC drive. I believe that many OS SCSI ``pass-through''
mechanisms do the same thing. mechanisms do roughly the same thing.
The name ``SCSI MMC'' is no doubt do to the fact that these commands The name ``SCSI MMC'' is no doubt due to the fact that these commands
grew out of the SCSI command set and thus were bundled in them. grew out of the SCSI command set and thus were bundled in them.
For clarity and precision we will use the term ``MMC'' rather than For clarity and precision we will use the term ``MMC'' rather than
@@ -1849,17 +1850,18 @@ standards is the variation in the commands themselves and there are
perhaps two or three ways to do many of the basic commands like read a perhaps two or three ways to do many of the basic commands like read a
CD frame. CD frame.
There seems to be a fascination in the MMC specification world with There seems to be a fascination with the number of bytes a command
the number of bytes a command takes. (Size matters?) So often the name takes in the MMC-specification world. (Size matters?) So often the
of an operation will have a suffix with the number of bytes of the name of an operation will have a suffix with the number of bytes of
command (actually in MMC jargon this is called a ``cdb'' the command (actually in MMC jargon this is called a ``cdb''
@cindex cdb (Command Descriptor Buffer) @cindex cdb (Command Descriptor Buffer)
or command descriptor buffer). So for example there is a 6-byte ``MODE or command descriptor buffer). So for example there is a 6-byte ``MODE
SELECT'' often called ``MODE SELECT 6'' and a 10-byte ``MODE SELECT'' SELECT'' often called ``MODE SELECT 6'' and a 10-byte ``MODE SELECT''
sometimes called ``MODE SELECT 10''. Presumably the 6-byte command often called ``MODE SELECT 10''. Presumably the 6-byte command came
came first and it was discovered that there was some deficiency first and it was discovered that there was some deficiency causing the
causing the longer command. In @value{libcdio} often in the later or longer command. In @value{libcdio} where there are two formats we add
more common name we drop the size suffix. the suffix in the name, e.g. @code{CDIO_MMC_GPCMD_MODE_SELECT_6} or
@code{CDIO_MMC_GPCMD_MODE_SELECT_10}.
If the fascination and emphasis in the MMC specifications of cdb size If the fascination and emphasis in the MMC specifications of cdb size
is a bit odd, equally so is the fact that this too often has bled is a bit odd, equally so is the fact that this too often has bled