| 1 | = stream version 7 format specification = |
| 2 | |
| 3 | Der Datenstrom ist als Strom von 32-Bit-Worten zu sehen, der dann allerdings |
| 4 | von MSB her dekodiert werden. Betrachtet man das ganze als Oktet-Strom, dann |
| 5 | ist die Reihenfolge der Bits die folgende (Zählung ab 1 beginnend, MSB links): |
| 6 | |
| 7 | v-----------------------v-----------------------v-----------------------v-----------------------v-----------------------v--- |
| 8 | |25|26|27|28|29|30|31|32|17|18|19|20|21|22|23|24| 9|10|11|12|13|14|15|16| 1| 2| 3| 4| 5| 6| 7| 8|57|58|59|60|61|62|63|64|49| |
| 9 | ^-----------------------^-----------------------^-----------------------^-----------------------^-----------------------^--- |
| 10 | |
| 11 | Auf Grund unterschiedlicher Zugriffsmechanismen muß man die Streamversion |
| 12 | über einen anderen Machanismus bestimmen, da durch diese Struktur man zu |
| 13 | spät auf die Magic Number zugreifen kann. Da weiterhin kaum Streamversionen unterhalb |
| 14 | von Version 7 im Feld zu finden sind, und selbst wenn sie zu finden wären, |
| 15 | deren Klangqualität zu wünschen übrig läßt, wird im folgenden nur |
| 16 | Streamversion 7 beschrieben. |
| 17 | |
| 18 | Diese Bitstruktur macht vor allem auch Probleme auf 16 bit und 64 bit CPUs, |
| 19 | da immer mit 32 bit-Worten dekodiert werden muß. |
| 20 | |
| 21 | |
| 22 | =============================== GROBSTRUKTUR ============================ |
| 23 | |
| 24 | Header |
| 25 | ~~~~~~ |
| 26 | |
| 27 | -0------------------------------------------------------------------------- |
| 28 | StreamMinorVersion |
| 29 | 4 bit 0...1 Currently 0 (PNS not used) or 1 (PNS used) |
| 30 | |
| 31 | StreamMajorVersion |
| 32 | 4 bit 7 Streamversion 7 |
| 33 | |
| 34 | Signatur |
| 35 | 24 bit 0x2B504D Signatur "MP+" |
| 36 | -1------------------------------------------------------------------------ |
| 37 | FrameCount |
| 38 | 32 bit 0...0xFFFFFFFF Anzahl der Frames, jeder Frame beinhaltet 1152 |
| 39 | Samples pro Kanal, der letzte Frame beinhaltet 1 |
| 40 | bis 1152 Samples pro Kanal. Man beachte weiterhin |
| 41 | die Latenz der Analyse und Synthesefilterbank von |
| 42 | 481 Samples. Siehe Bemerkung 2. |
| 43 | -2------------------------------------------------------------------------- |
| 44 | IntensityStereo |
| 45 | 1 bit 0...1 normalerweise 0, bei Intensitätsstereokodierung (IS) 1. |
| 46 | Derzeitig von keinem Encoder benutzt. |
| 47 | Siehe Bemerkung 3. |
| 48 | |
| 49 | MidSideStereo |
| 50 | 1 bit 0...1 Wenn MidSideStereo verwendet wird, ist dieses Bit 1, |
| 51 | sonst 0. |
| 52 | |
| 53 | MaxBand |
| 54 | 6 bit 0...32 letztes in der gesamten Datei verwendetes Subband. |
| 55 | Typische Werte sind 23 bis 29. |
| 56 | |
| 57 | Profile |
| 58 | 4 bit 0, 7...13 Verwendetes Profile |
| 59 | |
| 60 | 0: kein Profile |
| 61 | 1: Unstable/Experimental |
| 62 | 2: ungenutzt |
| 63 | 3: ungenutzt |
| 64 | 4: ungenutzt |
| 65 | 5: below Telephone (q= 0.0) |
| 66 | 6: below Telephone (q= 1.0) |
| 67 | 7: Telephone (q= 2.0) |
| 68 | 8: Thumb (q= 3.0) |
| 69 | 9: Radio (q= 4.0) |
| 70 | 10: Standard (q= 5.0) |
| 71 | 11: Xtreme (q= 6.0) |
| 72 | 12: Insane (q= 7.0) |
| 73 | 13: BrainDead (q= 8.0) |
| 74 | 14: above BrainDead (q= 9.0) |
| 75 | 15: above BrainDead (q=10.0) |
| 76 | |
| 77 | Link |
| 78 | 2 bit 00: Titel startet und endet mit sehr niedrigem Pegel (keine Live- oder Klassiktitel) |
| 79 | 01: Titel hört laut auf |
| 80 | 10: Titel fängt laut an |
| 81 | 11: Titel fängt laut an und hört laut auf |
| 82 | |
| 83 | SampleFreq |
| 84 | 2 bit 00: 44100 Hz CD |
| 85 | 01: 48000 Hz DAT, DVC, ADR |
| 86 | 10: 37800 Hz CD-ROM/XA |
| 87 | 11: 32000 Hz DSR, DAT-LP, DVC-LP |
| 88 | |
| 89 | MaxLevel |
| 90 | 16 bit 0...32768 Maximaler Pegel des kodieren PCM-Inputsignals |
| 91 | Siehe Bemerkung 4 |
| 92 | -3------------------------------------------------------------------------- |
| 93 | TitleGain |
| 94 | 16 bit -32768...+32767 Veränderung des Wiedergabepegels. Wert wird als |
| 95 | vorzeichenbehafteter 16-bit-Wert betrachtet und der |
| 96 | Pegel wird um so viele mB (Millibel) verändert. Somit |
| 97 | sind Pegeländerungen von -327.68 dB bis +327.67 dB möglich. |
| 98 | TitlePeak |
| 99 | 16 bit 0...65535 Maximaler Pegel des dekodierten Titels |
| 100 | 16422: -6 dB |
| 101 | 32767: 0 dB |
| 102 | 65379: +6 dB |
| 103 | -4------------------------------------------------------------------------- |
| 104 | AlbumGain |
| 105 | 16 bit -32768...32767 Veränderung des Wiedergabepegels, wenn die ganze |
| 106 | CD mit gleicher Pegelveränderung abgespielt werden soll. |
| 107 | Wert wird als |
| 108 | vorzeichenbehafteter 16-bit-Wert betrachtet und der |
| 109 | Pegel wird um so viele mB (Millibel) verändert. Somit |
| 110 | sind Pegeländerungen von -327.68 dB bis +327.67 dB möglich. |
| 111 | AlbumPeak |
| 112 | 16 bit 0...65535 Maximaler Pegel der gesamten dekodierten CD |
| 113 | 16422: -6 dB |
| 114 | 32767: 0 dB |
| 115 | 65379: +6 dB |
| 116 | -5------------------------------------------------------------------------- |
| 117 | TrueGapless |
| 118 | 1 bit Wird True Gapless verwendet? |
| 119 | 0: nein |
| 120 | 1: ja |
| 121 | |
| 122 | LastFrameLength |
| 123 | 11 bit 0, 1...1152 Used Samples of the Last Frame. |
| 124 | TrueGapless = 0: always 0 |
| 125 | TrueGapless = 1: 1...1152 |
| 126 | |
| 127 | Unused2 |
| 128 | 20 bit |
| 129 | -6------------------------------------------------------------------------- |
| 130 | EncoderVersion |
| 131 | 8 bit Encoder version * 100 (106 = 1.06) |
| 132 | EncoderVersion % 10 == 0 Release (1.0) |
| 133 | EncoderVersion % 2 == 0 Beta (1.06) |
| 134 | EncoderVersion % 2 == 1 Alpha (1.05a...z) |
| 135 | |
| 136 | |
| 137 | AudioDaten (insgesamt FrameCount mal) |
| 138 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 139 | |
| 140 | LengthOfFrame |
| 141 | 20 bit |
| 142 | |
| 143 | FrameData |
| 144 | ? bit |
| 145 | |
| 146 | |
| 147 | Ende |
| 148 | ~~~~ |
| 149 | LastFrameUsedSamples |
| 150 | 11 bit |
| 151 | Siehe weiterhin Bemerkung 2 |
| 152 | |
| 153 | LengthOfFrame |
| 154 | 20 bit |
| 155 | |
| 156 | FrameData |
| 157 | ? bit |
| 158 | |
| 159 | FillBits |
| 160 | 0...31 bit Das letzte Datenwort muß aufgefüllt werden, auch |
| 161 | wenn nur 1 bit davon genutzt wird, da dieses Bit |
| 162 | in diesem Fall im letzten Byte des Wortes liegt. |