Lesen

Next: Schreiben
Up: Aufbau eines Formathandlers
Previous: Aufbau eines Formathandlers
- Suche nach ''magic word'', d.h. Formatidentifikation (hier ''FORM'')
- Suche nach Typ-Kennzeichnung (hier ''8SVX'')
Anmerkung: Das ''magic word'' allein genügt in diesem Fall noch nicht, da
auch IFF-Bilddateien oder Sounds im AIFF-Format mit ''FORM'' beginnen.
Bei erfolgloser Suche wird eine Fehlermeldung ausgegeben und das Programm
abgebrochen.
- Samplingrate und Kompressionsverfahren aus Formatkopf lesen
Fehlermeldung und Abbruch bei Kompression (wird von SOX nicht unterstützt)
Anmerkung: Beim HCOM-Handler wird an dieser Stelle eine Datenstruktur für
die Huffman-Decodierung initialisiert.
- Anzeigen des im Formatkopf gespeicherten Samplenamens und Kommentars
Diese Informationen werden nicht zwischengespeichert, d.h. sie gehen beim
Konvertieren verloren.
- Anzahl der Kanäle lesen
- Alle anderen Parameter, wie z.B. Lautstärke, werden überlesen.
- Parameter auf Zulässigkeit prüfen und in interne Struktur schreiben
- Feste Parameter des Formats setzen (hier: Samplewerte sind
vorzeichenbehaftete Bytes)
Die Punkte 1 - 8 sind Aufgabe des Unterprogramms 8svxstartread.
Die folgenden 3 Schritte sind in 8svxread implementiert:
- Samplewert (8-Bit-Integer mit Vorzeichen) aus Datei lesen
- Wert in internes Format (32-Bit-Integer mit Vorzeichen) wandeln, indem
das gelesene Byte in die oberen 8 Bit geschrieben wird.
Anmerkung: Bei vorzeichenlosen Samplewerten wird zusätzlich noch das
höchstwertige Bit des gelesenen Datums invertiert, was der erforderlichen
Subtraktion entspricht.
Bei gepackten Daten muß zwischen 9. und 10. eine Dekompression stattfinden.
- Wiederhole die obigen beiden Schritte, bis die geforderte Anzahl von
Samples gelesen oder das Dateiende erreicht wurde. Gib die Zahl der
tatsächlich gelesenen Werte zurück.
Die Funktion 8svxstopread ist leer, da keine Nachbearbeitung des Lesevorgangs
nötig ist. Das Öffnen und Schließen der Sounddatei ist nicht Aufgabe der
Handler und erfolgt im Hauptprogramm.
Axel Bürkle
Fri May 5 16:13:09 MET DST 1995