Add an introduction. Make less machine-centric and more Human-centric.

Regularize terminology more, e.g. CD Text, Pack Types.
This commit is contained in:
R. Bernstein
2012-02-06 07:01:52 -05:00
parent fec1f9a1c1
commit 27b0c5ffcf
3 changed files with 68 additions and 63 deletions

26
doc/.gitignore vendored
View File

@@ -1,18 +1,18 @@
/Makefile /Makefile
/Makefile.in /Makefile.in
/libcdio.aux /*.aux
/libcdio.cp /*.cp
/libcdio.cps /*.cps
/libcdio.dvi /*.dvi
/libcdio.fn /*.fn
/libcdio.info /*.info
/libcdio.ky /*.ky
/libcdio.log /*.log
/libcdio.pdf /*.pdf
/libcdio.pg /*.pg
/libcdio.toc /*.toc
/libcdio.tp /*.tp
/libcdio.vr /*.vr
/mdate-sh /mdate-sh
/stamp-vti /stamp-vti
/texinfo.tex /texinfo.tex

View File

@@ -1,4 +1,4 @@
# Copyright (C) 2003, 2004, 2008 Rocky Bernstein <rocky@gnu.org> # Copyright (C) 2003, 2004, 2008, 2012 Rocky Bernstein <rocky@gnu.org>
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or # the Free Software Foundation, either version 3 of the License, or
@@ -20,16 +20,16 @@ reference:
-( cd ${top_srcdir} && $(MAKE) doxygen ) -( cd ${top_srcdir} && $(MAKE) doxygen )
#: Create documentation in PDF format #: Create documentation in PDF format
pdf: libcdio.pdf cd-text.pdf pdf: libcdio.pdf cd-text-foramt.pdf
#: Create documentation as a text file #: Create documentation as a text file
txt: libcdio.txt txt: libcdio.txt
#: Create documentation in PostScript format #: Create documentation in PostScript format
ps: libcdio.ps cd-text.ps ps: libcdio.ps cd-text-format.ps
#: Create documentation in HTML format #: Create documentation in HTML format
html: libcdio.html cd-text.html html: libcdio.html cd-text-format.html
%.ps.gz: %.ps %.ps.gz: %.ps
gzip -9c $< > $@ gzip -9c $< > $@
@@ -48,4 +48,4 @@ all-formats: pdf dvi txt ps html
MOSTLYCLEANFILES = \ MOSTLYCLEANFILES = \
libcdio.html libcdio.pdf libcdio.ps.gz \ libcdio.html libcdio.pdf libcdio.ps.gz \
cd-text.html cd-text.pdf cd-text.ps.gz cd-text-foramt.html cd-text-format.pdf cd-text-foramt.ps.gz

View File

@@ -6,8 +6,8 @@
@c \setleading{\textleading} @c \setleading{\textleading}
@c @end tex @c @end tex
@setfilename cd-text.info @setfilename cd-text-format.info
@settitle CD TEXT Description @settitle CD Text Description
@copying @copying
@quotation @quotation
@@ -23,7 +23,7 @@ Copyright @copyright{} 2011-2012 Thomas Schmitt @email{scdbackup@@gmx.net}.
@exampleindent 0 @exampleindent 0
@titlepage @titlepage
@title CD Text Description @title CD Text Format
@author Thomas Schmitt for libburnia-project.org @author Thomas Schmitt for libburnia-project.org
@vskip 2in plus 1filll @vskip 2in plus 1filll
@insertcopying @insertcopying
@@ -33,16 +33,19 @@ Copyright @copyright{} 2011-2012 Thomas Schmitt @email{scdbackup@@gmx.net}.
@ifnottex @ifnottex
@node Top @node Top
@top CD-Text Description @top CD Text Format
@insertcopying @insertcopying
This document describes the information available in CD Text and how
it is encoded.
@menu @menu
* Attribute Categories:: * CD Text Categories (Pack Types)::
* Text Pack Formats:: * Text Packs::
* Text Pack Contents:: * Text Pack Contents::
* TOC Pack Formats:: * TOC Pack Types::
* Block Pack Format:: * Block Pack Type::
* Sony Text File Format (Input Sheet Version 0.7T):: * Sony Text File Format (Input Sheet Version 0.7T)::
* CDRWIN Cue Sheet with CD Text:: * CDRWIN Cue Sheet with CD Text::
* List of Tables:: * List of Tables::
@@ -50,21 +53,23 @@ Copyright @copyright{} 2011-2012 Thomas Schmitt @email{scdbackup@@gmx.net}.
@end menu @end menu
@end ifnottex @end ifnottex
@node Attribute Categories @node CD Text Categories (Pack Types)
@chapter Attribute Categories @chapter CD Text Categories (Pack Types)
CD-TEXT records attributes of disc and tracks on audio CD. CD Text provides a way to give disk and track information in an audio
CD. This information is used, for example, in CD players to
provide information about the audio CD.
The attributes are grouped into blocks. Each block contains data for a The information is grouped into blocks, each one in a particular
particular language. Up to 8 blocks (or up to 8 languages) can be language. Up to 8 languages (or blocks) can be stored.
given.
There are 13 defined attribute categories, which are called Pack Types. Within a block, there are 13 categories of information, called @emph{Pack
Types}.
The attribute categories are identified by a single-byte code. The CD Text categories are identified by a single-byte code.
@xref{table:attributes}. @xref{table:categories}.
@float Table,table:attributes @float Table,table:categories
@smallexample @smallexample
0x80: Title 0x80: Title
0x81: Performers 0x81: Performers
@@ -80,28 +85,28 @@ The attribute categories are identified by a single-byte code.
0x8e: UPC/EAN code of the album and ISRC code of each track 0x8e: UPC/EAN code of the album and ISRC code of each track
0x8f: Block Packet (binary) 0x8f: Block Packet (binary)
@end smallexample @end smallexample
@caption{CD-Text Attributes} @caption{CD Text Categories}
@end float @end float
Some additional information regarding specific codes: Some additional information regarding specific pack types:
@itemize @itemize
@item Codes @kbd{0x8a} to @kbd{0x8c} are reserved. @item Pack Types @kbd{0x8a} to @kbd{0x8c} are reserved.
@item Codes @kbd{0x86},@kbd{0x87}, @kbd{0x88}, @kbd{0x89}, @kbd{0x8d} apply to the whole @item Pack Types @kbd{0x86},@kbd{0x87}, @kbd{0x88}, @kbd{0x89}, @kbd{0x8d} apply to the whole
disc, and can not be attached to individual tracks. disc, and can not be attached to individual tracks.
@item Codes @kbd{0x80}, @kbd{0x81}, @kbd{0x82}, @kbd{0x83}, @kbd{0x84}, @item Pack Types @kbd{0x80}, @kbd{0x81}, @kbd{0x82}, @kbd{0x83}, @kbd{0x84},
@kbd{0x85}, and @kbd{0x8e} have to be attributed to each @kbd{0x85}, and @kbd{0x8e} have to be attributed to each
track if they are present for the whole disc. track if they are present for the whole disc.
@item Code @kbd{0x8f} describes the overall content of a block and in part of all other blocks. @item Pack Type @kbd{0x8f} describes the overall content of a block and in part of all other blocks.
@end itemize @end itemize
The total size of a block's attribute set is restricted by the fact that The total size of a block's attribute set is restricted by the fact
it has to be stored in at most 253 records with 12 bytes of that it has to be stored in at most 253 records with 12 bytes of
payload. These records are called Text Packs. A shortcut for repeated payload. These records are called @emph{Text Packs}. A shortcut for
identical track texts is provided, so that a text that is identical to repeated identical track texts is provided, so that a text that is
the one of the previous track occupies only 2 or 4 bytes. identical to the one of the previous track occupies only 2 or 4 bytes.
@node Text Pack Formats @node Text Packs
@chapter Text Pack Formats @chapter Text Packs
Pack types @kbd{0x80} to @kbd{0x85} and @kbd{0x8e} contain a Pack types @kbd{0x80} to @kbd{0x85} and @kbd{0x8e} contain a
NUL-termintated string. If double-byte characters are used, then two NUL-termintated string. If double-byte characters are used, then two
@@ -121,9 +126,9 @@ bytes with bit 7 set to zero.
Pack type @kbd{0x87} (Genre Identification) contains 2 binary bytes Pack type @kbd{0x87} (Genre Identification) contains 2 binary bytes
followed by NUL-byte terminated text. Categories associated with followed by NUL-byte terminated text. Categories associated with
their Big-endian 16-bit value are listed in @ref{table:categories}. their Big-endian 16-bit value are listed in @ref{table:genres}.
@float Table,table:categories @float Table,table:genres
@smallexample @smallexample
0x0000: Not Used. Sony prescribes this when no genre applies 0x0000: Not Used. Sony prescribes this when no genre applies
0x0001: Not Defined 0x0001: Not Defined
@@ -175,7 +180,7 @@ sub-channel, POINT 01 to 40 (mmc5r03.pdf 4.2.3.7.4). If so, then this
seems not to apply to write type SAO, because the CUE SHEET format seems not to apply to write type SAO, because the CUE SHEET format
offers no way to express Mode-5 Q. offers no way to express Mode-5 Q.
See @ref{TOC Pack Formats} for more details about the content of pack See @ref{TOC Pack Types} for more details about the content of pack
types @kbd{0x88} and @kbd{0x89}. types @kbd{0x88} and @kbd{0x89}.
Pack type @kbd{0x8d} Sony documents says: Pack type @kbd{0x8d} Sony documents says:
@@ -209,7 +214,7 @@ See the next section for details.
The attributes are represented on CD as Text Packs in the sub-channel of The attributes are represented on CD as Text Packs in the sub-channel of
the Lead-in of the disc. The file @file{doc/cookbook.txt} of the the Lead-in of the disc. The file @file{doc/cookbook.txt} of the
@url{http://libburnia-project.org/,libburnia} distribution describes how @url{http://libburnia-project.org/,libburnia} distribution describes how
to write the CD-TEXT pack array to CD, and how to read CD-TEXT packs to write the CD Text pack array to CD, and how to read CD Text packs
from CD. from CD.
The format is explained in part in MMC-3 (@ref{mmc3r10g.pdf,, The format is explained in part in MMC-3 (@ref{mmc3r10g.pdf,,
@@ -277,8 +282,8 @@ The two binary bytes of pack type @kbd{0x87} are written to the first
@kbd{0x87} pack of a block. They may or may not be repeated at the start @kbd{0x87} pack of a block. They may or may not be repeated at the start
of the follow-up packs of type @kbd{0x87}. of the follow-up packs of type @kbd{0x87}.
@node TOC Pack Formats @node TOC Pack Types
@chapter TOC Pack Formats @chapter TOC Pack Types
The first pack of type @kbd{0x88} (Table of Contents) records in its The first pack of type @kbd{0x88} (Table of Contents) records in its
payload bytes as follows: payload bytes as follows:
@@ -345,8 +350,8 @@ two time points are stored in byte 6 to 11 of the payload. Byte 0 of the
payload seems to be a sequential counter. Byte 1 always 4? Byte 2 to 5 payload seems to be a sequential counter. Byte 1 always 4? Byte 2 to 5
always 0? always 0?
@node Block Pack Format @node Block Pack Type
@chapter Block Pack Format @chapter Block Pack Type
Pack type @kbd{0x8f} summarizes the whole list of text packs of a Pack type @kbd{0x8f} summarizes the whole list of text packs of a
block. So there is one group of three @kbd{0x8f} packs per block. block. So there is one group of three @kbd{0x8f} packs per block.
@@ -375,7 +380,7 @@ For the format of this pack type see @ref{table:block-pack}.
20 - 27 : Highest sequence byte number of blocks 0 to 7. 20 - 27 : Highest sequence byte number of blocks 0 to 7.
28 - 36 : Language code for blocks 0 to 7 (tech3264.pdf appendix 3) 28 - 36 : Language code for blocks 0 to 7 (tech3264.pdf appendix 3)
@end smallexample @end smallexample
@caption{Block Pack Format} @caption{Block Pack Type}
@end float @end float
Table @ref{table:languages} specifies the language codes that are Table @ref{table:languages} specifies the language codes that are
@@ -443,7 +448,7 @@ referred to in bytes 28-38 of @ref{table:block-pack}.
@end float @end float
Note: Not all of the language codes in @ref{table:languages} have Note: Not all of the language codes in @ref{table:languages} have
ever been seen with CD-TEXT. ever been seen with CD Text.
Using the preceding information, we can work out the following example. Using the preceding information, we can work out the following example.
@smallexample @smallexample
@@ -489,7 +494,7 @@ The information is given by text lines of the following form:
purpose specifier [whitespace] = [whitespace] content text purpose specifier [whitespace] = [whitespace] content text
[whitespace] is zero or more ASCII 32 (space) or ASCII 9 (tab) characters. [whitespace] is zero or more ASCII 32 (space) or ASCII 9 (tab) characters.
The purpose specifier tells the meaning of the content text. The purpose specifier tells the meaning of the content text.
Empty content text does not cause a CD-TEXT attribute to be attached. Empty content text does not cause a CD Text attribute to be attached.
The following purpose specifiers apply to the session as a whole: The following purpose specifiers apply to the session as a whole:
@@ -527,9 +532,9 @@ The following purpose specifiers apply to particular tracks:
ISRC NN = Content of pack type 0x8e ISRC NN = Content of pack type 0x8e
@end smallexample @end smallexample
The following purpose specifiers have no effect on CD-TEXT: The following purpose specifiers have no effect on CD Text:
@smallexample @smallexample
Remarks = Comments with no influence on CD-TEXT Remarks = Comments with no influence on CD Text
Disc Information NN = Supplementary information for use by record companies. Disc Information NN = Supplementary information for use by record companies.
ISO-8859-1 encoded. NN ranges from 01 to 04. ISO-8859-1 encoded. NN ranges from 01 to 04.
Input Sheet Version = "0.7T" Input Sheet Version = "0.7T"
@@ -616,7 +621,7 @@ start addresses (@kbd{INDEX}). The rules for CDRWIN cue sheet files are
described at @url{http://digitalx.org/cue-sheet/syntax/} [4]. described at @url{http://digitalx.org/cue-sheet/syntax/} [4].
There are three more text attributes mentioned in the cdrecord manual There are three more text attributes mentioned in the cdrecord manual
page for defining the corresponding CD-TEXT attributes: @kbd{ARRANGER}, page for defining the corresponding CD Text attributes: @kbd{ARRANGER},
@kbd{COMPOSER}, @kbd{MESSAGE}. @kbd{COMPOSER}, @kbd{MESSAGE}.
An Example of a CDRWIN cue sheet file: An Example of a CDRWIN cue sheet file: