DVSM Samples ------------ Jedes DVS Sample beginnt mit folgendem Header: typedef struct { char magic[6]; int headlen; unsigned int freq; char pack; char mode; long blocklen; } DVSMHEAD; Bedeutung der Eintr„ge: ----------------------- magic: "DVSM\0\0" headlen: Headerl„nge, d.h. Abstand der Sounddaten vom Dateibeginn Unbedingt auswerten, wegen den Erweiterungsbl”cken (siehe unten)!! Die komplette Headerl„nge muž gerade sein! freq: Samplingfrequenz: 0-7 : Erlaubte CODEC Vorteiler (0: 8kHz ... 7: 49kHz) >256: Samplingfrequenz in Hz pack: 0: Ungepackt 2: DVS Packmethode 4: DVS Voicepackmethode (mit WinRec Pro) 5: ADPCM (mit WinRec Pro) In Zukunft sind auch andere Werte denkbar! Also nicht nur auf 'pack>0' sondern auf 'pack==x' abfragen! mode: Bit 0: 8/16 Bit Bit 1: Stereo/Mono blocklen (im Moment nur gltig falls 'pack'==2 oder 'pack'==4): L„nge eines gepackten Blocks (= Abstand der Sttzwerte). Bei gepackten Samples unbedingt auswerten. Ist kein fester Wert! WinRec schreibt (je nach Buffer) verschiedene Blockl„ngen! Die Blockl„nge muž gerade sein! Erweiterungsbl”cke ------------------ DVS ist ein modulares Format. Nach dem oben beschriebenen Header k”nnen noch (fast) beliebig viele Erweiterungsbl”cke folgen. Die Bl”cke geh”ren zum Header, d.h. der Eintrag 'headlen' umfažt auch die Erweiterungen! So k”nnen (z.B. „ltere) Programme die zus„tzlichen Informationen šberspringen. Der "Minimalheader" ist immer 16 Bytes lang, n„mlich die oben beschriebenen Eintr„ge. Ein Block hat folgende Form: 4 Byte (cookie) Kennung des Blocks 2 Byte (len) L„nge des Blocks len-6 Bytes Daten WinRec versteht ab der Version V1.38 folgende Erweiterungen: Kennung L„nge der Daten Bedeutung ----------------------------------------------------------------------------------------- 'CLCK' 1 Word 0: Interner Takt, 1: Extern CD, 2: Extern DAT 'PEAK' 4 Byte je ein Word fr linken und rechten Kanal mit dem h”chsten auftretenden Samplewert 'DSPE' x Bytes DSP Programm (Soundeffekt !!) im Binary Format 'PARA' x Bytes x Parameter fr den Soundeffekt. Darf nicht vor dem 'DSPE' Block stehen! 'PACK' 128 bzw. 8 Bytes Deltapacktabelle fr Distanzwerte. Wird (falls vorhanden) anstelle der Standardtabelle (s.u.) verwendet. 'INFO' x Bytes Infotext (z.B. voller Titel) Weiterhin ist definiert, wird aber (im Moment) noch nicht von WinRec genutzt: 'KARA' x Bytes Karaoketext (Beschreibung siehe unten) Die gesamte Headerl„nge kann und darf 65535 Bytes nicht berschreiten. Ein Programm sollte wenn m”glich alle Erweiterungsbl”cke durchgehen und anhand der Kennung entscheiden, ob es die Information nutzen kann. Karaoketextformat ----------------- long cookie='KARA' int len int textlen danach folgt der Text, der im ASCII Format zeilenweise abgelegt ist. Eine Textzeile darf nicht l„nger als 40 Zeichen sein. Nach dem Text folgt die Takttabelle. Sie enth„lt fr jedes Wort des Textes ein 4-Bytewert der den zeitlichen Abstand zum vorherigen Wort angibt. Die Angabe erfolgt in der Einheit 1/Samplingfrequenz Packformat ---------- (im Moment nur fr 16 Bit Stereo oder Mono Samples!!!!) Ein Block ist wie folgt aufgebaut (L„nge siehe 'blocklen'): 1. Soundword Links (16 Bit) 1. Soundword Rechts (16 Bit) 1. Distanzwert Links (8 Bit) 1. Distanzwert Rechts (8 Bit) . . . n. Distanzwert Links (8 Bit) n. Distanzwert Rechts (8 Bit) Distanzwerte sind Zeiger auf eine Tabelle mit den 'echten' 16 Bit Distanzwerten. Die Tabelle enth„lt Funktionwerte der Funktion / -1.084618362^-x fr x<0 (-128 bis -1) f(x)= { 0 fr x=0 (0) \ 1.084618362^x fr x>0 (1 bis 127) Die Tabelle ist (logischerweise) 256 Bytes lang! Voicepackformat --------------- (im Moment nur fr 16 Bit Stereo oder Mono Samples!!!!) Ein Block ist wie folgt aufgebaut (L„nge siehe 'blocklen'): 1. Soundword Links (16 Bit) 1. Soundword Rechts (16 Bit) 1. Distanzwert Links (4 Bit) 1. Distanzwert Rechts (4 Bit) . . . n. Distanzwert Links (4 Bit) n. Distanzwert Rechts (4 Bit) Distanzwerte sind Zeiger auf eine Tabelle mit den 'echten' 16 Bit Distanzwerten: -8192,-4096,-2048,-1024,-512,-256,-64,0,64,256,512,1024,2048,4096,8192 Andreas Binner