Home

Index Zurück Weiter


Teil III Die Implementation

Nachdem wir im ersten Teil das Konzept des CIMEDIA-Lernprogramms und im zweiten Teil die Grundlagen des CD-i-Systems erläutert haben, betrachten wir nun die konkrete Implementation dieser CD-i-Applikation. Im Kapitel 5 wird zuerst der grundsätzliche Ablauf des CD-i-Authorings dargelegt und anschliessend die durchgeführten Arbeitsschritte beschrieben. Ausserdem wird die am IAM entwickelte Sprache MetaCDL vorgestellt, mit deren Hilfe die RTF-Dateien definiert werden können.

Im Kapitel 6 wird die CDiC-Bibliothek präsentiert, deren Entwicklung über ein Jahr benötigte (über 15'000 Zeilen C-Code). Diese Bibliothek ermöglicht die Programmierung einer CD-i-Applikation in der Sprache C. Konkrete Beispiele zur deren Anwendung werden im Kapitel 7 wiedergegeben.

5 CD-i-Authoring

5.1 CD-i-Authoring

Unter CD-i-Authoring verstehen wir die Zusammenfassung aller in Abbildung 5-1 dargestellten Arbeitsschritte, die wir zuerst grob umschreiben und anschliessend etwas genauer betrachten.

Abbildung 5-1: Phasen des CD-i-Authorings

In den folgenden Abschnitten betrachten wir uns nun einige Details dieser Phasen.

5.1.1 Idee

Alles beginnt mit einer guten Idee, die in einem sogenannten Exposé (Konzept) festgehalten wird. Dieses Exposé muss so detailliert sein, dass es hinsichtlich Durchführbarkeit und Markterfolg beurteilt werden kann. Es legt im wesentlichen die inhaltlichen Konzepte der Applikation, das Handlungsschema und die interaktiven Möglichkeiten fest [151]. Einem allfälligen Auftraggeber sollte das Exposé zur Bewilligung vorgelegt werden. Weiter definiert das Exposé die Struktur des Projektteams, das sich beispielsweise aus einem Produzent, dem Projektmanager, den Autoren, mehreren Ton- und Videospezialisten, Grafikern, Komponisten, Sprechern, Schauspielern, Übersetzern und Programmierern zusammensetzten kann. Die Idee zu CIMEDIA hatte Mischa Schaub am HyperStudio, der auch die Projektleitung übernahm.

5.1.2 Drehbuch

Ziel des Drehbuchs ist es, den Handlungsablauf und das Datenmaterial festzulegen. Dies kann durch Anfertigung diverser Skizzen mit ergänzendem Text erreicht werden. Das Drehbuch dient anschliessend als Basis sowohl für die Beschaffung und Produktion der Assets als auch zur Ausarbeitung der Programmspezifikation. Obwohl im Software-Engineering meist verlangt wird, möglichst lange unabhängig von der Hardware vorzugehen, muss bereits in dieser Phase das Drehbuch im Hinblick auf das zu unterstützende System entwickelt werden. Insbesondere die Video- und Audiofähigkeiten und deren Unterstützung durch das Betriebssystem müssen in dieser frühen Phase berücksichtigt werden [152]. Der Drehbuchautor sollte daher durch einen Spezialisten unterstützt werden, der sicherstellen muss, dass später das Drehbuch in ein Programm umgesetzt werden kann.

Der Autor dieser Arbeit wurde in der Drehbuchphase als CD-i-Spezialist in das CIMEDIA-Projektteam integriert.

5.1.3 Datenmaterial

In dieser Phase werden zuerst die Assets beschafft oder produziert. Dabei sollte die bestmögliche Datenqualität angestrebt werden. Bilder sollten grundsätzlich im 24-Bit-Format, Videos mindestens auf S-VHS-Bändern und Audiodaten am besten in CD-DA-Qualität vorliegen. Da sich dabei sehr schnell riesige Datenmengen ansammeln können [153], muss unter Umständen ein Kompromiss zwischen den Qualitätsanforderungen und der Datenmenge getroffen werden.

Falls das Datenmaterial gesammelt wird, entstehen Copyrightprobleme. Beispielsweise ist es grundsätzlich nicht erlaubt, Musikstücke ab einer normalen CD-DA zwecks Verwendung in einer CD-i-Applikation zu digitalisieren. Auch Bilder von Personen oder Kunstwerken dürfen nicht ohne entsprechende Einwilligung verwendet werden. Um unliebsame Überraschungen zu vermeiden, müssen im Zweifelsfall immer die Nutzungsrechte eingeholt werden.

Nach der Beschaffung und der Produktion des Datenmaterials wird es bearbeitet. Audiodaten werden zum Beispiel normalisiert [154] und Videodaten in der Auflösung angepasst [155]. Anschliessend können die Daten in die jeweiligen Formate konvertiert werden.

Im CIMEDIA-Projekt wurde diese Datenschnittstelle nicht sauber definiert. So konnten zur Bearbeitung und Konversion der Assets in die verschiedenen CD-i-Formate häufig nicht die Originaldaten, sondern nur die schon für die PC-Version bearbeiteten Dateien herangezogen werden, was zu spürbaren Qualitätsverlusten führte. Alleine für diese Bearbeitung der Audio- und Videodaten des CIMEDIA-Lehrprogramms, im Umfang von mehreren Gigabyte, wurden am IAM etwa drei Monate benötigt.

Als letzer Schritt in dieser Phase werden aus den bearbeiteten Assets noch die RTF-Dateien erzeugt [156], wobei sowohl auf die exakte Synchronisation der Audio- und Bilddaten als auch auf eine optimale Anordnung der Daten, im Hinblick auf die Zugriffsgeschwindigkeit, geachtet werden muss. Diese RTF-Dateien werden mit Hilfe einer speziellen Sprache (CDL [157]) programmiert.

5.1.4 Programmherstellung

Selbst komplexere Multimedia-Anwendungen für die PC- oder MAC-Plattformen können heute in relativ kurzer Zeit mit bestehenden Autorensystemen [158] erstellt werden. Einige Beispiele solcher Systeme sind: Multimedia Grasp (Paul Mace Software), Multimedia Toolbook (Asymetrix), 'IconAuthor' (AimTech Corporation), Authorware (Macromedia) oder das am HyperStudio eingesetzte System 'MacroMind Director' (Macromedia). Einfache CD-i-Applikationen können mit dem Autorensystem 'MediaMogul' (OptImage) zusammengestellt werden. Allerdings sind dessen Möglichkeiten derart begrenzt, dass es für CIMEDIA nicht verwendet werden konnte. Die ganze Programmierung der CD-i-Applikation musste daher in C geschrieben werden [159]. Als Programmierumgebung wurde MPW [160] von Apple verwendet, da als CD-i-Emulator die kostengünstige Cassiopée-Karte [161] der Firma ISG für den Macintosh eingesetzt wurde.

5.1.5 Brennen

Wie sich im CIMEDIA-Projekt herausstellte, arbeitet die Cassiopée-Karte nicht fehlerfrei. Einige Teile der CD-i-Applikation, die auf dieser Emulationskarte problemlos ausgeführt werden konnten, führten zu Abstürzen, wenn sie auf einem richtigen CD-i-Gerät gestartet wurden. Daher sollte in einer sehr frühen Projektphase die Emulation auf ihre Korrektheit und Brauchbarkeit getestet werden. Von Vorteil wird also nicht erst nach Abschluss der Testphase der CD-i-Applikation das Brennen durchgeführt. Leider stand am IAM kein CD-Brenner zur Verfügung, so dass dieses Problem viel zu spät entdeckt wurde.

In den folgenden Abschnitten wird das am IAM durchgeführte CD-i-Authoring im Detail und mit einigen Einzelheiten erläutert.

5.2 Audiodaten

Für das CIMEDIA-Lehrprogramm wurden ca. sechs Stunden Audiodaten der Interviews auf DAT-Bänder aufgezeichnet. Diese wurden am HyperStudio mit 11 kHz und 8 Bit im AIFF [162]-Format digitalisiert. Zur Konvertierung in das CD-i-Audioformat Level-C steht das Programm 'ADPCM-Convert' von ISG zur Verfügung, das allerdings nur Audiodaten im 37,8 kHz / 16 Bit Format akzeptiert. Daher wird ein sogenanntes Upsampling von 11 kHz auf 37,8 kHz notwendig, was zu einem hörbaren Qualitätsverlust führt. Als Upsampling-Programm steht 'SOX' [163] für die Arbeitsstationen der Firma SUN zur Verfügung. Da 'SOX' das vorliegende AIFF-Format als Eingabe nicht akzeptiert, müssen alle Audiodaten vorher mit dem Programm 'SoundApp' [164] in das bekannte WAVE-Format [165] konvertiert werden.

Die Abbildung 5-2 stellt den Arbeitsablauf zur Bearbeitung der Audiodaten schematisch dar. Insgesamt wurden auf diese Weise etwa 1500 Dateien bearbeitet. Da für die Speicherung der Audiodaten im 37,8 kHz / 16 Bit Format ca. 1,6 GByte Speicherplatz benötigt wird, aber nur etwa 200 MByte zur Verfügung stehen, sind mehrere Durchgänge notwendig.

Abbildung 5-2: Bearbeitung der Audiodaten

Leider kann 'ADPCM-Convert' keine Unterverzeichnisse bearbeiten, d.h. beim Konvertieren werden alle Dateien in einem Zielverzeichnis abgelegt.

Damit die fünfzig Verzeichnisse nicht einzeln bearbeitet werden müssen, werden alle Dateien vor der ersten Konvertierung mit 'SoundApp' in ein Verzeichnis verschoben, wobei allen Dateien die Verzeichnisnamen vorangestellt werden. So wird beispielsweise die Datei FRAGE1.AIF im Verzeichnis MUELLER in MUELLER_FRAGE1.AIF umbenannt. Nach der vollständigen Konvertierung können die Dateien danach wieder in die ursprünglichen Verzeichnisse verschoben werden [166].

Da bei der Digitalisierung der Audiodaten offenbar keine Normalisierung [167] durchgeführt wurde, waren die originalen Audiodaten in unterschiedlichen Lautstärken gespeichert. Die grössten Unterschiede wurden am IAM mit dem Programm 'SoundEdit' von Macromedia ausgeglichen.

5.3 Videodaten

Die meisten der etwa 800 Interviewbilder lagen nur im 8 Bit PICT-Format vor, also nur in 256 verschiedenen Farben. Da mit dem verwendeten DYUV-Bildformat 216 Farben dargestellt werden können, werden die CD-i-Möglichkeiten leider nicht ausgeschöpft.

Abbildung 5-3: Bearbeitung der Bilddaten

Für die Bildbearbeitung wird das Programm 'DeBabelizer' von Equilibrium auf dem Macintosh eingesetzt. Es eignet sich besonders gut, da die einzelnen Arbeitsschritte mit Hilfe von Skripten programmiert werden können. Folgende Bearbeitungen sind typischerweise notwendig:

  1. Farbkorrektur
    Werden in einem Fernsehbild grosse Helligkeitsunterschiede dargestellt, dann entstehen auf dem Monitor Störungen [168]. Daher muss der Farbraum etwas eingeschränkt werden [169]. Zudem müssen alle CLUT-Bilder einer Benutzerschnittstelle dieselbe Farbtabelle aufweisen, da pro Bildebene nur eine definiert werden kann [170].
  2. Auflösung anpassen
    Die CIMEDIA-Bilddaten wurden alle in der VGA-Auflösung 640*480 geliefert. Nach der Umrechnung in die CD-i-PAL-Auflösung (384*280) kann die Bildqualität durch verschiedene Filter beeinflusst werden.
  3. Einmitten
    Da nur die im sicheren Bildschirmbereich dargestellten Teile garantiert sichtbar sind, werden die Bilder der Benutzerschnittstelle verkleinert und aussen mit einem dunklen Rahmen versehen.

Bildschirmelemente

Bei der Programmierung der CD-i-Applikation müssen die x/y-Koordinaten, die Breite und die Höhe bekannt sein. Für die CIMEDIA-Applikation werden daher alle 220 Bilder der Benutzerschnittstelle von Hand [171] vermessen.

Abbildung 5-4: Bestimmung der Benutzerschnittstellen-Koordinaten

Schrifttafeln

Alle verwendeten Schriftzüge werden als Bilder gespeichert [172]. Bei der Konvertierung dieser 400 Schrifttafeln muss nach Anpassung der Auflösung ein Antialiasing mit Hilfe verschiedener Filter durchgeführt werden.

Quicktime-Filme

Bei der Konvertierung eines vertonten Quicktime [173]-Films müssen zusätzliche Überlegungen durchgeführt werden. Die einzelnen CD-i-Bilder werden zusammen mit den Audiodaten in einer RTF-Datei gespeichert, wobei die im Abschnitt 4.4.4 erwähnten Leerräume notwendig sind.

Abbildung 5-5: Bearbeitung der Quicktime-Filme

Die Qualitätsstufe der Audiodaten bestimmt, wie viele Zwischenräume der RTF-Datei mit Videodaten gefüllt werden können [174]. In diesen Zwischenräumen werden die einzelnen Frames [175] mit den benötigten Leerräumen eingefügt [176]. Werden die Leerräume zu klein gewählt, dann entsteht das im Abschnitt 4.4.4 erwähnte Fehlverhalten des Systems. Je grösser sie allerdings gewählt werden, desto kleiner ist die Framerate [177].

Falls das RLE-Bildformat benutzt werden soll, dann muss zuerst das grösste Frame bestimmt werden, bevor die Framerate berechnet [178] werden kann. Diese wird aber bei der Konvertierung benötigt, um die Distanz der einzelnen Quicktime-Units [179] zu bestimmen. In einem ersten Durchgang muss die Framerate also zuerst grob geschätzt werden. Da die Konvertierung eines längeren Films mehrere Stunden dauern kann, sind zur erfolgreichen Umwandlung unter Umständen mehrere Tage nötig.

Bei den CIMEDIA-Filmen kann festgestellt werden, dass das grösste Frame eines Films in der RLE-Codierung meist nur noch einen Komprimierungsfaktor von 10% gegenüber dem DYUV-Bild erreicht. Dies führt zum Entschluss, dass alle Frames im DYUV-Format gespeichert werden. Wir erzielen damit den zusätzlichen Vorteil, dass alle Frames eines Films dieselbe Anzahl Sektoren zur Speicherung benötigen [180].

5.4 Definieren der RTF-Dateien

Das korrekte Zusammenstellen der RTF-Dateien ist ein wesentlicher Bestandteil des Authorings. Im Rahmen des CIMEDIA-Projektes wurde am IAM eigens zu diesem Zweck MetaCDL entwickelt, eine auf CDL [181] basierende, einfache RTF-Datei-Definitionssprache.

5.4.1 CDL-Skripte

Jede RTF-Datei wird mit Hilfe eines CDL-Skriptes programmiert. Wie in der Abbildung 5-6 dargestellt wird, kann der CDL-Compiler als Ausgabe RTR-Map-, C-Deklarations-, Binär- und Textdateien erzeugen.

Abbildung 5-6: CDL-Compiler

Die RTR [182]-Map-Dateien beschrieben das Layout der RTF-Dateien und werden später zur Erstellung der CD-i-Image-Datei [183] verwendet. Mit den C-Deklarationsdateien können Positionsangaben einzelner Asset-Dateien in C-Programme übernommen werden. Die Möglichkeiten sind allerdings so beschränkt [184], dass sie im CIMEDIA-Projekt nicht verwendet werden. Vielmehr werden die Textdateien für dieselben Zwecke benutzt [185]. Schliesslich können auch noch Binärdateien erzeugt werden, die von der CD-i-Applikation gelesen werden können.

CDL-Skripte verwenden fast dieselben Kontrollstrukturen wie BASIC-Programme. Als einzige Datentypen der Variablen können Integer und String verwendet werden. Arrays sind nicht vorgesehen. An dieser Stelle soll exemplarisch die Syntax des CDL-Befehls wiedergegeben werden, der eine Asset-Datei in eine RTF-Datei einfügt.

Syntax

[LABEL:] <file> <chunk> <channel> {¦<, >¦, @} <time> [trigger] [eor]

Beispiele

FirstPic: DiskName:FolderName:FirstPic.dyuv 'IDAT' #5 ¦< 20:30:15 eor
DiskName:FolderName:SecondPic.dyuv 'IDAT' #5 ¦< _LASTSECTOR + 5

Diese zwei Zeilen fügen je ein Bild (FirstPic.dyuv und SecondPic.dyuv) in einer RTF-Datei ein. Die Bilder sind auf der Harddisk DiskName im Verzeichnis FolderName gespeichert. Als Trenner zwischen den Verzeichnissen wird in MPW also der Doppelpunkt ':' verwendet. In der ersten Zeile wird zusätzlich das Label FirstPic: definiert. Für beide Bilder wird je der Kanal '5' (#5) verwendet, wobei nur die Pixelwerte ('IDAT') eingefügt werden. Das erste Bild wird ab der Sektorposition 20:30:15 eingefügt. Das zweite folgt fünf Sektoren nach dem Ende des ersten Bildes.

Parameter

5.4.2 MetaCDL

Das direkte Programmieren der RTF-Dateien mag für kleinere Datenmengen sinnvoll sein. Um die grosse Anzahl der CIMEDIA-Asset-Dateien zu bewältigen, wurde MetaCDL entwickelt. Die Abbildung 5-7 zeigt, wie mit MetaCDL RTF-Dateien erzeugt werden können. In den Abschnitten 5.4.2.1 bis 5.4.2.4 werden verschiedene Beispiele der Sprache geboten. Das zusätzlich notwendige Programm Streamedit wird im Abschnitt 5.4.3 erläutert werden.

Abbildung 5-7: Erstellen der RTF-Dateien mit MetaCDL und der CDL-Bibliothek

Der eigentliche Ablaufplan, der definiert, in welcher Reihenfolge die einzelnen Asset-Dateien in einer RTF-Datei gespeichert werden, wird in einer Assets-Tabelle [188] erstellt und anschliessend im CSV [189]-Format exportiert. Als Trenner zwischen den einzelnen Spalten wird das Semikolon ';' verwendet. Diese einfache Definitionssprache nennen wir MetaCDL und wird im folgenden anhand einiger ausgewählter Beispiele erläutert.

5.4.2.1 Beispiel: Interview

Damit überhaupt fast sechs Stunden Audiodaten auf der CD-i gespeichert werden können, muss die Qualitätsstufe Level-C-Mono gewählt werden [190], d.h. jeder sechzehnte Sektor eines Kanals wird belegt. Die Audio-Assets werden so auf die 16 Audiokanäle verteilt, dass keine leeren Sektoren mehr existieren. Die folgende Abbildung 5-8 stellt dieses Layout graphisch dar [191].

Abbildung 5-8: RTF-Layout der Interview-Audiodaten

In der Abbildung 5-8 werden links die Kanalnummern und unten die Sektorpositionen angegeben. Jedes dunkle Rechteck symbolisiert einen belegten Sektor. Die kleinen Buchstaben [192] 't' und 'e' stehen für trigger und eor. Es wird deutlich sichtbar, dass alle Sektoren belegt werden. Damit die richtigen Audiodaten ertönen, wird bei der Wiedergabe immer nur einer der Kanäle ausgewählt.

Da aber mehr als 16 Audiodateien gespeichert werden müssen, sind weitere Überlegungen notwendig. Wir bezeichnen die einzelnen Audio-Assets der Interviews mit i1 bis i40 und wählen die in der Abbildung 5-9 dargestellte Strategie zu deren Verteilung.

Die Audiodaten der ersten sechzehn Interviews werden auf die Kanäle '0' bis '15' verteilt. Für alle weiteren Daten wird jeweils der noch am wenigsten belegte Kanal ausgewählt. So werden die Audio-Assets sehr platzsparend auf der CD gespeichert.

Abbildung 5-9: Kanalverteilung der Interview-Audiodaten

MetaCDL-Skript: Audiodaten der Interviews

Dieses Interleaving wird durch den MetaCDL-Befehl InsertFileAcmInterleave [193] automatisch erzeugt. Jedem MetaCDL-Befehl können mehrere Parameter folgen, die durch Semikolons ';' getrennt werden. Wir betrachten einen Ausschnitt aus einer Assets-Tabelle, wie sie in der Abbildung 5-7 eingeführt wurde. Alle MetaCDL-Befehle werden fett geschrieben und auf der rechten Seite kommentiert.
CreateScene;AUDIO Definiert den Namen der Szene.
SetFrameStep;16 Alle Anfangspositionen fallen auf eine durch 16 teilbare Sektorposition.
CreateSceneAudio;IFF:BERUF:BARMET: Name des Interviews.
SetDirAcm;IFF:BERUF:BARMET:FRGANTWR: Verzeichnis der Audiodateien dieser Szene.
InsertFileAcmInterleave;NAME.acm Die Datei 'NAME.acm' soll eingefügt werden
InsertFileAcmInterleave;F01.acm InsertFileAcmInterleave bedeutet, dass
InsertFileAcmInterleave;A01.acm Interleaving verwendet werden soll.
InsertFileAcmInterleave;A01A.acm
InsertFileAcmInterleave;A01B.acm
...
EndSceneAudio Abschluss des IFF:BERUF:BARMET: Interviews.
... Es folgen weitere Interviews.
EndScene Abschluss der AUDIO-Szene.

In der Tabellenkalkulation Excel von Microsoft kann dieses Skript relativ einfach erstellt werden. Das vollständige MetaCDL-Skript besteht insgesamt aus ca. 1300 Zeilen.

MetaCDL-Skript: Videodaten der Interviews

Die Videodaten der Interviews werden nach einem festen Schema in die RTF-Datei eingefügt. Im Kanal '25' sind die DYUV-Bilder, im Kanal '24' die darüberliegenden transparenten Schrifttafeln, im Kanal '21' die normalen Schrifttafeln [194], und in den Kanälen '17' und '19' je die benötigten CLUT7-Farbtabellen. Durch die feste Zuordnung der Kanäle kann sich die CD-i-Applikation beim Lesen der RTF-Datei sehr einfach mit dem Datenstrom synchronisieren [195].

Abbildung 5-10: RTF-Layout der Interview-Videodaten

MetaCDL stellt für diesen Zweck folgende Befehle zur Verfügung:

Wie diese MetaCDL-Befehle eingesetzt werden, wird im nächsten Beispiel demonstriert. Das vollständige Skript zur Definition der RTF-Datei mit den Videodaten der Interviews besteht aus 1400 Zeilen.
CreateScenePict;IFF:BERUF:MEIER:; Name des Interviews.
SetDirDyuv;IFF:BERUF:MEIER:FOTOS:; Verzeichnis der DYUV-Bilder.
SetDirClut7;IFF:BERUF:MEIER:SCHRFTBL:; Verzeichnis der CLUT7-Bilder.
SetDirClut7Transp;IFF:BERUF:MEIER:TRANSP:; Verzeichnis der CLUT7-Bilder, die transparent erscheinen sollen.
InsertFileDyuv;2677.yuv; Das Bild 2677.yuv soll eingefügt werden.
InsertClickFileClut7;ARBEITAG.cl7;F01.acm Definiert eine Interviewstelle, die mit einem Mausklick erreichbar ist. Es soll die Schrifttafel ARBEITAG.cl7 erscheinen und danach die Frage F01.acm wiedergegeben werden.
InsertFileDyuv;2694.yuv;
InsertClickFileClut7;KONKTAET.cl7;F02.acm
InsertFileDyuvClut7Transp;3329.yuv;ARBPLANU.cl7 Über das Bild 3329.yuv soll ARBPLANU.cl7 transparent gezeichnet werden.
InsertFileDyuvClut7Transp;2174.yuv;ERHOLPHA.cl7
...
EndScenePict Ende des Interviews.

5.4.2.2 Beispiel: Benutzerschnittstelle

Um die Wartezeiten der Benutzer zu verkürzen, müssen die Daten der Benutzerschnittstellen so gespeichert werden, dass sie möglichst schnell in den Speicher des CD-i-Gerätes eingelesen werden können. Die Benutzerschnittstellen werden aus den folgenden Elementen zusammengesetzt:

  1. Hintergrundbild
    Ein CLUT8-Hintergrundbild bildet die Basis der Schnittstelle.
  2. Schalter, Hebel und Knöpfe
    Alle Bildschirmelemente wie Schalter, Hebel oder Knöpfe werden als eigene, kleine Bilder gespeichert und bei Bedarf an die richtige Position in das Hintergrundbild kopiert.
  3. Soundmaps
    Die Töne, die nach dem Anklicken der Schalter ertönen sollen, müssen als Soundmap im RAM gespeichert werden [198].

Abbildung 5-11: RTF-Layout der Benutzerschnittstellen

Es wird vorgeschlagen, einfach alle Elemente in aufsteigender Kanalreihenfolge in der RTF-Datei zu speichern. Kanal '0' bleibt für spezielle Aufgaben reserviert und selbstverständlich werden die Videodaten zwischen den Audiodaten der Soundmaps eingefügt. Wie in der Abbildung 5-11 dargestellt wird, erfolgt zuerst die Speicherung der Audiodaten (Kanäle '1' und '2') und anschliessend werden die Videodaten (Farbtabellen und Pixelwerte) in die Zwischenräume eingeordnet. Die Daten einer Benutzerschnittstelle werden in einem Recordset zusammengefasst und in die RTF-Datei eingefügt [199]. Jedes Recordset wird mit dem EOR-Bit abgeschlossen.

Diese Struktur kann mit den folgenden MetaCDL-Befehlen definiert werden:

CreateScene;FESE Name der Benutzerschnittstelle.
SetPrintFirst Definiert welche Informationen in den C-Deklarationsdateien
SetPrintChannel gespeichert werden sollen.
SetPrintEor
SetPrintSize
SetDirClut8;IFF:SELECT:FESE: Verzeichnis der CLUT8-Bilder.
SetDirAcm;IFF:TOENE: Verzeichnis der Soundmaps.
InsertFileAcmNextChan;LION.acm Im ersten freien Kanal wird 'LION.acm' eingefügt.
MoveToFirstSector Die nächste Datei soll wieder ab der Startposition von LION.acm eingefügt werden.
InsertFilePaletteClut8NextChan;FESEALL.cl8 Einfügen der Farbtabelle des Bildes FESEALL.cl8.
InsertFileClut8NextChan;FESEALL.cl8 Es folgen alle Bilder der Benutzerschnittstelle FESE.
InsertFileClut8NextChan;FESECROF.cl8
InsertFileClut8NextChan;FESECRON.cl8
...
EndScene Ende der FESE-Benutzerschnittstelle.

5.4.2.3 Beispiel: Abspann

Die Dateien der Bilder und Schriftzüge des Abspannes [200] sind in einem einzigen Verzeichnis gespeichert. Im folgenden Beispiel wird die Verwendung des InsertCdiDirClut8-Befehls aufgezeigt, der alle CLUT8-Bilder eines Verzeichnisses einfügt.
CreateScene;ABSPANN Name der Szene.
SetStartChannel;2 Es wird Kanal 2 verwendet.
SetFrameSizeClut8;7 Jedes CLUT8-Bild soll 7 Sektoren belegen. Falls ein kleineres oder grösseres Bild auftaucht, wird sofort eine Fehlermeldung ausgegeben.
SetFrameStep;8 Alle Startpositionen sollen durch 8 teilbar sein.
InsertCdiDirClut8;IFF:ABSPANN:;CDL_ADD_EOR Alle Assets im IFF:ABSPANN: Verzeichnis werden eingefügt, wobei nach jedem Bild das EOR-Bit gesetzt wird (CDL_ADD_EOR).
EndScene Ende der Szene ABSPANN.

Dieses kurze Skript kann sehr lange RTF-Dateien erzeugen, aus der die CD-i-Applikation bei Bedarf das richtige Bild laden kann. Dazu wird automatisch die notwendige Textdatei geschrieben [201], die später von Streamedit in eine C-Deklarationsdatei umgewandelt werden, in der die genauen Sektorpositionen, die Kanalnummern und die Sektorgrössen aller Dateien gespeichert werden. Zur Illustration wird in der Abbildung 5-12 das Layout der RTF-Datei graphisch dargestellt.

Abbildung 5-12: RTF-Layout des Abspannes

5.4.2.4 Beispiel: Quicktime-Film

Das Erstellen einer RTF-Datei aus einem Quicktime-Film wird an dieser Stelle anhand des Vorstellungsfilms der Begleiter erklärt. Der ca. neun Minuten lange Film setzt sich aus einer Audiodatei [202] und etwa 5000 DYUV-Frames zusammen, die je drei Sektoren belegen. Weil nach jedem Frame fünf leere Sektoren (Leerraum) eingefügt werden, können also 9,375 Frames [203] pro Sekunde dargestellt werden. Wenn statt fünf nur noch zwei Sektoren zwischen den Bildern eingefügt werden, dann erhöht sich die Framerate auf 15 Frames pro Sekunde. Die Fehleranfälligkeit steigt dabei allerdings massiv an, da die 0,0267 [204] Sekunden, die für das Lesen zweier Sektoren benötigt werden, je nach Auslastung der CPU oftmals nicht ausreichen, um das aktuelle Bild darzustellen. Zudem müssen jetzt 8'000 DYUV-Frames eingefügt werden, d.h. die Konvertierung der Bilddaten dauert länger und auf der Harddisk wird mehr Platz beansprucht.

In MetaCDL werden die folgenden Befehle zur Bearbeitung von Quicktime-Filmdaten zur Verfügung gestellt:

CreateCdiMovie;GUIDE Name des Films.
SetCdiMovieStartChannel;2 Der erste Kanal ist Nr. 2.
SetCdiMovieNumberOfChannels;3 Alle Bilder werden auf drei Kanäle verteilt.
SetCdiMovieFrameSize;3 Jedes Frame muss drei Sektoren gross sein. Falls dem nicht so ist, wird eine Fehlermeldung ausgegeben.
SetCdiMovieFrameStep;8 Alle acht Sektoren wird ein Frame eingefügt.
InsertCdiMovieAdpcmLevelC;IFF:GUIDE:GUIDES.acm Einfügen der Tonspur.
MoveToFirstSector Sprung an den Anfang.
InsertCdiMovieDyuv;IFF:GUIDE:SMUV:Part0:; Alle Frames des SMUV:Part0-Teiles werden eingefügt.
InsertCdiMovieDyuv;IFF:GUIDE:SMUV:Part1:;SMUV Alle Frames des Part1 werden eingefügt, wobei der Bezeichner SMUV für die C-Deklarationsdatei verwendet wird.
InsertCdiMovieEor Das EOR- Bit wird gesetzt.
InsertCdiMovieDyuv;IFF:GUIDE:CIM:Part0:;
InsertCdiMovieDyuv;IFF:GUIDE:CIM:Part1:;CIM
...
EndCdiMovie

Dieses MetaCDL-Skript erzeugt das in Abbildung 5-13 dargestellte RTF-Datei-Layout.

Abbildung 5-13: RTF-Layout Quicktime-Film, Übersicht

Um der CD-i-Applikation genügend Zeit zur Verwaltung der PCL-Listen [205] zu gewähren, werden drei Kanäle verwendet. Diese Anzahl erweist sich in der Praxis [206] als optimal. Kann sich die CPU nicht mit der Verarbeitung der gelesenen Daten beschäftigen, weil sie kurz andere Aufgaben übernehmen muss, dann wird diese Zeit einfach durch die drei Kanalpuffer überbrückt.

In der folgenden Abbildung 5-14 wird das Layout etwas vergrössert dargestellt.

Abbildung 5-14: RTF-Layout Quicktime-Film, Vergrösserung

Im Sektor 03:13:08 wird das EOR-Bit [207] durch den Befehl InsertCdiMovieEor auf '1' gesetzt. An dieser Stelle wird die Wiedergabe des Films abgebrochen, falls im PCB der Wert Records korrekt gesetzt wurde [208]. Dadurch wird erreicht, dass die Präsentation einer Filmsequenz (SMUV, CIM, etc.) am Ende angehalten wird.

5.4.3 Streamedit

Die MetaCDL-Skripte werden gemäss der Abbildung 5-7 in normale CDL-Skripte übersetzt. Da die üblichen UNIX-Tools LEX [209] und YACC [210]auf dem Macintosh nicht zur Verfügung stehen, wird das MPW-Tool Streamedit von Apple verwendet. Streamedit kann Dateien auf Zeilenbasis abarbeiten und Textoperationen durchführen. MetaCDL wurde so entworfen, dass es mit diesem (nicht sehr mächtigen) Programm optimal zusammenarbeitet.

Streamedit wird auch eingesetzt, um die mit dem CDL-Compiler erzeugten Textdateien in die verschiedenen, in Abbildung 5-7 dargestellten, Dateien aufzuteilen.

5.4.4 CDL-Bibliothek

Streamedit übersetzt die MetaCDL-Skripte nur zum Teil in normale CDL-Befehle. Meistens werden Funktionsaufrufe in die CDL-Bibliothek erzeugt. Diese Bibliothek erlaubt die Programmierung von CDL-Skripten auf einer etwas höheren Ebene und wurde zur Unterstützung von MetaCDL entworfen. Einige Funktionsgruppen der knapp 1000 Zeilen CDL-Code umfassenden CDL-Bibliothek seien hier erwähnt:

5.5 Erstellen der CD-i-Image-Datei

Das Programm BD [214] von ISG erzeugt ein genaues, logisches Spiegelbild der CD-i-Scheibe auf einer Harddisk. Diese sogenannte CD-i-Image-Datei wird einerseits zur Herstellung der fertigen CD-i und andererseits auch zur Emulation der CD-i-Applikation auf dem Macintosh verwendet.

Abbildung 5-15: Erstellen der CD-i-Image-Datei mit BD

Die Abbildung 5-15 zeigt, wie BD eingesetzt wird. Um die CD-i-Image-Datei aufzubauen, werden die folgenden Daten als Eingabe benötigt: alle Asset-Dateien, die (mit CDL erzeugten) RTR-Map-Dateien, die CD-i-Applikation in Form eines CD-RTOS-Moduls [215] und eine sogenannte BD-Map-Datei.

Die BD-Map-Datei legt die Reihenfolge der RTF-Dateien auf der CD-i-Oberfläche fest. Um unnötig lange Wartezeiten beim Lesezugriff auf die CD zu vermeiden, sollte diese Reihenfolge sehr gut durchdacht werden, so dass der Lesekopf im Durchschnitt nur wenig bewegt werden muss. Insbesondere an den zeitkritischen Stellen müssen die RTF-Dateien in der optimalen Sequenz eingefügt werden.

Zur Illustration wird ein Auszug aus der CIMEDIA-BD-Map-Datei wiedergegeben:
SET CREATION TODAY Mit den SET-Befehlen werden
SET ALBUM "CIMEDIA V1.0" die diversen Informationen
SET PUBLISHER "Hyperstudio, Bruno Grossniklaus" im Lead-In-Bereich [216] gesetzt.
...
Assets:Interview.rtf SIZE 282000K Positionieren der RTF-Dateien.
Assets:Heli.rtf SIZE 4000K Der SIZE-Parameter dient
Assets:Ui.rtf SIZE 4000K der Reservation eines
Assets:MovieFabrik.rtf SIZE 40000K genügend grossen Blocks
Assets:MovieGuide.rtf SIZE 81000K auf der CD-Oberfläche.
Assets:Abspann.rtf SIZE 1000K Dadurch kann der spätere
Assets:MovieIntroLogo.rtf SIZE 1000K Neuaufbau der Image-Datei
Assets:Intro.rtf SIZE 2000K beschleunigt werden.
Assets:CIMEDIA SIZE 1000K Die CD-i-Applikation als Modul

Um eine CD-i-Image-Datei neu aufzubauen, sind die in der folgenden Tabelle 5-1aufgelisteten Arbeitsschritte notwendig. Die Zeitangaben gelten für den verwendeten Macintosh 'IIfx' und die fertige CIMEDIA-Applikation.
Programm Minuten
MetaCDL-Übersetzer 3
CDL-Compiler 60
C-Compiler 17
BD 40
Total 120

Tabelle 5-1: Zeitbedarf zur Erstellung einer CD-i-Image-Datei

Für die MetaCDL-Übersetzung und den C-Compiler werden also nur 20 Minuten, respektive 17% der Gesamtzeit, aufgewendet. Die Wartezeit von 2 Stunden verzögert die Implementation der CD-i-Applikation erheblich, da der Macintosh während dieser Zeit nicht anderweitig eingesetzt werden kann.

5.5.1 Kontrolle mit ViewCDi

Die erzeugte CD-i-Image-Datei kann zur Fehlersuche oder zu Informationszwecken mit dem Programm 'ViewCDi' des Herstellers ISG betrachtet werden. Nebst den normalen Sektoren einer RTF-Datei können auch die Dateistruktur und der Labelteil untersucht werden.

Labelteil

Im Labelteil des Lead-In-Bereichs können alle Attribute [217] betrachtet werden. Einige dieser Attribute werden durch die SET-Befehle in der BD-Map-Datei gesetzt.

In Abbildung 5-16 wird dargestellt, wie 'ViewCDi' den Labelteil präsentiert. Im oberen Teil sind die Sektorposition [218] und die Informationen aus dem Header erkennbar. Die Q-Channel-Bit [219] werden durch BD nicht korrekt gesetzt, sondern alle mit '0' initialisiert. Im unteren Teil kann die CIMEDIA-Attributliste betrachtet werden.

Abbildung 5-16: Kontrolle des Labelteils mit 'ViewCDi'

Dateistruktur

Die in der BD-Map-Datei festgelegte, nicht ISO-9660-kompatible, Dateistruktur wird ab Sektor 00:00:20 auf der CD-i gespeichert.

Abbildung 5-17: Kontrolle der Dateistruktur mit 'ViewCDi'

Einzelner Sektor

Die Abbildung 5-18 zeigt den Sektor 31:02:23 der CIMEDIA-CD-i-Scheibe. Wie aus der linken Spalte in der Abbildung 5-17 ersichtlich ist [220], gehört dieser Mode-2-Form-2-Sektor zur RTF-Datei 'Ui.rtf'.

Abbildung 5-18: Kontrolle einzelner Sektoren mit 'ViewCDi'

Der vierten Zeile in Abbildung 5-18 kann entnommen werden, dass dieser Sektor Teil eines CLUT8-Assets ist. Von den eigentlichen Daten werden hier nur die ersten drei Zeilen angegeben. Da zur Speicherung des Synchronisationsteiles, des Headers und des Subheaders 24 Byte benötigt werden [221], beginnen die eigentlichen CLUT8-Daten erst bei Position 25 [222].

5.6 Programmierung

Die Programmierung der CD-i-Applikation kann auf eine der folgenden Arten durchgeführt werden:

  1. Verwendung eines Autorensystems
    Die Verwendung eines Autorensystems wie zum Beispiel 'MediaMogul' von 'OptImage' kann den Zeit- und Kostenaufwand der Programmierung gegenüber den beiden anderen Methoden deutlich verringern. Allerdings sind die Möglichkeiten der bekannten Autorensysteme derart begrenzt [223], dass sie zur Herstellung der CIMEDIA-Applikation nicht verwendet werden.
  2. Programmierung mit C unter Verwendung einer kommerziellen CD-i-Bibliothek
    C-Bibliotheken, wie beispielsweise Balboa von Philips, erlauben einem Programmierer die CD-i-Applikation in der Sprache C zu schreiben, wobei er von mehr oder weniger mächtigen Balboa-Bibliotheksfunktionen unterstützt wird. Da sich nach der Einarbeitung in die 1200 Seiten umfassende Balboa-Dokumentation die Hinweise über deren Fehleranfälligkeit häuften, wurde sie im CIMEDIA-Projekt nicht eingesetzt.
  3. Programmierung in C mit einer eigenen CD-i-Bibliothek
    Da also kein mächtiges Autorensystem und keine kommerzielle CD-i-Bibliothek zur Verfügung steht, müssen eigene Systeme entworfen werden. Im Rahmen dieser Arbeit wurde daher die CDiC-Bibliothek entwickelt, die wie Balboa einem C-Programmierer das Entwickeln der CD-i-Applikation wesentlich erleichtert. Diese CDiC-Bibliothek wird im Kapitel 6 vorgestellt.

5.6.1 Wahl des Compilers

Für CIMEDIA wird als Compiler der für viele Plattformen erhältliche C-Cross-Compiler von Microware verwendet. Dieser Compiler unterstützt leider kein ANSI-C, sondern nur reines K&R [224]-C. Allerdings kann mit dem C++-Compiler CFront von AT&T [225] echter ANSI-C-Code in K&R-C-Code konvertiert werden. In der Abbildung 5-19 wird dieses Verfahren dargestellt.

Abbildung 5-19: CD-i-Programmierung in ANSI-C

Die von Microware mitgelieferte 'CDi.l'-Bibliothek stellt die CD-RTOS-Befehle als linkbare C-Funktionen zur Verfügung. Der C-Cross-Compiler wird zusammen mit den Funktionen der 'CDi.l'-Bibliothek auf 600 Seiten Dokumentation von Microware zum Teil recht knapp beschrieben. Besonders unangenehm ist, dass keinerlei Beispielprogramme mitgeliefert werden.

Verwendung von C++

Da die von C++ verwendete Standardbibliothek von Microware nicht erhältlich ist, wird bei obiger Lösung die Verwendung von C++-Sprachelementen ausgeschlossen. Von ISG ist allerdings das Programm 'XLink' erhältlich, das aus normalen MPW-Objektdateien ein CD-RTOS-Modul erzeugt. Daher kann ein beliebiger MPW-Compiler verwendet werden.

Abbildung 5-20: CD-i-Programmierung mit MPW-C++

Die Verwendung der in Abbildung 5-19 präsentierten 'CDi.l'-Bibliothek ist wegen der unterschiedlichen Formate der Objektdateien von MPW und OS-9 nicht möglich. An ihrer Stelle kann CDiLib.o verwendet werden. Sie übernimmt die folgenden Aufgaben:

  1. Schnittstelle zu CD-RTOS
    Alle CD-RTOS-Betriebssystemaufrufe erfolgen in Assembler [226]. In CDiLib.o wird eine C-Schnittstelle zu CD-RTOS angeboten, wobei die unterschiedliche Parameterübergabe [227] berücksichtigt wird.
  2. C-Standardfunktionen
    Da viele C-Standardfunktionen betriebssystemabhängig sind, können nicht diejenigen des MPW-Compilers verwendet werden. Sie werden in CDiLib.o bereitgestellt.

'XLink' kann als Linker eingesetzt werden, der die Objektdateien der CD-i-Applikation, einige MPW-Bibliotheken und CDiLib.o zu einem CD-RTOS-Modul zusammenfügt.

Leider ist der Hersteller der CDiLib.o unbekannt [228]. Nach einiger Zeit stellte sich heraus, dass wichtige CD-RTOS-Funktionen nicht zur Verfügung gestellt werden. Zudem haben sich gravierende Fehler [229] eingeschlichen. Letztendlich waren diese Fehler der Grund dafür, dass die im Kapitel 6 vorgestellte CDiC-Bibliothek nicht in C++, sondern in ANSI-C geschrieben wurde.

Simulationsmodul

Da für CD-RTOS-Module kein Sourcelevel-Debugger angeboten wird, gestaltet sich die Fehlersuche bei der CD-i-Programmierung äusserst schwierig und mühsam. Eine Möglichkeit, diese Situation etwas zu verbessern, ist die Anwendung des in Abbildung 5-21 dargestellten Verfahrens.

Abbildung 5-21: Verwendung eines Sourcelevel-Debuggers

Der Think-C-Compiler erzeugt aus C++-Code [230] ein auf dem Macintosh ausführbares Programm, das zur Fehlersuche mit einem Sourcelevel-Debugger untersucht werden kann. Notwendig wird ein CD-i-Simulationsmodul, welches die CD-RTOS-Funktionsaufrufe simuliert. Zu Beginn des CIMEDIA-Projektes wurde diese Methode verwendet, um einige der implementierten Datenstrukturen und Algorithmen zu testen. Allerdings wurde das Simulationsmodul nur sehr einfach gehalten, da dessen Entwicklung den Rahmen des Projektes bei weitem gesprengt hätte. Trotzdem ist der Vorteil des Sourcelevel-Debugger so gewaltig, dass mit dieser Methode immer wieder einzelne Codeteile von Fehlern befreit wurden.


Fussnoten

[145] Wird auch als Script bezeichnet.

[146] Digital Analogue Tape.

[147] Die Flugansicht der Fabrik wurde von einem Künstler gemalt.

[148] Alle Bilder des Fabrikrundgangs wurden mit SoftImage hergestellt.

[149] Die Audio- und Bilddaten werden als Assets bezeichnet.

[150] Moderne CD-Brenner schreiben etwa 600 KByte pro Sekunde.

[151] Vergleiche hierzu Abschnitt 2.2.4.

[152] Vergleiche hierzu die Kapitel 3.3 und  4.1 bis 4.4.

[153] Die fünf Stunden Audiodaten der Interviews belegen 1,6 GByte (Mono, 44,1 kHz und 16 Bit).

[154] Vergleiche hierzu Abschnitt 5.2.

[155] Vergleiche hierzu Abschnitt 5.3.

[156] Vergleiche hierzu Abschnitt 5.4.

[157] Compact Disc Language.

[158] Ein Vergleich verschiedener Autorensysteme kann aus [Vaughan89] entnommen werden.

[159] Vergleiche hierzu die Kapitel 5.6, 6, und 7.

[160] Macintosh Programmers's Workshop.

[161] Die Cassiopée-Karte kostete 1993 30'000 Fr. Andere Systeme von Philips waren ab etwa 100'000 bFr. erhältlich.

[162] Audio Interchange File Format.

[163] 'SOX' wurde von Lance Norskog (thinman@netcom.com) entwickelt und ist auch unter dem Namen ST (Sound Tools) bekannt.

[164] 'SoundApp' wurde von Norman Franke (franke1@llnl.gov) entwickelt.

[165] Das WAVE-Format wird von Windows der Firma Microsoft verwendet.

[166] Das Verschieben und Umbenennen der Dateien kann mit MPW-Skripten automatisiert werden.

[167] Das nachträgliche Verändern der Lautstärke, so dass die volle Bandbreite der Quantisierung ausgenützt wird, bezeichnet man als Normalisierung. Der Vorteil liegt darin, dass die grösste Lautstärke einer Datei immer auf den maximal möglichen Wert gesetzt wird. Dadurch werden die Lautstärkeunterschiede einzelner Dateien minimiert.

[168] Beispielsweise treten Verzerrungen auf.

[169] Für CD-i-Bilder werden nur RGB-Werte zwischen 35 und 230 erlaubt.

[170] Vergleiche hierzu Abschnitt 4.3.2.3.

[171] Die Geometriedaten der Bilder konnten nicht vom HyperStudio bezogen werden.

[172] Vergleiche hierzu Abschnitt 8.1.2.

[173] Quicktime ist ein Standardformat zur Komprimierung von Videosequenzen.

[174] Vergleiche hierzu Tabelle 4-2.

[175] Ein einzelnes Bild eines Films wird als Frame bezeichnet.

[176] Vergleiche hierzu Abschnitt 5.4.2.4.

[177] Die Framerate definiert die Anzahl Frames pro Sekunde.

[178] Die Berechnung der optimalen Framerate wurde mit der Tabellenkalkulation Excel von Microsoft durchgeführt.

[179] Im Quicktime-Format werden die einzelnen Positionen der Bilder in Units angegeben.

[180] Die Wiedergabe wird dadurch vereinfacht, da das PCL-Signal verwendet werden kann. Vergleiche hierzu Abschnitt 4.4.9.

[181] Compact Disc Language. Der CDL-Compiler wird von der Firma ISG angeboten.

[182] Realtime Record.

[183] Vergleiche hierzu Abschnitt 5.5.

[184] Für jede Datei muss ein Label vergeben werden. Die Labels können nicht durch Variablen repräsentiert werden.

[185] Vergleiche hierzu die Abschnitte 5.4.3 und 5.4.4.

[186] Wird als Chunk bezeichnet.

[187] Vergleiche hierzu Abschnitt 3.3.3.

[188] Excel von Microsoft kann gut programmiert werden, was sich bei der Erstellung der vielen Tabellen als sehr nützlich erweist.

[189] Column Separated Value.

[190] Mit Level-B-Mono können insgesamt 9,6 Stunden Tondaten auf der CD gespeichert werden. Die verbleibenden 3,6 Stunden CD-Kapazität genügen jedoch nicht zur Speicherung der Videodaten.

[191] Diese Abbildung wurde mit dem Programm 'ViewRtr' von ISG hergestellt. 'ViewRtr' stellt die mit dem CDL-Compiler erzeugten RTF-Map-Dateien graphisch dar und wird vor allem zur Fehlersuche verwendet.

[192] Sie befinden sich ganz oben links in der Abbildung 5-8.

[193] acm steht für Audio-Level-C-Mono.

[194] Die normalen Schrifttafeln sind die, die während einer Frage dargestellt werden.

[195] Vergleiche hierzu Abschnitt 7.3.

[196] Vergleiche hierzu Abbildung 5-7.

[197] Vergleiche hierzu Abschnitt 7.3.

[198] Vergleiche hierzu Abschnitt 4.2.

[199] Vergleiche hierzu Abschnitt 3.3.3.

[200] Im Abspann werden in zufälliger Reihenfolge die Namen der Firmen und Personen genannt, die sich an der Entwicklung des CIMEDIA-Lehrprogramms beteiligt haben.

[201] Vergleiche hierzu Abbildung 5-7.

[202] Die Datei hat den Namen GUIDES.acm

[203] 75 Sektoren pro Sekunde / 8 Sektoren pro Frame.

[204] 2 Sektoren / 75 Sektoren pro Sekunde.

[205] Vergleiche hierzu Abschnitt 4.4.9.

[206] In CIMEDIA treten manchmal Probleme mit der Synchronisation auf, wenn nur zwei Kanäle verwendet werden.

[207] Das EOR-Bit wird in der mit 'e' bezeichneten Zeile der Abbildung 5-14 dargestellt.

[208] Vergleiche hierzu Abschnitt 4.4.9.

[209] Lexical Analyser.

[210] Yet Another Compiler-Compiler.

[211] Beispiele: insertAudio, insertPlte, insertIdat, insertDir, insertMovieAudio, insertMoviePict.

[212] Beispiele: addEor2LastSect, getAudioChanSect, getMinAudioChan, getNextChannel.

[213] Vergleiche hierzu Abbildung 5-7.

[214] Build Disc.

[215] Die Module wurden im Abschnitt 4.4.7.2 eingeführt. Das grundsätzliche Vorgehen zur Erstellung eines CD-RTOS-Moduls wird im Abschnitt 5.6 erläutert.

[216] Vergleiche hierzu Abschnitt 3.2.

[217] Die Attribute werden in der CD-i-Spezifikation im Green Book definiert. Sie können von den meisten CD-i-Geräten gelesen werden.

[218] Der Labelteil wird im Sektor 00:00:16 gespeichert. Da auf jeder CD-i-Scheibe die ersten zwei Sekunden mit Message-Sektoren gefüllt werden, ergibt sich eine eigentliche Sektorposition von 00:02:16. Umgerechnet in die entsprechende Nummer kann diese Position auch mit 166 (75*2+16) angegeben werden. 'ViewCDi' zeigt beide Werte.

[219] Vergleiche hierzu Abschnitt 3.1.4.

[220] Der Sektor 31:02:23 entspricht der Position 139500+150+23=139673. Ui.rtf beginnt bei 139671.

[221] Vergleiche hierzu Abschnitt 3.3.2.

[222] 25=$18. Im Datenteil der Abbildung 5-18 in der Mitte der zweiten Zeile. Das erste Byte ist $0E.

[223] Laut Aussage von Herrn Mischa Schaub, HyperStudio AG Muttenz.

[224] Kernighan und Ritchie, die beiden Väter der Sprache C.

[225] America Telephone and Telegraph.

[226] CD-RTOS ist wie OS-9 komplett in Assembler geschrieben. Deshalb bietet es auch nur Schnittstellen in Assembler an.

[227] MPW-C++ übergibt, wie die meisten C-Compiler, die Funktionsparameter auf dem Stack. Bei OS-9 und damit auch bei CD-RTOS werden die ersten zwei Parameter in den D0- und D1-Registern übergeben. Für alle weiteren wird danach der Stack verwendet.

[228] CDiLib.o wurde dem IAM von der HyperStudio AG überlassen.

[229] Zum Beispiel sind Fehler in Funktionen der String-, der Memory- und der Signalbehandlung vorhanden.

[230] Da der ANSI-C-Standard ein Bestandteil des C++-Standards ist, kann auch ANSI-C-Code verwendet werden.


Home

Index Zurück Weiter