Documented CD-TEXT pack type 0x8f
This commit is contained in:
parent
d2d25cc88e
commit
6af8ff807b
@ -4,7 +4,7 @@ Note: This is about how libburn operates optical drives. Not about how to
|
|||||||
operate libburn. The libburn API is described in libburn/libburn.h
|
operate libburn. The libburn API is described in libburn/libburn.h
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
libburnia-project.org Optical Media Rotisserie Recipes as of January 2010
|
libburnia-project.org Optical Media Rotisserie Recipes as of December 2011
|
||||||
|
|
||||||
Content:
|
Content:
|
||||||
- TAO Multi-Session CD Cookbook (CD-R, CD-RW)
|
- TAO Multi-Session CD Cookbook (CD-R, CD-RW)
|
||||||
@ -20,7 +20,6 @@ Content:
|
|||||||
Guided by reading mmc-r10a.pdf , O.8 "Write a Track"
|
Guided by reading mmc-r10a.pdf , O.8 "Write a Track"
|
||||||
from http://www.t10.org/ftp/t10/drafts/mmc/
|
from http://www.t10.org/ftp/t10/drafts/mmc/
|
||||||
backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/
|
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 spc3r23.pdf from http://www.t10.org/ftp/t10/drafts/spc3/
|
by reading spc3r23.pdf from http://www.t10.org/ftp/t10/drafts/spc3/
|
||||||
by reading libburn/* from http://icculus.org/burn
|
by reading libburn/* from http://icculus.org/burn
|
||||||
and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S
|
and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S
|
||||||
@ -225,7 +224,11 @@ sync. libburn uses the info provided by 52h READ TRACK INFORMATION.
|
|||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Guided by reading libburn/* from http://icculus.org/burn
|
Guided by reading libburn/* from http://icculus.org/burn
|
||||||
backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/
|
backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/
|
||||||
and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S
|
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.
|
which used in part code from http://icculus.org/burn.
|
||||||
|
|
||||||
For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net>
|
For libburnia-project.org by Thomas Schmitt <scdbackup@gmx.net>
|
||||||
@ -406,10 +409,12 @@ of which the first two bytes give the number of following bytes as big-endian
|
|||||||
Following are text packs of 18 bytes each.
|
Following are text packs of 18 bytes each.
|
||||||
(mmc5r03c.pdf 6.26.3.7.1 table 495)
|
(mmc5r03c.pdf 6.26.3.7.1 table 495)
|
||||||
|
|
||||||
The format of a text pack is explained in (mmc3r10g.pdf, appendix J).
|
-------------------------------------------------------------------------------
|
||||||
|
Format of CD-TEXT packs:
|
||||||
|
|
||||||
Each pack of a 4-bytes are header, 12 byte pieces of 0-terminated texts
|
The format of a text pack is explained in (mmc3r10g.pdf, appendix J).
|
||||||
or binary data, and 2 bytes of CRC.
|
Each pack consists of a 4-bytes are header, 12 byte of payload, and 2 bytes
|
||||||
|
of CRC.
|
||||||
|
|
||||||
The first byte of each pack tells the pack type (text meaning):
|
The first byte of each pack tells the pack type (text meaning):
|
||||||
0x80 = Title
|
0x80 = Title
|
||||||
@ -422,6 +427,7 @@ The first byte of each pack tells the pack type (text meaning):
|
|||||||
0x87 = text-and-binary: Genre Identification
|
0x87 = text-and-binary: Genre Identification
|
||||||
0x88 = binary: Table of Content information
|
0x88 = binary: Table of Content information
|
||||||
0x89 = binary: Second Table of Content information
|
0x89 = binary: Second Table of Content information
|
||||||
|
(0x8a to 0x8c are reserved. 0x8d is "Reserved for content provider only".)
|
||||||
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 = binary: Size Information of the Block
|
0x8f = binary: Size Information of the Block
|
||||||
|
|
||||||
@ -440,14 +446,172 @@ It consists of three bit fields:
|
|||||||
the current text inherited from the previous pack, or
|
the current text inherited from the previous pack, or
|
||||||
15 if the current text started before the previous pack.
|
15 if the current text started before the previous pack.
|
||||||
|
|
||||||
|
The 12 payload bytes contain pieces of 0-terminated texts or binary data.
|
||||||
A text may span over several packs. Unused characters in a pack are used for
|
A text may span over several packs. Unused characters in a pack are used for
|
||||||
the next text of the same pack type. If no text of the same type follows,
|
the next text of the same pack type. If no text of the same type follows,
|
||||||
then the remaining text bytes are set to 0.
|
then the remaining text bytes are set to 0.
|
||||||
|
|
||||||
The CRC algorithm is known as CRC-16-CCITT with divisor 0x11021.
|
The CRC algorithm uses divisor 0x11021 and is known as CRC-16-CCITT.
|
||||||
MMC-3 says: "All bits shall be inverted."
|
MMC-3 says: "All bits shall be inverted."
|
||||||
|
|
||||||
|
|
||||||
|
The known information about the meaning of the pack payload is incomplete.
|
||||||
|
|
||||||
|
Pack types 0x80 to 0x85 and 0x8e contain 0-terminated cleartext.
|
||||||
|
|
||||||
|
Type 0x87 seems to contain 2 binary bytes and 10 bytes of 0-terminated
|
||||||
|
cleartext.
|
||||||
|
|
||||||
|
Type 0x8f summarizes the whole list of text packs. (Learned from libcdio.)
|
||||||
|
The payload bytes of three packs form a 36 byte record.
|
||||||
|
Byte :
|
||||||
|
0 : Character code:
|
||||||
|
0x00 = ISO-8859-1
|
||||||
|
0x01 = 7 bit ASCII
|
||||||
|
0x80 = Kanji (japanese)
|
||||||
|
0x81 = Korean
|
||||||
|
0x82 = Mandarin (chinese)
|
||||||
|
0xff = libcdio source states: "everything else"
|
||||||
|
1 : Number of first track
|
||||||
|
2 : Number of last track
|
||||||
|
3 : libcdio source states: "cd-text information copyright byte"
|
||||||
|
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.
|
||||||
|
20 - 27 : Highest sequence byte number of blocks 0 to 7.
|
||||||
|
28 - 36 : Language code for blocks 0 to 7 (tech3264.pdf appendix 3)
|
||||||
|
0x00 = Unknown
|
||||||
|
0x01 = Albanian
|
||||||
|
0x02 = Breton
|
||||||
|
0x03 = Catalan
|
||||||
|
0x04 = Croatian
|
||||||
|
0x05 = Welsh
|
||||||
|
0x06 = Czech
|
||||||
|
0x07 = Danish
|
||||||
|
0x08 = German
|
||||||
|
0x09 = English
|
||||||
|
0x0a = Spanish
|
||||||
|
0x0b = Esperanto
|
||||||
|
0x0c = Estonian
|
||||||
|
0x0d = Basque
|
||||||
|
0x0e = Faroese
|
||||||
|
0x0f = French
|
||||||
|
0x10 = Frisian
|
||||||
|
0x11 = Irish
|
||||||
|
0x12 = Gaelic
|
||||||
|
0x13 = Galician
|
||||||
|
0x14 = Icelandic
|
||||||
|
0x15 = Italian
|
||||||
|
0x16 = Lappish
|
||||||
|
0x17 = Latin
|
||||||
|
0x18 = Latvian
|
||||||
|
0x19 = Luxembourgian
|
||||||
|
0x1a = Lithuanian
|
||||||
|
0x1b = Hungarian
|
||||||
|
0x1c = Maltese
|
||||||
|
0x1e = Norwegian
|
||||||
|
0x1d = Dutch
|
||||||
|
0x1f = Occitan
|
||||||
|
0x20 = Polish
|
||||||
|
0x21 = Portuguese
|
||||||
|
0x22 = Romanian
|
||||||
|
0x23 = Romansh
|
||||||
|
0x24 = Serbian
|
||||||
|
0x25 = Slovak
|
||||||
|
0x26 = Slovenian
|
||||||
|
0x27 = Finnish
|
||||||
|
0x28 = Swedish
|
||||||
|
0x29 = Turkish
|
||||||
|
0x2a = Flemish
|
||||||
|
0x2b = Wallon
|
||||||
|
0x45 = Zuku
|
||||||
|
0x46 = Vietnamese
|
||||||
|
0x47 = Uzbek
|
||||||
|
0x48 = Urdu
|
||||||
|
0x49 = Ukrainian
|
||||||
|
0x4a = Thai
|
||||||
|
0x4b = Telugu
|
||||||
|
0x4c = Tatar
|
||||||
|
0x4d = Tamil
|
||||||
|
0x4e = Tadzhik
|
||||||
|
0x4f = Swahili
|
||||||
|
0x50 = Sranan Tongo
|
||||||
|
0x51 = Somali
|
||||||
|
0x52 = Sinhalese
|
||||||
|
0x53 = Shona
|
||||||
|
0x54 = Serbo-croat
|
||||||
|
0x55 = Ruthenian
|
||||||
|
0x56 = Russian
|
||||||
|
0x57 = Quechua
|
||||||
|
0x58 = Pushtu
|
||||||
|
0x59 = Punjabi
|
||||||
|
0x5a = Persian
|
||||||
|
0x5b = Papamiento
|
||||||
|
0x5c = Oriya
|
||||||
|
0x5d = Nepali
|
||||||
|
0x5e = Ndebele
|
||||||
|
0x60 = Moldavian
|
||||||
|
0x61 = Malaysian
|
||||||
|
0x62 = Malagasay
|
||||||
|
0x63 = Macedonian
|
||||||
|
0x64 = Laotian
|
||||||
|
0x65 = Korean
|
||||||
|
0x66 = Khmer
|
||||||
|
0x67 = Kazakh
|
||||||
|
0x68 = Kannada
|
||||||
|
0x69 = Japanese
|
||||||
|
0x6a = Indonesian
|
||||||
|
0x6b = Hindi
|
||||||
|
0x6c = Hebrew
|
||||||
|
0x6d = Hausa
|
||||||
|
0x6e = Gurani
|
||||||
|
0x6f = Gujurati
|
||||||
|
0x70 = Greek
|
||||||
|
0x71 = Georgian
|
||||||
|
0x72 = Fulani
|
||||||
|
0x73 = Dari
|
||||||
|
0x74 = Churash
|
||||||
|
0x75 = Chines
|
||||||
|
0x76 = Burmese
|
||||||
|
0x77 = Bulgarian
|
||||||
|
0x78 = Bengali
|
||||||
|
0x79 = Bielorussian
|
||||||
|
0x7a = Bambora
|
||||||
|
0x7b = Azerbaijani
|
||||||
|
0x7c = Assamese
|
||||||
|
0x7d = Armenian
|
||||||
|
0x7e = Arabic
|
||||||
|
0x7e = 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
|
||||||
|
43 : 8f 01 2b 00 00 00 00 00 00 00 06 03 2c 00 00 00 c0 20
|
||||||
|
44 : 8f 02 2c 00 00 00 00 00 09 00 00 00 00 00 00 00 11 45
|
||||||
|
decode to
|
||||||
|
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 ?)
|
||||||
|
4 : 06 = 6 packs of type 0x80
|
||||||
|
5 : 05 = 5 packs of type 0x81
|
||||||
|
6 : 04 = 4 packs of type 0x82
|
||||||
|
7 : 05 = 5 packs of type 0x83
|
||||||
|
8 : 07 = 7 packs of type 0x84
|
||||||
|
9 : 06 = 6 packs of type 0x85
|
||||||
|
10 : 01 = 1 pack of type 0x86
|
||||||
|
11 : 02 = 2 packs of type 0x87
|
||||||
|
12 : 00 = 0 packs of type 0x88
|
||||||
|
13 : 00 = 0 packs of type 0x89
|
||||||
|
14 : 00 00 00 00 = 0 packs of types 0x8a to 0x8d
|
||||||
|
18 : 06 = 6 packs of type 0x8e
|
||||||
|
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)
|
||||||
|
28 : 09 = language code for block 0: English
|
||||||
|
29 : 00 00 00 00 00 00 00 = language code for block 1..7 (none)
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
What is known about mixed mode sessions :
|
What is known about mixed mode sessions :
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user