Lesen


next up gif
Next: Schreiben Up: Aufbau eines Formathandlers Previous: Aufbau eines Formathandlers

Lesen

  1. Suche nach ''magic word'', d.h. Formatidentifikation (hier ''FORM'')
  2. 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.
  3. 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.
  4. Anzeigen des im Formatkopf gespeicherten Samplenamens und Kommentars
    Diese Informationen werden nicht zwischengespeichert, d.h. sie gehen beim Konvertieren verloren.
  5. Anzahl der Kanäle lesen
  6. Alle anderen Parameter, wie z.B. Lautstärke, werden überlesen.
  7. Parameter auf Zulässigkeit prüfen und in interne Struktur schreiben
  8. 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:

  1. Samplewert (8-Bit-Integer mit Vorzeichen) aus Datei lesen
  2. 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.
  3. 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