| | 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. |