-
Gebiet der
Erfindung
-
Diese
Erfindung bezieht sich auf Datendekompression und Datenübertragung
allgemein, insbesondere in Systemen, die digitalisierte Audio-,
Video- und andere Signale unter Verwendung einer oder mehrerer Kompressionstechniken
speichern und verarbeiten.
-
Hintergrund
der Erfindung
-
Digitale
Signaleinheiten („Einheiten") sind periphere
Computereinheiten, die die Schnittstelle zwischen Computern und
analoge Signale verarbeitenden Komponenten wie z.B. Mikrofonen,
Lautsprechern, Videokameras oder Cassettenrecordern bilden. Diese
Einheiten können
eine Vielfalt von Datentypen verarbeiten, darunter Video-, Grafik- und Audiosignale.
Beispielsweise sind „Audioeinheiten" Einheiten, die Audiodaten
verarbeiten. Eine allgemein bekannte Art von Audioeinheit ist eine „Soundkarte", die an einen Bus
in einem Computersystem angeschlossen werden kann. Es gibt eine
Menge kommerziell erhältlicher
Soundkarten.
-
Eine
digitale Signaleinheit tastet periodisch ein analoges Eingangssignal
ab und codiert die abgetastete Signalamplitude, um einen Fluss digitaler Wörter auszugeben,
der „Digitalsignale" oder „digitalisierte
Daten" darstellt.
Der zu den Daten gehörige Name
kann ihren Inhalt wiedergeben, z.B. „Audiodaten". Die Daten können in
Computerdateien gespeichert werden, beispielsweise als eine digitale
Darstellung von Musik oder Animation. Digitale Signale können auch
in Dateien eingebunden sein, die andere Arten von Daten enthalten,
z.B. können
Audiodaten in einer elektronischen Nachricht und in Dateien zur
Textverarbeitung oder Tabellenkalkulation enthalten sein.
-
Digitale
Signalanwendungen („Anwendungen") sind Programme,
die es einem Anwender erlauben, gespeicherte Digitalsignale zu manipulieren, beispielsweise
Musik zu komponieren oder ein Segment der Audiodaten aus einer Datei
zu entfernen und es in eine andere Datei einzufügen. Eine Menge solcher digitaler
Signalanwendungen sind kommerziell erhältlich. Anwendungen und digitale
Signaleinheiten wechselwirken mit Dateien aus gespeicherten Digitaldaten
mittels eines Ein-/Ausgabe-(E/A-)Bedienprogramms. Das Datei-E/A-Bedienprogramm kann
Bestandteil des Computerbetriebssystems sein und verwaltet die administrativen
Operationen des Öffnens
und Schließens
von Dateien und das eigentliche Speichern in und das Abrufen von
Daten aus einer Speichereinheit.
-
Eine
Anwendung kann mit einer digitalen Signalvorrichtung wechselwirken,
indem sie die Einheit anweist, ein analoges Eingangssignal in ein
Digitalsignal umzuwandeln und das Digitalsignal in einer Datei zu
speichern („Aufnahme"), oder die Einheit
anweist, ein Digitalsignal aus einer Datei abzurufen und dieses
in ein Analogsignal umzuwandeln („Wiedergabe"). Aufnahme und Wiedergabe
werden gewöhnlich als „Echtzeit"-Operationen bezeichnet,
da die erforderlichen Umwandlungen nicht länger als die eigentliche Zeitdauer
des Analogsignals dauern dürfen. Während der
Aufnahme, Wiedergabe und anderen Echtzeit-Operationen verarbeitet
die Anwendung die Digitaldaten nicht, sondern die digitale Signaleinheit wechselwirkt
direkt mit der Datei.
-
Die
zunehmende Verwendung digitaler Audio-, Video- und anderer signalverarbeitender
Anwendungen und Einheiten hat die Menge an digitalen Signaldaten,
die von Computern gespeichert und verarbeitet werden müssen, weiter
zunehmen lassen. Obwohl die Abtastrate und die Anzahl der Bits pro
Abtastung den für
die Speicherung eines gegebenen Digitalsignals tatsächlich benötigten Speicherplatz
bestimmen, ist der benötigte
Speicher im Allgemeinen verhältnismäßig groß. Digitalsignale
können jedes
Bit jeder Abtastung beinhalten, üblicherweise als „Puls-Code-modulierte (PCM)" oder „unkomprimierte" Signale bezeichnet.
Hingegen können
die Signale komprimiert sein, um den benötigten Speicherplatz zu verringern, üblicherweise
als „komprimierte" Signale bezeichnet.
-
Verschiedene
Techniken werden zur Durchführung
der Kompression verwendet. Diese Kompressionstechniken sind untereinander
nicht kompatibel, sodass eine mit einer Kompressionstechnik erzeugte
Datei nicht mit einer anderen Technik entpackt oder dekomprimiert
werden kann. Zu einigen der mehr gebräuchlichen Techniken gehören adaptive
Puls-Code-Modulation (APCM), μ-Law,
und Lauflängencodierung
(Run-Length-Encoding, RLE). In der Regel enthält eine Datei weder eine Mischung aus
komprimierten und unkomprimierten Daten noch Daten, die mit einer
Mischung von Kompressionstechniken erzeugt wurden.
-
In
einigen digitalen Signaleinheiten sind eine Hardwarekomponente,
die als digitaler Signalprozessor (DSP) bekannt ist, sowie ihr zugehöriger Speicher
und eine Steuerschaltung integriert. Hier werden im Folgenden ein
DSP und seine zugehörigen Komponenten
gemeinsam als ein „DSP" bezeichnet. Diese
Einheiten können
den DSP verwenden, um Digitalsignale zu komprimieren oder zu dekomprimieren
(COmpress/DECompress oder „CODEC"); dies wird üblicherweise
als eine „Hardware-CODEC"-Technik bezeichnet.
Mit DSP ausgestattete Einheiten können auch unkomprimierte Digitalsignale
verarbeiten, jedoch verschwendet dies Ressourcen, da mit DSP versehene
Einheiten teurer sind als Einheiten ohne DSPs.
-
Einheiten
ohne DSP können
die meisten komprimierten Digitalsignale nicht verarbeiten und arbeiten
folglich im Allgemeinen nur mit unkomprimierten Digitalsignalen.
Falls eine solche Einheit mit einer komprimierten Datei zu arbeiten
hat, muss die CODEC-Funktion von einer Software ausgeführt werden,
die auf einer Zentraleinheit (CPU) in einem zugehörigen Computer
läuft,
bevor die Einheit die Daten speichert oder aus der Datei abruft;
diese dazwischenliegende CODEC-Funktion wird üblicherweise als eine „Software-CODEC"-Technik bezeichnet.
-
Gelegentlich
passen der Datentyp einer komprimierten oder unkomprimierten Datei
und die Fähigkeit
einer Einheit, eine Hardware-CODEC-Funktion auszuführen, nicht
zueinander. Wenn diese Fehlanpassungen auftreten, führen sie
zu einem von zwei Hauptproblemen: herabgesetzte Systemleistung oder
geringe Ressourcen-Ausnutzung. Besonders die Verarbeitung einer
komprimierten Datei mit einer Einheit, die über keine Hardware-CODEC-Fähigkeiten
verfügt,
verlangt die Ausführung zusätzlicher
Verarbeitung durch die CPU, d.h. Softwarekompression/-dekompression,
und beeinträchtigt
so die gesamte Systemleistung negativ. Andererseits unterfordert
die Verarbeitung einer unkomprimierten Datei durch eine Einheit,
die Hardware-CODEC-Fähigkeiten
besitzt, den verhältnismäßig teuren DSP
und verschwendet Speicherplatz und E/A-Bandbreite, da eine komprimierte
Datei viel weniger Platz beanspruchen würde.
-
Bis
heute waren die Verfasser kommerzieller digitaler Signaldateien
in der Regel gezwungen, unkomprimierte Dateien zur Verfügung zu
stellen, um die höchste
erreichbare Kompatibilität
mit der Vielfalt der erhältlichen
Einheiten zu gewährleisten.
Dies beanspruchte große
Mengen an Datei-Speicherkapazität; ebenso
unterforderte es den DSP auf Systemen mit Einheiten, die eine Hardware-CODEC-Funktion ausführen können.
-
Auf ähnliche
Weise wie digitale Signaleinheiten müssen Anwendungen, die Digitalsignale
manipulieren, diese speichern und aus Dateien abrufen können, in
denen die Daten möglicherweise
mittels einer von vielen Kompressionstechniken komprimiert worden
sind. In Systemen nach dem Stand der Technik muss eine Anwendung,
um Daten zu speichern oder aus einer komprimierten Datei abzurufen,
eine Software-CODEC-Routine
enthalten, die zu der Kompressionsart der Datei passt.
-
Ferner
werden die Daten üblicherweise strukturiert,
wenn sie in einer Datei gespeichert werden. Die Struktur stimmt
speziell mit einem „Dateiformat" überein, d.h. einer Spezifikation
der Anordnung der Datenwörter
im Datenteil der Datei sowie dem Inhalt und der Gliederung eines
Dateikopfes. Dateiformate sind unabhängig vom Dateiinhalt, und darüber hinaus
vermögen
Anwendungen mehrere Dateien zu erzeugen, die alle den gleichen Datentyp
enthalten, aber verschiedene Dateiformate verwenden. Dateien werden
oft unter verschiedenen Betriebssystemen unterschiedlich formatiert,
z.B. MS-DOS und OS/2(R). Folglich muss jede
Software-CODEC-Routine so geschrieben werden, dass Daten sowohl
mittels einer speziellen Kompressionstechnik als auch eines speziellen
Dateiformates komprimiert und dekomprimiert werden können. Da
es eine Vielzahl von Kompressionsarten und Dateiformaten gibt, muss
jede Anwendung viele solcher Software-CODEC-Routinen beinhalten,
um mit so viel wie möglichen
Kompressionsarten und Dateiformaten kompatibel zu sein.
-
Jedoch
haben Anwendungen, die viele CODEC-Routinen beinhalten, Probleme
mit der Programmgröße und Programmkomplexität. Große oder komplexe
Programme sind schwieriger zu schreiben, auszutesten und zu pflegen.
Jeder Anwendungsentwickler muss CODEC-Routinen duplizieren, die
bereits in anderen Anwendungen vorhanden sind, womit das Problem
des doppelten Aufwands entsteht. Es werden fortwährend neue Kompressionstechniken
entwickelt, womit die Aktualisierung bestehender Anwendungen problematisch
wird. Andererseits hat eine Anwendung mit nur einer oder einer kleinen
Anzahl von CODEC-Routinen den Nachteil, dass sie nur eine begrenzte
Anzahl von Kompressionsarten und Dateiformaten verarbeiten kann.
-
Einige
der Systeme nach dem Stand der Technik unterstützen daher mehrere Kompressionsarten.
Diese Systeme lassen sich in zwei Gruppen aufteilen: „reine
Hardware"-CODEC-Systeme
und „reine
Software"-CODEC-Systeme.
Reine Hardware-CODEC-Systeme gewährleisten
die Fähigkeit der
Einheit, jede Datei verarbeiten zu können, indem sie stets einen
DSP voraussetzen. Diese Systeme haben zwei Nachteile. Sie schließen die Verwendung weniger
teurer Einheiten aus, die keinen DSP verwenden, und da sie die zwischen
Anwendungen und Dateien übertragenen
Daten nicht komprimieren oder dekomprimieren, scheitern sie daran,
das Problem der Anwendungsgröße und Anwendungskomplexität zu lösen.
-
Es
gibt auch reine Software-CODEC-Systeme, die alle CODEC-Funktionen unabhängig davon, ob
ein DSP verfügbar
ist, in Software ausführen.
Das Datei-E/A-Bedienprogramm in diesen Systemen erkennt typischerweise
das Format einer Datei und welche Kompressionstechnik ggf. verwendet
wurde, indem der Dateikopf beim Öffnen
der Datei gelesen wird. Das Datei-E/A-Bedienprogramm unterhält eine Bibliothek
von CODEC-Routinen. Mittels der passenden Routine transferiert das
Datei-E/A-Bedienprogramm
unkomprimierte Daten zu und von der Anwendung oder der Einheit,
unabhängig
von der Kompressionsart der Datei. Ist jedoch eine mit einem DSP ausgestattete
Einheit verfügbar,
verschwenden diese Systeme wertvolle CPU-Zeit mit der Ausführung von Software-CODEC-Funktionen
und beeinträchtigen deswegen
die Gesamtleistung des Systems.
-
Infolgedessen
lösen weder
reine Hardware- noch reine Software-CODEC-Systeme die Probleme der Ressourcen-Ausnutzung,
der Anwendungsgröße und der
Anwendungskomplexität.
-
Die
europäische
Patentanmeldung
EP
0 512 174 A1 beschreibt ein Verfahren und eine Vorrichtung zur
Datenübermittlung,
in die Hardware- und Software-Datenkompression zusammen mit der
Gliederung und dem Wiederaufbau der Datendatei integriert sind.
Die Art der verwendeten Datenkompression wird vom Datentyp bestimmt.
-
Zusammenfassung
der Erfindung
-
Entsprechend
stellt die vorliegende Erfindung in Reaktion auf eine Anforderung
ein Verfahren zur Datenübertragung
einschließlich
komprimierter Daten an Nutzungsmittel bereit, wobei das Verfahren die
folgenden Schritte umfasst: Ermitteln, ob die Nutzungsmittel Hardware
zur Dekomprimierung der komprimierten Daten enthalten; Feststellen
einer zur Komprimierung der komprimierten Daten verwendeten Kompressionstechnik; Übertragen
der komprimierten Daten an die Nutzungsmittel; Verwenden einer Softwareroutine
zur Dekomprimierung der komprimierten Daten, falls die Nutzungsmittel
die Hardware nicht enthalten; und Steuern der Hardware, um die komprimierten
Daten gemäß der Kompressionstechnik
zu dekomprimieren, falls die Nutzungsmittel die Hardware enthalten.
-
Gemäß einem
anderen Aspekt stellt die Erfindung auch ein Datenübertragungssystem
zur Übertragung
von Daten einschließlich
komprimierter Daten an Nutzungsmittel in Reaktion auf eine Anforderung
bereit, wobei das System Folgendes umfasst: auf die Anforderung
reagierende Mittel zur Ermittlung, ob die Nutzungsmittel Hardware
zur Dekomprimierung der komprimierten Daten enthalten; auf die Anforderung
reagierende Mittel zur Feststellung einer Kompressionstechnik, die
zur Komprimierung der komprimierten Daten verwendet wurde; ein auf
die Anforderung reagierendes Datei-E/A-Bedienprogramm zur Übertragung
der Daten an die Nutzungsmitteln, wobei während der Datenübertragung
an die Nutzungsmittel das Datei-E/A-Bedienprogramm
zur Dekomprimierung der komprimierten Daten steuerbar ist; mit den
Ermittlungs- und Feststellungsmitteln zusammenarbeitende Mittel
zur Steuerung des Datei-E/A- Bedienprogramms,
um die Daten zu dekomprimieren, falls die Nutzungsmittel die Hardware
nicht enthalten; und Mittel zur Steuerung der Hardware zur Dekomprimierung
der komprimierten Daten nach der Kompressionstechnik, falls die
Nutzungsmittel die Hardware enthalten.
-
Systeme
in Einklang mit der Erfindung können
zwischen einem gebräuchlichen,
umkomprimierten Datenformat und jedem von mehreren Datenformaten übersetzen.
Diese Systeme wählen
dynamisch aus, ob die Ausführung
der Übersetzung
in Software oder in Hardware erfolgt. Diese Systeme entscheiden
anhand des jeweiligen zur Datenkompression verwendeten Formates
sowie dem Vorhandensein oder der Abwesenheit von Hardware-Ressourcen
zur Übersetzung.
-
Dies
wird erreicht, indem dynamisch zwischen Hardware- und Software-CODEC-Techniken anhand
der verfügbaren
Hardware-Ressourcen
und der Kompressionsart jeder Datei ausgewählt wird. Die Erfindung stellt
ferner ein gewöhnliches,
unkomprimiertes Format zum Datenaustausch zwischen Anwendungen und
Datendateien zur Verfügung,
das unabhängig
von der Kompressionstechnik oder dem Dateiformat ist, in dem die
Datendatei erzeugt wurde.
-
Genauer
betrachtet wird in einer bevorzugten Ausführungsform der Erfindung ein
digitalen Signalverwalter verwendet, der zwischen dem Datei-E/A-Bedienprogramm
und den digitalen Signaleinheiten oder den Anwendungsprogrammen
angeordnet ist. In Reaktion auf die Kompressionsart einer Datei,
wie sie im Dateikopf angegeben ist, und die Merkmale der digitalen
Signaleinheit, wie sie in einer „Ressourcendatei" gespeichert sind
oder vom digitalen Signalverwalter erkannt oder direkt von der digitalen
Signaleinheit angefordert werden, wählt der digitale Signalverwalter
dynamisch entweder eine Hardware- oder
eine Software-CODEC-Technik für die Übertragung
zwischen der digitalen Signaleinheit und der Datei aus. Der digitale
Signalverwalter stellt auch ein gewöhnliches Format zum Datenaustausch für die Anwendungsprogramme
zur Verfügung,
welches nach einer veranschaulichenden Ausführungsform aus unkomprimierten
Daten besteht. So muss sich jede Anwendung nur mit einer einzigen
Kompressionsart und einem einzigen Dateiformat befassen.
-
Genauer
weist der digitale Signalverwalter in Reaktion auf eine Anforderung
der Anwendung zum Öffnen
einer Datei, falls eine bestehende Datei komprimierte Daten enthält oder
eine neue Datei komprimierte Daten enthalten soll, das Datei-E/A-Bedienprogramm an,
die geeignete Dekompressions-Routine einzuleiten, wenn die Anwendung
Daten aus der Datei abruft, und die geeignete Kompressions-Routine
einzuleiten, wenn die Anwendung Daten in der Datei speichert. Falls
die Datei unkomprimierte Daten enthält oder eine neue Datei komprimierte
Daten enthalten soll, weist der digitale Signalverwalter das Datei-E/A-Bedienprogramm
an, die Daten unmodifiziert zwischen der Anwendung und der Datei
zu übergeben.
D.h., der digitale Signalverwalter erweckt für die Anwendung den Eindruck,
als wären
alle Dateien unkomprimiert. Dieses gewöhnliche, unkomprimierte Dateiformat
bringt Kompatibilität
unter im Wesentlichen allen Anwendungen und allen digitalen Signaldateien
mit sich, unabhängig
von den ggf. bei der Erzeugung der Dateien eingesetzten Kompressionstechniken.
-
Der
digitale Signalverwalter verwaltet Ressourcendateien, die ausgewählte Betriebsmerkmale jeder
verfügbaren
digitalen Signaleinheit enthalten. Die Ressourcendateien können beispielsweise
von den Verkäufern
der Einheiten bereitgestellt werden. Diese Merkmale beinhalten Informationen
bzgl. der Betriebsart/-en der Einheit, einschließlich der Abtastrate für jede Betriebsart,
d.h. die Anzahl der von der Einheit in der Sekunde ausgeführten Abtastungen; der
Präzision,
d.h. die Anzahl der Datenbits pro Abtastung; und die Anzahl der
verwendeten Analogkanäle.
Die Ressourcendateien beinhalten auch zusätzliche Informationen wie z.B.
das Vorhandensein und die Menge an Hardware-Komponenten in der Einheit,
die zur Datenkompression oder -dekompression nützlich sind, z.B. ein DSP und
die dem DSP verfügbare
Speicherkapazität.
-
In
Reaktion auf eine Anforderung der Anwendung, eine Dateikennung zwischen
einer bestehenden Datei und einer digitalen Signaleinheit einzurichten,
verwendet der digitale Signalverwalter das Datei-E/A-Bedienprogramm,
um den Dateikopf zu lesen und die Dateimerkmale festzustellen. Zu
diesen Merkmalen gehören
die Abtastrate, Präzision,
Anzahl der Kanäle
und die ggf. zur Erzeugung der Datei eingesetzte Kompressionstechnik.
Falls die Anwendung eine neue Datei erklärt, kann die Anwendung die
Dateimerkmale festlegen, obwohl das Datei-E/A-Bedienprogramm Standardmerkmale
vorgibt. Der digitale Signalverwalter verwendet sowohl die Dateimerkmale
als auch die Hardwaremerkmale der Einheit, wie sie in der Ressourcendatei
wiedergegeben sind, um zu entscheiden, ob die Einheit die Daten
direkt verarbeiten kann oder die Daten zuerst von einer Software-CODEC-Routine
komprimiert oder dekomprimiert werden müssen.
-
Der
digitale Signalverwalter steuert daraufhin das Datei-E/A-Bedienprogramm, um
die Daten auf dementsprechende Weise zu übertragen. Falls der digitale
Signalverwalter beispielsweise feststellt, dass die Einheit die
Daten in der Datei direkt verarbeiten kann, passt der digitale Signalverwalter
die Betriebsmerkmale der Einheit so gut wie möglich an die Merkmale an, mit
denen die Datendatei erzeugt wurde. Der digitale Signalverwalter
weist dann das Datei-E/A-Bedienprogramm
an, die Daten zwischen der Einheit und der Datei direkt weiterzuleiten,
d.h., ohne dass das Datei-E/A-Bedienprogramm
die Daten komprimiert oder dekomprimiert.
-
Falls
der digitale Signalverwalter hingegen feststellt, dass die Daten
komprimiert oder dekomprimiert werden müssen, beauftragt der digitale
Signalverwalter das Datei-E/A-Bedienprogramm,
die geeignete Dekompressionsroutine einzuleiten, wenn die Einheit
aus der Datei liest, und die geeignete Kompressionsroutine einzuleiten,
wenn die Einheit in die Datei schreibt; das Datei-E/A-Bedienprogramm
führt Kompression/-Dekompression
in Software aus.
-
Die
Verwendung des digitalen Signalverwalters zur Entscheidung, ob die
Daten mit einer Software-CODEC-Routine komprimiert oder dekomprimiert werden
müssen,
verbessert die Ressourcen-Ausnutzung. Wann immer es möglich ist,
wird ein DSP zur Datenverarbeitung eingesetzt, was die Zentraleinheit (CPU)
zur Ausführung
anderer Funktionen freigibt. Die CPU führt Kompression/-Dekompression
in Software nur dann aus, wenn die Einheit nicht in der Lage ist,
die Daten direkt zu verarbeiten; dennoch sind Einheiten ohne DSPs
nicht auf den Betrieb mit unkomprimierten Datendateien beschränkt.
-
Kurze Beschreibung der
Zeichnungen
-
Die
obigen und weitere Vorteile der Erfindung werden besser verstanden,
wenn Bezug auf die folgende Beschreibung in Verbindung mit den beigefügten Zeichnungen
genommen wird, in denen:
-
1 ein
schematisches Blockschaltbild eines Computers ist, auf dem eine
Ausführungsform der
Erfindung eingerichtet werden kann;
-
2 ein
schematisches Blockschaltbild ist, das ein System zur Datenübertragung
nach der Erfindung in Beziehung mit anderen Software- und Hardwarekomponenten
darstellt, mit denen es wechselwirkt.
-
3 ein
Flussdiagramm ist, das Aspekte eines Verfahrens nach der Erfindung
in Zusammenhang mit dem in 2 veranschaulichten
System darstellt;
-
4 ein
Flussdiagramm ist, das ein Verfahren nach der Erfindung in Zusammenhang
mit dem in 2 veranschaulichten System darstellt;
und
-
5A, 5B und 5C zusammen
ein Flussdiagramm bilden, das einen Teil des in 4 veranschaulichten
Verfahrens genauer abbildet.
-
Ausführliche
Beschreibung der veranschaulichenden Ausführungsformen
-
Die
Erfindung wird bevorzugt in Zusammenhang mit einem Betriebssystems
ausgeführt,
das sich auf einem Personalcomputer befindet wie z.B. das in 1 vorgestellte System.
Der Computer 100 wird von einer Zentraleinheit (CPU) 102,
die ein gewöhnlicher
Mikroprozessor sein kann, und von einer Reihe weiterer Einheiten,
die zur Lösung
bestimmter Aufgaben vorgesehen sind, gesteuert. Ein Systembus 104 verbindet
die CPU 102 und die anderen Einheiten. Obwohl ein bestimmter
Computer nur manche der in 1 dargestellten
Einheiten oder weitere nicht abgebildete Komponenten haben kann,
werden die meisten Computer zumindest die abgebildeten Einheiten
beinhalten. Insbesondere enthält
der Computer 100 einen Nur-Lese-Speicher (ROM) 106 zur permanenten
Speicherung der Computerkonfiguration und grundlegender Betriebsbefehle;
einen Zufalls-Zugriffs-Speicher (RAM) 108 zum vorübergehenden
Speichern von Befehlen und Daten; einen Ein-/Ausgabe-(E/A) Adapter 110 zur
Verbindung mit peripheren Einheiten wie z.B. einer Disketteneinheit 112;
einen Tastaturadapter 114 zum Anschluss einer Tastatur 116;
einen Anzeigenadapter 118 zum Anschluss einer Anzeige 120;
und eine digitale Signaleinheit, die in diesem Beispiel eine Soundkarte 122 zum
Anschluss eines Lautsprechers 124 und eines Mikrofons 126 ist.
Hier werden im Folgenden der ROM 106, der RAM 108 und
die Disketteneinheit 112 gemeinsam als die „Datenspeichereinheit" bezeichnet.
-
2 zeigt
verschiedene Dateien, die Programme und Daten enthalten und in den
verschiedenen Datenspeichereinheiten in dem System vorliegen. Das
System kann eine oder mehrere digitale Signaleinheiten enthalten,
beispielsweise 200a, 200b und 200c. Optional
können
eine oder mehrere Einheiten wie z.B. 200c einen digitalen
Signalprozessor (DSP) 202 beinhalten. In der bevorzugten
Ausführungsform
der Erfindung stellt der Verkäufer
der Einheit auch eine Ressourcendatei zur Verfügung, beispielsweise 204a, 204b oder 204c,
entsprechend der Einheit 200a, 200b bzw. 200c.
Hier wird im Folgenden die Ressourcendatei als „Ressourcendatei 204" bezeichnet. Jede
Ressourcendatei 204 listet auf, ob die zugehörige Einheit 200 beispielsweise
einen DSP enthält,
die dem DSP zugehörige
Speicherkapazität, die
anpassungsfähigen
Merkmale der Einheit 200 und den Wertebereich dieser Merkmale.
Die Verwendung der Ressourcendatei wird weiter unten genauer beschrieben.
-
Das
System enthält
eine oder mehrere Anwendungen, beispielsweise 206a, 206b und 206c, die
alle im RAM 108 oder ROM 106 aus 1 vorliegen.
Hier wird im Folgenden die Anwendung als „Anwendung 206" bezeichnet.
-
Die
digitalen Signaldateien 208, 210a, 210b und 210c enthalten
Digitalsignale, und die Datei 208 enthält unkomprimierte Daten. Die
Dateien 210a, 210b und 210c enthalten
dagegen mit verschiedenen Kompressionstechniken komprimierte Daten, obgleich
es mehr als drei solcher Techniken gibt. Jede Datei enthält einen
Datenteil, der Digitalsignale enthält, und einen Dateikopf, der
Merkmale des Datenteils angibt, z.B. die Abtastrate, Anzahl der
Bits pro Abtastung und das Kompressionsformat, d.h. unkomprimiert
oder die Kompressionstechnik. Die Anwendung 206 oder die
Einheit 200 wechselwirkt mit einer Datei 208 oder 210 über ein
Datei-Ein-/Ausgabe-(E/A-)Bedienprogramm 212.
Das Datei-E/A-Bedienprogramm 212 ist
Teil des Computerbetriebssystems 214 und verwaltet die
administrativen Operationen des Öffnens
und Schließens
von Dateien und das tatsächliche
Speichern in eine und das Abrufen von Daten aus einer Speichereinheit.
Das Betriebssystem 214 und sein Datei-E/A-Bedienprogramm 212 befinden
sich im RAM 108 und/oder ROM 106 aus 1.
-
Eine
Anwendung 206 kann zwei Arten von Operationen ausführen. Bei
der ersten Art liest und/oder schreibt die Anwendung 206 ein
Digitalsignal in eine oder mehrere Dateien 208 und/oder 210, um
eine Operation in Nicht-Echtzeit auszuführen, beispielsweise um ein
Segment von Audiodaten aus einer Datei herauszuschneiden und es
in eine andere Datei einzufügen.
Bei der zweiten Operationsart beauftragt die Anwendung 206 die
Einheit 200, eine Echtzeit-Operation auszuführen, beispielsweise
die Aufnahme oder Wiedergabe, und daraufhin liest die Einheit 200 aus
einer oder schreibt ein Digitalsignal in eine Datei 208 oder 210.
Diese beiden Operationsarten sind weiter unten ausführlicher
beschrieben.
-
Wenn
eine Operation erster Art, d.h. eine in Nicht-Echtzeit, ausgeführt wird,
sendet die Anwendung 206 eine Anforderung an das Betriebssystem 214,
d.h. an einen digitalen Signalverwalter 216. Die Anforderung
kennzeichnet die Datei 208 oder 210 zur Verarbeitung.
Der digitale Signalverwalter 216 führt Operationen aus, die im
Flussdiagramm in 3 allgemein veranschaulicht
sind. So beginnt der digitale Signalverwalter 216 in Schritt 300 und
sendet in Schritt 302 eine Anforderung an das Datei-E/A-Bedienprogramm 212,
die Datei 208 oder 210 zu öffnen und festzustellen, welche
Kompressionstechnik ggf. zur Erzeugung der Datei verwendet wurde
und in welchem Format die Datei vorliegt.
-
Das
Datei-E/A-Bedienprogramm 212 kann eine „E/A-Prozedur" für jede Kombination
aus Dateiformat und Speichermedium, die vom System unterstützt wird,
enthalten, z.B. 218a, 218b oder 218c. Jede
E/A-Prozedur ist in der Lage, Daten in einer Datei zu speichern
oder aus einer Datei abzurufen sowie zwischen dem Dateiformat und
einem gewöhnlichen
Format zu übersetzen.
Das Datei-E/A-Bedienprogramm 212 fragt die E/A-Prozeduren
ab, bis es eine findet, von der die Datei 208 oder 210 erkannt wird;
das Datei-E/A-Bedienprogramm verwendet diese E/A-Prozedur für alle Übertragungen
zu und von der Datei 208 oder 210. Diese Anordnung,
die nicht Teil der vorliegenden Erfindung ist, wird ausführlicher beschrieben
in der gemeinschaftlich zugewiesenen US-Patentanmeldung mit der
Seriennummer 07/960 976, eingereicht am 31. Dezember 1991 von D.
M. Dorrance u.a. „Data
Processing File Format Transparency System", die hiermit als Bezug aufgenommen
wird. Das Datei-E/A-Bedienprogramm erkennt auch, welche Kompressionstechnik
ggf. verwendet wurde, um die Datei 208 oder 210 zu
erzeugen, indem der Dateikopf gelesen wird, und es stellt diese Informationen
dem digitalen Signalverwalter zur Verfügung.
-
In
Schritt 304 untersucht der digitale Signalverwalter 216 die
Antwort des Datei-E/A-Bedienprogramms 212. Falls die Datei
unkomprimiert ist, richtet der digitale Signalverwalter 216 in
Schritt 306 eine Dateikennung 220 zwischen dem
Datei-E/A-Bedienprogramm 212 und
der Anwendung 206 ein. Eine Dateikennung wird manchmal
als „Kanal" bezeichnet, und
es ist bestens bekannt, wie ein Dateizeiger eingerichtet wird, siehe
z.B. Multimedia Presentation Manager Programmer Reference, IBM Bezugsnummer
71G2222. Die Anwendung 206 liest dann aus der Datei 208 und/oder
schreibt in sie. Der digitale Signalverwalter schließt die Operation
in Schritt 308 ab.
-
Falls
die Datei komprimiert ist, lädt
das Datei-E/A-Bedienprogramm 212 die
zugehörige
Kompressionsart-spezifische Kompressions-/Dekompressions-(COmpression/DECompression
oder CODEC) Routine, z.B. 222a, 222b oder 222c,
in das Datei-E/A-Bedienprogramm.
Dieser Vorgang, der nicht Teil der vorliegenden Erfindung ist, wird
ausführlicher beschrieben
in gemeinschaftlich zugewiesenen US-Patentanmeldung mit der Seriennummer 07/981040 „Software
Mechanism for Providing CODEC Transparency", eingereicht am 24. November 1992 von
Fetchi Chan und Michael Dorrance, die hiermit als Bezug aufgenommen
wird. Der digitale Signalverwalter 216 richtet in Schritt 310 eine
Dateikennung 220 zwischen dem Datei-E/A-Bedienprogramm 212 und
der Anwendung 206 ein. Der digitale Signalverwalter weist
das Datei-E/A-Bedienprogramm 212 an, die geeignete CODEC-Routine 222 zur
Datenübertragung
zwischen der Anwendung 206 und der Datei 210 zu
verwenden. Die CODEC-Routine 222 dekomprimiert die Daten,
wenn die Anwendung 206 aus der Datei 210 liest,
und komprimiert die Daten, wenn die Anwendung 206 in die
Datei 210 schreibt. Der digitale Signalverwalter 216 schließt die Operation
in Schritt 308 ab.
-
Auf
diese Weise gewährleistet
der digitale Signalverwalter 216, dass die Anwendung 206 Daten mit
der Datei 208 oder 210 in einem gewöhnlichen, unkomprimierten
Format austauscht.
-
Bei
der zweiten Operationsart weist die Anwendung 206 eine
Einheit 200 an, eine Echtzeit-Operation auszuführen. Das
Flussdiagramm in 4 veranschaulicht den Betrieb
des digitalen Signalverwalters 216 allgemein, wenn er eine
Operation dieser Art ausführt.
Die Anwendung 206 sendet eine Anforderung an das Betriebssystem 214,
d.h. den digitalen Signalverwalter 216. Die Anforderung
gibt an, dass die Anwendung 206 eine Einheit 200 anweist,
ein Digitalsignal in einer Datei 208 oder 210 zu
lesen oder in diese zu schreiben.
-
Der
digitale Signalverwalter 216 beginnt in Schritt 400.
Er stellt in Schritt 402 fest, welche Merkmale der Einheit 200 angepasst
werden können
sowie den Wertebereich dieser Merkmale. In der bevorzugten Ausführungsform
ermittelt der digitale Signalverwalter 216 die Merkmale
der Einheit, indem er in Schritt 402 die Ressourcendatei 204 liest.
In einer anderen Ausführungsform
stellt er die Merkmale der Einheit fest, indem er die Einheit 118 befragt.
Zu diesen Merkmalen gehören
die Anzahl der Abtastungen in der Sekunde; die Präzision,
d.h. die Anzahl der Datenbits pro Abtastung; und die Anzahl der
verwendeten Kanäle.
Der digitale Signalverwalter ermittelt in Schritt 402 auch,
ob die Einheit 200 einen DSP 202 besitzt und wenn
ja, die Speicherkapazität,
die dem DSP zur Verfügung
steht.
-
In
Schritt 404 sendet der digitale Signalverwalter 216 eine
Anforderung an das Datei-E/A-Bedienprogramm 212, die Datei 208 oder 210 zu öffnen und
zu ermitteln, welche Kompressionstechnik ggf. zur Erzeugung der
Datei verwendet wurde. In Schritt 406 untersucht der digitale
Signalverwalter 216 die Antwort des Datei-E/A-Bedienprogramms 212.
Falls die Datei unkomprimiert ist, legt der digitale Signalverwalter 216 in
Schritt 408 die anpassungsfähigen Merkmale der Einheit
fest und weist hiermit die Einheit 200 an, ein unkomprimiertes
Digitalsignal zu verarbeiten. Der digitale Signalverwalter 216 legt
die anpassungsfähigen
Merkmale der Einheit anhand bestens bekannter Mittel fest, beispielsweise
durch Setzen und Löschen
der entsprechenden Bits in den Steuerregistern der Einheit. Der
digitale Signalverwalter 216 richtet in Schritt 410 eine
Dateikennung 224 zwischen dem Datei-E/A-Bedienprogramm 212 und
der Einheit 200 ein. Die Einheit 200 liest und/oder
schreibt dann aus der oder in die Datei 208. Der digitale
Signalverwalter schließt
die Operation in Schritt 412 ab.
-
Falls
die Datei komprimiert ist, ermittelt der digitale Signalverwalter 216 in
Schritt 414, ob die Einheit 200 über einen
DSP 202 und ausreichend Speicher zur Verarbeitung des Digitalsignals
verfügt.
Falls die Einheit 200 keinen DSP oder keinen ausreichenden
Speicher hat, richtet der digitale Signalverwalter 216 in
Schritt 416 eine Dateikennung 224 zwischen dem
Datei-E/A-Bedienprogramm 212 und der Einheit 200 ein.
Der digitale Signalverwalter 216 weist das Datei-E/A-Bedienprogramm 212 an,
für die
Datenübertragung
zwischen der Einheit 200 und der Datei 210 eine
CODEC-Routine 222 anzuwenden. Die CODEC-Routine 222 dekomprimiert
die Daten, wenn die Einheit 200 aus der Datei 210 liest,
und komprimiert die Daten, wenn die Einheit 200 in die
Datei 210 schreibt. Obgleich die Datei 210 tatsächlich komprimiert
vorliegt, verarbeitet die Einheit 200 dann unkomprimierte
Daten. Deshalb legt in Schritt 418 der digitale Signalverwalter 216 die
anpassungsfähigen Merkmale
der Einheit fest und weist so die Einheit 200 an, ein unkomprimiertes
Digitalsignal zu verarbeiten. Der digitale Signalverwalter 216 schließt die Operation
in Schritt 412 ab.
-
Falls
die Einheit 200 über
einen DSP und zur Verarbeitung des Digitalsignals ausreichenden
Speicher verfügt,
berechnet der digitale Signalverwalter 216 in Schritt 420 die
zugehörigen
Werte für
die anpassungsfähigen
Merkmale der Einheit. Der digitale Signalverwalter gleicht diese
Werte so genau wie möglich
an die Merkmale an, mit denen die digitale Signaldatei erzeugt wurde.
Der digitale Signalverwalter 216 berechnet die Anzahl der
Bits pro Abtastung, die Anzahl der Kanäle und die Abtastrate (die
Anzahl der Abtastungen in der Sekunde), die von der Einheit 200 verwendet
werden müssen.
-
Die
Flussdiagramme in 5A, 5B und 5C veranschaulichen
allgemein die Operationen in Schritt 420. Wie zuerst in 5A gezeigt
ist, beginnt der digitale Signalverwalter 216 die Berechnung
der Anzahl-der-Bits-pro-Abtastung in Schritt 500 und legt
in Schritt 502 die „momentane
Näherung" für die Anzahl
der Bits pro Abtastung in der ersten Betriebsart der Einheit fest.
In Schritt 504 prüft
er, ob es noch weitere Betriebsarten der Einheit gibt, die berücksichtigt
werden müssen.
Falls keine weiteren Betriebsarten zu berücksichtigen sind, legt der
digitale Signalverwalter in Schritt 506 die „Anzahl
der Bits für
die bestens übereinstimmende
Abtastung" als die „momentane
Näherung" fest und geht in
Schritt 508 zum Flussdiagramm in 5B über.
-
Falls
weitere Betriebsarten zu berücksichtigen
sind, legt der digitale Signalverwalter 216 in Schritt 510 „X" als die Anzahl der
Bits pro Abtastung in der nächsten
Betriebsart der Einheit fest. In Schritt 512 legt der digitale
Signalverwalter 216 „A" als den Absolutwert
der Differenz aus der Anzahl der Bits pro Abtastung in der Datei 210 und
der „momentanen Näherung" fest. In Schritt 514 legt
der digitale Signalverwalter 216 „B" als den Absolutwert der Differenz aus
der Anzahl der Bits pro Abtastung in der Datei 210 und „X" fest. In Schritt 516 vergleicht
der digitale Signalverwalter 216 „A" mit „B". Ist „B" größer als „A", fällt der
digitale Signalverwalter in der Schleife zum Schritt 504 zurück.
-
In 5B beginnt
der digitale Signalverwalter 216 die Berechnung der Anzahl
der Kanäle
in Schritt 600 und bestimmt in Schritt 602 die „momentane
Näherung" als die Anzahl der
Kanäle
in der ersten Betriebsart der Einheit. In Schritt 604 prüft er, ob es
noch weitere Betriebsarten der Einheit 200 gibt, die berücksichtigt
werden müssen.
Falls keine weiteren Betriebsarten zu berücksichtigen sind, legt der
digitale Signalverwalter in Schritt 606 die „Anzahl
der Kanäle
mit der besten Übereinstimmung" als die „momentane
Näherung" fest und geht in
Schritt 608 zum Flussdiagramm in 5C über.
-
Falls
weitere Betriebsarten zu berücksichtigen
sind, legt der digitale Signalverwalter 216 in Schritt 610 „X" als die Anzahl der
Kanäle
in der nächsten
Betriebsart der Einheit fest. In Schritt 612 legt der digitale
Signalverwalter „A" als den Absolutwert
der Differenz aus der Anzahl der Kanäle der Datei 210 und
der „momentanen
Näherung" fest. In Schritt 614 legt
der digitale Signalverwalter 216 „B" als den Absolutwert der Differenz aus
der Anzahl der Kanäle
in der Datei 210 und „X" fest. In Schritt 616 vergleicht
der digitale Signalverwalter 216 „A" mit „B". Ist „B" größer als „A", springt der digitale
Signalverwalter in der Schleife direkt zu Schritt 604 zurück. Andernfalls
legt er „X" als die „momentane
Näherung" fest und springt
in der Schleife zum Schritt 604 zurück.
-
In 5C beginnt
der digitale Signalverwalter 216 die Berechnung der Abtastrate
in Schritt 700 und legt in Schritt 702 die „momentane
Näherung" als die Abtastrate
in der ersten Betriebsart der Einheit fest. In Schritt 704 prüft er, ob
die Einheit noch weitere Betriebsarten hat, die berücksichtigt
werden müssen.
Falls keine weitere Betriebsarten zu berücksichtigen sind, legt der
digitale Signalverwalter in Schritt 706 die „Abtastrate
mit der besten Übereinstimmung" als die „momentane
Näherung" fest und schließt die Operation
in Schritt 708 ab.
-
Falls
weitere Betriebsarten zu berücksichtigen
sind, legt der digitale Signalverwalter 216 „X" als die Abtastrate
in der nächsten
Betriebsart der Einheit fest. In Schritt 712 legt der digitale
Signalverwalter 216 „A" als den Absolutwert
der Differenz aus der Abtastrate in der Datei 210 und der „momentanen
Näherung" fest. In Schritt 714 legt
der digitale Signalverwalter 216 „B" als den Absolutwert der Differenz aus der
Abtastrate in der Datei 210 und „X" fest. In Schritt 716 vergleicht
der digitale Signalverwalter 216 „A" mit „B". Falls „B" größer ist
als „A", springt der digitale
Signalverwalter 216 in der Schleife zum Schritt 704 zurück. Andernfalls
legt er in Schritt 718 „X" als die „momentane Näherung" fest und springt
in der Schleife direkt zum Schritt 704 zurück.
-
In
Schritt 422 in 4 legt der digitale Signalverwalter 216 die
anpassungsfähigen
Merkmale der Einheit so fest, dass sie mit den in Schritt 420 berechneten
konsistent sind. Der digitale Signalverwalter 216 richtet
in Schritt 410 eine Dateikennung 224 zwischen
dem Datei-E/A-Bedienprogramm 212 und der Einheit 200 ein.
Die Einheit 200 liest und schreibt dann aus der oder in
die Datei 208. Die Einheit 200 führt die
CODEC-Funktion aus; dies wird als „Hardware CODEC" bezeichnet. Der
digitale Signalverwalter 216 schließt die Operation in Schritt 412 ab.
-
Auf
diese Weise wählt
der digitale Signalverwalter 216 dynamisch zwischen Hardware-
und Software-CODEC-Techniken aus und nutzt somit die Hardwarefähigkeiten
der digitalen Signaleinheit maximal aus. D.h., er setzt immer Hardware-CODEC-Techniken ein,
wenn sie zur Verarbeitung der digitalisierten Signale anwendbar
sind, und wendet Software-CODEC-Routinen
immer dann an, wenn keine Hardware-CODEC- Techniken einsetzbar sind. Auf diese
Weise gewährleistet
er den Betrieb nicht kompressionsspezifischer Anwendungsprogramme und
optimiert gleichzeitig die Gesamt-Leistungsfähigkeit des Systems im Umgang
mit digitalen Signaldateien.