Updated documentation of CD-TEXT pack types 0x87 and 0x8f

This commit is contained in:
Thomas Schmitt 2011-12-08 12:46:30 +00:00
parent 0e5149d716
commit 3b0f6b742f

View File

@ -224,12 +224,8 @@ sync. libburn uses the info provided by 52h READ TRACK INFORMATION.
-------------------------------------------------------------------------------
Guided by reading libburn/* from http://icculus.org/burn
backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/
by reading mmc3r10g.pdf from http://www.t10.org/ftp/t10/drafts/mmc3/
by reading source of libcdio from http://www.gnu.org/s/libcdio
by reading tech3264.pdf from http://tech.ebu.ch/docs/tech/
and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S,
Optiarc BD RW BD-5300S,
which used in part code from http://icculus.org/burn.
For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net>
@ -410,9 +406,16 @@ Following are text packs of 18 bytes each.
(mmc5r03c.pdf 6.26.3.7.1 table 495)
-------------------------------------------------------------------------------
Guided by Leon Merten Lohse via libcdio-devel@gnu.org
by reading mmc3r10g.pdf from http://www.t10.org/ftp/t10/drafts/mmc3/
by reading tech3264.pdf from http://tech.ebu.ch/docs/tech/
by studying output of cdtext.zip from http://www.sonydadc.com/file/
by reading source of libcdio from http://www.gnu.org/s/libcdio
which quotes source of cdrecord from ftp://ftp.berlios.de/pub/cdrecord/alpha
Format of CD-TEXT packs:
The format of a text pack is explained in (mmc3r10g.pdf, appendix J).
The format of a text pack is explained in (mmc3r10g.pdf, Annex J).
Each pack consists of a 4-bytes are header, 12 byte of payload, and 2 bytes
of CRC.
@ -455,15 +458,67 @@ The CRC algorithm uses divisor 0x11021 and is known as CRC-16-CCITT.
MMC-3 says: "All bits shall be inverted."
The text packs are grouped in up to 8 blocks of at most 256 packs. Each block
is in charge for one language. Sequence numbers of each block are counted
separately. All packs of block 0 come before the packs of block 1.
The limitation of block number and sequence numbers imply that there are at
most 2048 text packs possible. (READ TOC/PMS/ATIP could retrieve 3640 packs,
as it is limited to 64 kB - 2.)
The known information about the meaning of the pack payload is incomplete.
Pack types 0x80 to 0x85 and 0x8e contain 0-terminated cleartext.
Unclear yet: 0x86 = Disc Identification
Type 0x87 seems to contain 2 binary bytes and 10 bytes of 0-terminated
cleartext.
The two binary bytes may or may not be repeated at the start of each pack.
They form a big-endian index to the following list (from libcdio source, which
learned it from cdrecord source, stating "Genre codes from Enhanced CD
Specification page 21").
0x0000 = "Not Used"
0x0001 = "Not Defined"
0x0002 = "Adult Contemporary"
0x0003 = "Alternative Rock"
0x0004 = "Childrens Music"
0x0005 = "Classical"
0x0006 = "Contemporary Christian"
0x0007 = "Country"
0x0008 = "Dance"
0x0009 = "Easy Listening"
0x000a = "Erotic"
0x000b = "Folk"
0x000c = "Gospel"
0x000d = "Hip Hop"
0x000e = "Jazz"
0x000f = "Latin"
0x0010 = "Musical"
0x0011 = "New Age"
0x0012 = "Opera"
0x0013 = "Operetta"
0x0014 = "Pop Music"
0x0015 = "Rap"
0x0016 = "Reggae"
0x0017 = "Rock Music"
0x0018 = "Rhythm & Blues"
0x0019 = "Sound Effects"
0x001a = "Spoken Word"
0x001b = "World Music"
The meaning of the cleartext part is yet unclear. Probably it shall give
a more specific description of the genre.
Type 0x8f summarizes the whole list of text packs. (Learned from libcdio.)
The payload bytes of three packs form a 36 byte record.
Unclear yet: 0x88 = Table of Content information
Unclear yet: 0x89 = Second Table of Content information
Type 0x8f summarizes the whole list of text packs of a block.
So there is one group of three 0x8f packs per block.
Nevertheless each 0x8f group tells the highest sequence number and the
language code of all blocks.
The payload bytes of three 0x8f packs form a 36 byte record.
Byte :
0 : Character code:
0x00 = ISO-8859-1
@ -475,6 +530,7 @@ The payload bytes of three packs form a 36 byte record.
1 : Number of first track
2 : Number of last track
3 : libcdio source states: "cd-text information copyright byte"
Probably 3 means "copyrighted", 0 means "not copyrighted".
4 - 19 : Pack count of the various types 0x80 to 0x8f.
Byte number N tells the count of packs of type 0x80 + (N - 4).
I.e. the first byte in this field of 16 counts packs of type 0x80.
@ -524,7 +580,7 @@ The payload bytes of three packs form a 36 byte record.
0x29 = Turkish
0x2a = Flemish
0x2b = Wallon
0x45 = Zuku
0x45 = Zulu
0x46 = Vietnamese
0x47 = Uzbek
0x48 = Urdu
@ -571,7 +627,7 @@ The payload bytes of three packs form a 36 byte record.
0x72 = Fulani
0x73 = Dari
0x74 = Churash
0x75 = Chines
0x75 = Chinese
0x76 = Burmese
0x77 = Bulgarian
0x78 = Bengali
@ -581,7 +637,7 @@ The payload bytes of three packs form a 36 byte record.
0x7c = Assamese
0x7d = Armenian
0x7e = Arabic
0x7e = Amharic
0x7f = Amharic
E.g. these three packs
42 : 8f 00 2a 00 01 01 03 00 06 05 04 05 07 06 01 02 48 65
@ -592,7 +648,7 @@ Byte :Value Meaning
0 : 01 = ASCII 7-bit
1 : 01 = first track is 1
2 : 03 = last track is 3
3 : 00 = copyright (>>> what does this mean ?)
3 : 00 = copyright (0 = public domain, 3 = copyrighted ?)
4 : 06 = 6 packs of type 0x80
5 : 05 = 5 packs of type 0x81
6 : 04 = 4 packs of type 0x82
@ -608,9 +664,9 @@ Byte :Value Meaning
19 : 03 = 3 packs of type 0x8f
20 : 2c = last sequence for block 0
This matches the sequence number of the last text pack (0x2c = 44)
21 : 00 00 00 00 00 00 00 = last sequence for block 1..7 (none)
21 : 00 00 00 00 00 00 00 = last sequence numbers for block 1..7 (none)
28 : 09 = language code for block 0: English
29 : 00 00 00 00 00 00 00 = language code for block 1..7 (none)
29 : 00 00 00 00 00 00 00 = language codes for block 1..7 (none)
----------------------------------------------------------------------------
What is known about mixed mode sessions :