-
Hintergrund
der Erfindung
-
Die
vorliegende Erfindung ist eine Einrichtung und ein Verfahren, die/das
zur Ausführung
einer Abbildungswiedergabe verwendet wird, welche komplexe, hochauflösende Seitenabbildungen
für eine
kontinuierliche synchrone Rasterbild, wie zum Beispiel einen Laserdrucker,
erzeugt. Das Verfahren und die Einrichtung bilden ein System, das
das Drucken aller Seiten ermöglicht,
die ein Interpreter einer Seitenbeschreibungssprache bei der höchsten,
aufrechterhaltbaren Druckqualität
abbilden kann, während
sichergestellt ist, dass alle Seiten unabhängig von der Komplexität gedruckt
werden.
-
Eine
kontinuierliche synchrone Rasterbildausgabeeinrichtung erfordert
das Übergeben
der Ausgabedaten in einer festen Zeitspanne. Wenn die Daten nicht
in der festen Zeitspanne übergeben
werden, wird das ausgegebene Seitenabbild unbrauchbar oder wird
beim Drucken fehlschlagen. Das erfundene Verfahren und die erfundene
Einrichtung führen
zusätzlich
zur Zerlegung grundlegender Grafikfunktionen in eine kompakte Reihe
von für
eine Echtzeitverarbeitung geeignete Anweisungen oder Kommandos und
anschließender
verzögerungsfreier
Erzeugung der ausgegebenen Seitenabbildung eine verlustlose und
verlustbehaftete Kompression aus, wie es zum Abbilden jeder, unabhängig von
ihrer Komplexität
auszugebenden Seite benötigt wird.
-
Die
erfundene Technik legt den grafischen Inhalt einer Seite in sehr
viel weniger Speicher fest, als die wiedergegebene Abbildung sonst
erfordern würde.
Jedoch in einer Form, die in der von einer Ausgabeeinrichtung geforderten
Geschwindigkeit verarbeitet und an die Ausgabeeinrichtung übergeben
werden kann. Um dies zu erreichen, werden Grafikfunktionen als Grundelemente
auf unterster Ebene dargestellt, hier als Anwei sungen bezeichnet,
um zu gewährleisten,
dass sie in Echtzeit in Bitmap-Abbildungen konvertiert werden können. Zusätzlich wird
die Menge der Anweisungen oder Kommandos durch ein Eliminieren redundanter
oder überlappender
Grafikfunktionen reduziert, um den von den Anweisungen verwendeten
Speicher zu minimieren.
-
Die
Erfindung verwendet einen Echtzeitausgabeprozessor, der jeweils
einen kleinen Abschnitt der Seitenabbildung bearbeitet. Ein derartiger
Abschnitt wird als Band bezeichnet. Ein Band besteht aus einer vorgegebenen
Anzahl von Abtastzeilen, wobei jede Abtastzeile eine Reihe von Pixeln
ist, die an die Ausgabeeinrichtung mit einer von der Ausgabeeinrichtung
geforderten Geschwindigkeit zu übergeben
sind. Nach dem Erstellen eines ersten Bandes wird ein zweites Band
erzeugt, während
das erste Band gedruckt wird.
-
Die
vorliegende Erfindung baut auf einem Abbildungsverfahren des Standes
der Technik für
eine kontinuierliche synchrone Rasterbild auf, wie es in der US-Serien-Nr.
08/227,788 offenbart ist, eingereicht am 20. Juli 1994 mit dem Titel
Method and Apparatus For Displaying A Page With Graphics Information
On A Continuous Synchronous Raster Output Device, dem ein Mechanismus
hinzugefügt
ist, der sicherstellt, dass Seiten unabhängig von ihrer Komplexität immer
gedruckt werden, während
die höchstmögliche Auflösung beibehalten
wird. Das bedeutet, wenn Verfahren des Standes der Technik verwendet
werden, können
komplexe Grafiken enthaltende Seiten manchmal nicht gedruckt werden,
da der Drucker oder eine andere verwendete Einrichtung nicht ausreichend
Speicher für
das Speichern der vollständigen
Bitmap oder einer anderen Darstellung der Abbildung aufweist, so
dass die mit der von der Druck-Funktionseinheit [Print engine] geforderten
Geschwindigkeit übergeben
werden kann. Wenn dies auftritt, ist es üblicherweise notwendig, die
Auflösung
und folglich die Qualität
der Ausgabe zu redu zieren, um die Abbildung auszugeben. Jedoch ist
es manchmal nicht notwendig, die Auflösung aller zu einer Ausgabeeinrichtung
gesendeten Seiten zu reduzieren, sondern nur die jener Seiten, die
hochkomplexe Grafiken enthalten. Die vorliegende Erfindung stellt
einen Mechanismus bereit, der die Ausgabe von Dokumenten unabhängig von
der Komplexität
ermöglicht,
während
die höchste,
für jede Seite
des Dokumentes mögliche
Druckqualität
beibehalten wird.
-
Ein
Beispiel einer Anordnung des Standes der Technik ist in
US 5,479,587 (Campbell et
al.) offenbart.
-
Zusammenfassung
der Erfindung
-
Ein
Verfahren und eine Einrichtung werden offenbart, die ein System
bilden, das den Druck aller Seiten ermöglicht, die ein Interpreter
einer Seitenbeschreibungssprache in der höchsten, aufrechterhaltbaren
Druckqualität
abbilden kann, während
sichergestellt wird, dass alle Seiten unabhängig von der Komplexität gedruckt werden.
-
Es
gibt zwei Hauptkomponenten des erfundenen Systems: ein für die Zuweisung
von Speicher zur Wiedergabe von Seiten verantwortlicher Speichermanager
und ein zur Behandlung von Speicher-Overflow-[Überlauf] und Video-Underrun-[Unterlauf]Ausnahmebedingungen
verantwortlicher Fallback-[Ersatzfunktions-]Manager.
-
2 zeigt
die verschiedenen Funktionsmodule des erfundenen Systems und ihre
Beziehungen zueinander. Der allgemeine Verlauf erfolgt von oben
nach unten und von links nach rechts, beginnend mit den Aufrufen
an die Grafikdienst-Schnittstelle. Ein gekennzeichneter Pfeil zeigt
an, dass vom Modul ein Dienst ausgeführt wird.
-
Das
Grafikdienst-Schnittstellenmodul behandelt die grundlegende Interaktion
mit dem Druckerspracheninterpreter, die hauptsächlich aus dem Zeichnen auf
eine Seite besteht. Der Interpreter muss den Start und das Ende
einer bestimmten Seite erkennen, wobei die Grafikdienst-Schnittstelle
beim Starten die Instanz einer neuen Seite (genannt Neue Seite)
initialisiert und wenn abgeschlossen (genannt Ende Seite), die Seite zur
Druck-Funktionseinheit zum Einfärben
weiterleitet. Es gibt drei Haupt-Schnittstellenmodule: Behandlung einer
neuen Seite (Neue Seite), Behandlung des Seitenendes (Ende Seite)
und Zeichnen (Erzeugung der Anweisung zur grafischen Darstellung).
-
Das
Neue-Seite-Modul initialisiert alle zum Zeichnen auf der Seite erforderlichen
internen Datenstrukturen. Es initialisiert ein Speichermanagementmodul,
so dass es basierend auf der Auflösung und Größe der neuen Seiten sich selbst
zuweisen und konfigurieren kann.
-
Das
Ende-Seite-Modul startet, wenn alle Zeichenaufrufe abgeschlossen
wurden. Diese Verarbeitung umfasst eine abschließende Prüfung durch ein Prüfmodul für Verlustbehaftung
und durch einen Video-Underrun-Prädiktor. Das Prüfmodul für Verlustbehaftung
prüft auf
die Existenz verlustbehaftet komprimierter Bänder und der Prädiktor berechnet
mögliche
Video-Underruns voraus, bevor die Seite an die Druck-Funktionseinheit weitergeleitet
wird. Sobald dies ausgeführt
wurde, teilt Ende-Seite dem Treiber der Druck-Funktionseinheit mit, dass
die Seite zum Einfärben
zur Verfügung
steht. Anschließend
fordert der Treiber der Druck-Funktionseinheit die tatsächlich wiedergegebenen
Bänder
von einem Wiedergabe-/Dekompressions-Funktionseinheitmodul an.
-
Das
Grafikanweisungserzeugungsmodul verarbeitet die durch den Interpreter
erstellten Zeichenaufrufe, um Anweisungen für eine Anzeigeliste zu erzeugen.
Das Modul zur Anweisungserzeugung ist für die Erzeugung geeigneter
Anweisungen für
jeden Zeichnungstyp verantwortlich. Da die erzeugten tatsächlichen
Anweisungen von der darunter liegenden Wiedergabe/Dekompressions-Funktionseinheit
abhängig
sind, gibt es ver schiedene Anweisungserzeugungsmodule für jede Ziel-Wiedergabe/Dekompressions-Funktionseinheit. Alle
diese Module weisen den Anweisungen vom Grafikspeicher-Managementmodul
Speicher zu.
-
Das
Grafikspeicher-Managementmodul funktioniert als ein Speichermanager,
der die Speicherplatz-Zuweisung für Anweisungen ausführt und
sie in Anweisungslisten mit einer Liste pro Band verknüpft. Es verwaltet
eine eindeutige, für
die Speicherung der Anweisungslisten optimierte Heap-Struktur. Ein
Fallback-Managermodul führt über ein
Kompressions-Funktionseinheits-Modul den eigentlichen Prozess der Kompression
der Anweisungslisten im Heap durch. Infolgedessen sind das Speichermanagementmodul
und das Fallback-Managermodul durch die gemeinsame Benutzung der
Heap-Struktur eng gekoppelt.
-
Am
Ende jeder Seite identifiziert das Video-Underrun-Prädiktormodul
Bänder,
die für
die Druck-Funktionseinheit nicht schnell genug wiedergegeben werden
können;
das Fallback-Managermodul ist für
die Vereinfachung der Darstellung dieses Bandes verantwortlich,
so dass es schnell genug wiedergegeben werden kann. Dies schließt üblicherweise
eine Vorab-Wiedergabe des Bandes und seine Kompression ein.
-
Das
Fallback-Managermodul ist für
die Behandlung von Speicher-Overflows und Video-Underruns durch
die Kompression von Daten in der Anweisungsliste verantwortlich.
Im Allgemeinen führt
es dies unter Verwendung irgendeiner Kompression aus. Folglich muss
es Dekompressionsanweisungen erzeugen.
-
Die
Kompressions-Funktionseinheit komprimiert Bänder und Objekte unter der
Steuerung des Fallback-Managers.
-
Ein
Wiedergabe-/Dekompressions-Funktionseinheits- Modul interpretiert
eine Anweisungsliste, und zwar unterstützt durch eine Hardware-Grafikwiedergabe-Funktionseinheit
oder direkt innerhalb dieses Moduls. Dieses Modul ist fähig, die
gesamte Seite zu erzeugen oder nur ein einzelnes Band/Objekt, wie
es vom Fallback-Manager benötigt
wird.
-
Kurzbeschreibung der Zeichnungen
-
1 ist
eine Übersichtsblockdarstellung,
die ein vollständiges
System zeigt, in dem die vorliegende Erfindung verwendet werden
kann.
-
2 zeigt
eine Blockdarstellung der Module des erfundenen Teilsystems.
-
3 ist
ein Zustandsdiagramm, das die durch das erfundene Teilsystem ausgeführte Verarbeitung zeigt.
-
4 ist
eine Blockdarstellung, die die durch das Fallback-Managermodul des
erfundenen Teilsystems für
die Grafikanweisungserzeugungsaufrufe ausgeführte Verarbeitung zeigt.
-
5 ist
eine Blockdarstellung, die die durch das Fallback-Managermodul des
erfundenen Teilsystems für
Ende-Seite-Aufrufe
ausgeführte
Verarbeitung zeigt.
-
Detaillierte
Beschreibung der Erfindung
-
Ein
Verfahren und eine Einrichtung werden offenbart, die ein Grafikteilsystem
bilden, das das Drucken aller Seiten ermöglicht, die ein Interpreter
einer Seitenbeschreibungssprache bei der höchsten, aufrechterhaltbaren
Druckqualität
abbilden kann, während
sichergestellt wird, dass alle Seiten unabhängig von der Komplexität gedruckt
werden.
-
Gemäß 1 arbeitet
die Erfindung in Verbindung mit einem Personalcomputer oder einer
Arbeitsstation 11, um eine Ausgabe für eine kontinuierliche synchrone
Rasterbild, wie zum Beispiel einen Laserdrucker 13, zu
erzeugen. Eine Anwendung 15, wie zum Beispiel eine Textverarbeitung,
erzeugt eine gewünschte
Ausgabe, die durch einen Druckertreiber 17 verarbeitet
wird, um Kommandos in einer Seitenbeschreibungssprache, wie zum
Beispiel Postscript, zu erzeugen. Die Kommandos der Seitenbeschreibungssprache
werden an das erfundene Grafikteilsystem weitergeleitet, das als
Steuereinrichtungsteilsystem 19 dargestellt ist und einen Speicher 20 im
Laserdrucker umfasst und die Kommandos in eine geeignete Bitmap
konvertiert, die an die Druck-Funktionseinheit 21 weitergeleitet
wird, welche eine die gewünschte
Ausgabe enthaltende Seite „einfärbt".
-
Das
Steuereinrichtungsteilsystem behandelt die Wiedergabe der Seitenabbildung
und die Übergabe der
Abbildung an eine Druck-Funktionseinheit 21. Eine Grafikdienst-Schnittstelle
ist unabhängig
von der zu Grunde liegenden Hardwareunterstützung die Gleiche. Die Grafikdienst-Routinen
der Grafikdienst-Schnittstelle
in der Steuereinrichtung arbeiten im Koordinatensystem der Ziel-Bitabbildung.
Der Ursprung des Koordinatensystems der Abbildung entspricht dem
ersten Pixel der Bitabbildung.
-
Es
wird jetzt auf 2 Bezug genommen, in der die
Module der Steuereinrichtung 19 gezeigt sind, die das erfundene
Grafikteilsystem bilden. Die Ausgabe eines Drucker- oder eines Seitenbeschreibungs-Sprachinterpreters 25 spezifiziert
die Größe der zu
druckenden Seitenabbildung durch die Angabe ihrer Breite und Länge. Die
Ausgabe des Druckersprachinterpreters spezifiziert außerdem die
Platzierung der Abbildung innerhalb der physischen Seite durch die
Bereitstellung der oberen und der linken Seitenrandparameter, die üblicherweise
in Pixeln angegeben sind.
-
Die
Grafikdienst-Schnittstelle 27 behandelt zwei Arten von
Aufrufen: Aufrufe, die sich auf Seiten beziehen und Aufrufe, die
Bitabbildungen zeichnen. Die Aufrufe zum Zeichnen von Bitabbildungen
unterteilen sich in fünf
Klassen. Im Allgemeinen weist jede Klasse mindestens zwei Aufrufe
auf: einen zum Schreiben in die Seitenabbildungs-Bitmap, die das
System verwaltet; den anderen für
einen durch den Interpreter verwalteten Bestimmungsort. Diese Aufrufe
werden durch das Neue-Seite-Modul 31,
das Grafikanweisungserzeugungsmodul 33 und das Ende-Seite-Modul 35 behandelt.
-
Tabelle
1 zeigt die verschiedenen, von der Grafikdienst-Schnittstelle erstellten Aufrufe, die
auf Kommandos von Interpreter 25 basieren.
-
-
-
Das
Folgende ist eine Beschreibung der Neue-Seite- und Ende-Seite-Module,
soweit sie für
ein Verständnis
der vorliegenden Erfindung erforderlich ist. Die genauen Angaben
der einzelnen Zeichenaufrufe und ihre Behandlung durch das Grafikanweisungserzeugungsmodul 33 sind
für ein
Verständnis
der Erfindung nicht erforderlich. Aus diesem Grund werden die Zeichnungsaufrufe
allgemein und nicht speziell beschrieben. Eine vollständige Ausführung einer
repräsentativen
Grafikdienst-Schnittstelle
mit einem Neue-Seite-Handler [Behandlungsroutine], einem Grafikanweisungserzeugungs-Handler
und einem Ende-Seite-Handler kann in der Anmeldung mit der Serien-Nr.
08/277,788, eingereicht am 20. Juli 1994 mit dem Titel Method and
Apparatus For Displaying A Page With Graphics Information On A Continuous
Synchronous Raster Output Device, gefunden werden.
-
Neue Seite
-
Das
Neue-Seite-Modul 31 definiert die Seite, die durch die
nachfolgenden Grafik-Kommandos zu erzeugen ist. Die Argumente für diesen
Aufruf umfassen die Abmessungen des „einzufärbenden" Bereichs, die Seitenränder und
die Optionen. Das Grafik teilsystem verwendet die Breiten- und Längenparameter,
um die Größe der Seitenabbildung
zu bestimmen. Es verwendet die oberen und linken Seitenrandparameter,
um den Treiber der Druck-Funktionseinheit 39 über die
Platzierung der Abbildung innerhalb der physischen Seite zu informieren.
-
Aufruf
-
- ERCODE DC_GRS_NEWPG (ppp, page_taga, options)
- struct GRS_PGPARM *ppp;
- GRST_PAGE_TAG *page_taga;
- PP_UFIX16 options;
-
Eingabe
-
- ppp = Zeiger auf eine Seitenbeschreibungsstruktur.
- ppp -> pgwidth
= Abtastzeilengröße in Pixel
ohne Seitenränder
- ppp -> pglength
= Anzahl Abtastzeilen ohne Seitenränder
- ppp -> paper =
Auswahl Papierbehälter.
- page_taga = Adresse einer Speicherstelle, um die zurückgegebene
Seitenkennung aufzunehmen. Diese Kennung wird in allen nachfolgenden
Dienstanforderungen verwendet.
- options = Optionsflags:
GRS_WHITEPG --> initialisiere Seite zu Weiß.
GRS_BLACKPG
--> initialisiere
Seite zu Schwarz.
GRS_NOWAIT --> warte nicht auf Speicher.
GRS_BOS
--> Rückseite
des Blattes. Sonst Vorderseite des Blattes. Nur für eine beidseitige
Papierzuführung gültig.
GRS_PG_MIRROR_Y
--> Y-Spiegel. Sonst
kein Y-Spiegel.
GRS_PG_MIRROR_X --> X-Spiegel. Sonst kein X-Spiegel.
-
Programmausgang
-
- DC_GRS NEWPG0 = Fehlercode.
- E_OK --> Kein
Fehler.
- E_GRS_FLUSH --> Drucker-Reset
trat während
des Wartens auf Ressourcen auf.
- E_PARAM --> Parameterfehler.
- E_BLK_NOBLK --> Erforderlicher
Speicherblock konnte nicht erhalten werden.
- *page_taga = die vom Grafikteilsystem zurückgegebene Seitenkennung.
-
Diese
Anforderung erklärt
die Absicht des Aufrufers, mit dem Aufbau einer neuen Seitenabbildung
zu beginnen. Das Grafikteilsystem weist bestimmte interne Ressourcen
zu und gibt eine eindeutige Seitenkennung zur Verwendung in nachfolgenden
Grafikanforderungen zurück.
Zu jeder Zeit kann nur eine Seitenabbildung durchgeführt werden.
-
Die
Seitenlängen-
und -breitenparameter definieren die Abmessungen der aufzubauenden
Abbildung. Das Schreiben der Pixel auf die Seitenabbildung ist auf
diese Abmessungen begrenzt.
-
Die
Optionen steuern die Initialisierung des Seitenabbildungsspeichers
und das Verhalten von Neue-Seite bei einem Mangel an verfügbarem Speicher.
Wenn die Grafikdienst-Schnittstelle 27 ein GRS_NOWAIT-Flag
setzt, kehrt Neue-Seite mit einem Fehlercode zurück, wenn es den erforderlichen
Speicher nicht zuweisen kann. Wenn das GRS_NOWAIT-Flag Null ist,
wartet Neue-Seite, bis gegenwärtig
verwendete Ressourcen verfügbar
werden.
-
Wenn
das Optionsflag GRS_PG_MIRROR_Y gesetzt ist, wird die Bitabbildung
an der Y-Achse der Bitabbildung gespiegelt, bevor sie zum Treiber
der Druck-Funktionseinheit gesendet wird. Wenn das Optionsflag GRS_PG_MIRROR_X
gesetzt ist, wird die Bitabbildung an der X-Achse der Bitabbildung
gespiegelt, bevor sie zum Treiber der Druck-Funktionseinheit gesendet
wird. Die Kombination von GRS_PG_MIRROR_Y und GRS_PG_MIRROR_X wird
verwendet, um eine 180 Grad Drehung der Seite zu spezifizieren.
Diese zwei Optionen können
nicht einzeln verwendet werden, ausgenommen, dass sie durch Hardware
unterstützt
werden.
-
Ende Seite
-
Die
Grafikdienst-Schnittstelle ruft das Ende-Seite-Modul 35 auf,
um das Grafikteilsystem zu informieren, dass es die Verarbeitung
für die
aktuelle Seite abgeschlossen hat. Das System druckt die Seite und
ruft optional eine Interpreterfertigstellungsfunktion auf, wenn
das Drucken abgeschlossen ist. Wenn ein Kopienzählwert (cpycnt) größer als
1 ist, wird die Fertigstellungsfunktion aufgerufen, nachdem die
letzte Kopie gedruckt wurde. Sollte die Grafikdienst-Schnittstelle 27 das
Drucken einer Seite unterdrücken
wollen, sollte es Abbruch-Seite
aufrufen.
-
Aufruf
-
- ERCODE DC_GRS_ENDPG (page_tag, ppx, ppy, copycnt, donefunc,
donearg)
- GRST_PAGE_TAG page_tag;
- PIXCOORD ppx;
- PIXCOORD ppy;
- int cpycnt;
- void (*donefunc)();
- void *donearg;
-
Eingabe
-
- page_tag = die von Neue Seite für diese Abbildung zurückgegebene
Seitenkennung.
- ppx = x-Offset von der Abbildung zur linken Kante des Papiers.
Normalerweise ist dieser Parameter negativ.
- ppy = y-Offset von der Abbildung zum oberen Ende des Papiers.
Normalerweise ist dieser Parameter negativ.
- cpycnt = die Anzahl der zu druckenden Kopien.
- donefunc = die Adresse der Anwendungsfertigstellungsfunktion
oder 0 falls keine.
- donearg = ein beliebiges, an jede Fertigstellungsfunktion weiterzuleitendes
Argument.
-
Programmausgang
-
- DC_GRS_ENDPGO = Fehlercode.
- E OK --> Kein
Fehler.
-
Die
ENDE_SEITE-Funktion veranlasst die Grafikdienst- Schnittstelle 27, den Treiber
der Druck-Funktionseinheit 39 zu informieren, dass eine
Seite zum Drucken verfügbar
ist. Die ENDE_SEITE-Anforderung kehrt unmittelbar nach dem Einreihen
einer Druckanforderung zurück,
um dem Interpreter das Fortführen
der Ausführung
während
der Druckphase zu gestatten. Die spezifizierte Fertigstellungsfunktion
wird aufgerufen, wenn die letzte Abbildungskopie gedruckt wurde
oder bei einem Fehler. Die Fertigstellungsroutine wird wie folgt
aufgerufen:
-
Aufruf
-
- void *routine (donearg, cmp_code)
- void *donearg;
- ERRCODE cmp_code;
-
Eingabe
-
- donearg = das an ENDPG bereitgestellte Argument.
- cmp_code = ein Fertigstellungscode
- E_OK --> normale
Fertigstellung.
- Error code --> abweichende
Fertigstellung.
-
Grafikanweisungserzeugung
-
Im
Allgemeinen erwarten durch das Grafikanweisungserzeugungsmodul 33 behandelte
Zeichnungsaufrufe Bitmap-Deskriptoren als Eingabe. Die einfachste
Form dieses Deskriptors enthält
die Bitmap-Anfangsadresse, die Bitmap-Breite in Pixel und die Bitmap-Höhe in Abtastzeilen.
Ein Bitmap-Deskriptor für
ein Halbtonmuster weist verschiedene zusätzliche Felder auf, die die
Bitmap-Größe in Datenworten,
den x-Ursprung des Bestimmungsortes und den y-Ursprung des Bestimmungsortes
angeben.
-
Die
x- und y-Ursprungsparameter des Bestimmungsortes für einen
Halbton spezifizierten den Ursprung des Bestimmungsortes innerhalb
der Halbton-Bitmap. Wenn die Halbton-Bitmap kleiner als der Bestimmungsort
ist, wird sie im Bestimmungsort repliziert.
-
Ein
Bitmap-Deskriptor wird nur während
des Aufrufs verwendet. Die Anwendung kann seinen Inhalt ändern und
ihn für
nachfolgende Aufrufe ohne Beeinflussung vorheriger Dienstanforderungen
wiederverwenden.
-
Alle
Pixel-schreibenden Dienstanforderungen weisen einen für sie bereitgestellten "Pixop"-Parameter auf. Der
Anwender spezifiziert Boolean-Kombinationen der beteiligten Pixel:
nur Bestimmungsort, Quelle/Bestimmungsort, Halbton/Quelle/Bestimmungsort.
-
Grafikspeichermanagement
-
Der
Zweck des Grafikspeichermanagementmoduls 41 besteht darin,
einen Speicherzuweisungsmechanismus für Grafikanweisungen bereitzustellen.
Es verwaltet eine feste Speichermenge in einer solchen Art und Weise,
dass gewährleistet
ist, dass das Fallback-Managermodul 45 die notwendigen
Schritte durchführen kann,
um alle Bänder
auf der Seite ohne Zwischenspeicherung zu komprimieren. Das Grafikspeichermanagementmodul
teilt eine feste Speichermenge in Frames [Datenübertragungsblöcke] auf,
wobei jeder Frame die für
ein komprimiertes Band erforderliche Größe aufweist. Es gibt genau
einen Frame pro Band, so dass ein Band in seinem zugeordneten Frame
gespeichert wird, wenn es verlustbehaftet komprimiert wurde. Das
Grafikspeichermanagementmodul 41 führt eine Liste aller Bänder, die
Speicher in jedem Frame belegen. Jedes Band, das in einem Frame
Speicherplatz belegt, ist als ein Abhängiger des Frames bekannt.
Um ein Band zu komprimieren, darf der Frame des Bandes keine Abhängigen aufweisen.
Der Fallback-Manager verwendet die Abhängigkeitsinformationen, um
die Reihenfolge zu kennzeichnen, in der alle Bänder zu komprimieren sind.
-
Zum
Beispiel angenommen, dass es 5 Bänder
und somit 5 Frames mit den folgenden Abhängigkeiten gibt:
Frame
1 weist keine Abhängigen
auf
Frame 2 <-
3 (Frame 2 weist einen Anweisungslistenblock für Band 3 auf)
Frame 3 <- 4, 5 (Frame 3
weist einen Anweisungslistenblock für Band 4 und einen für Band 5
auf)
Frame 4 weist keine Abhängigen auf
Frame 5 weist
keine Abhängigen
auf.
-
Die
Abhängigkeiten
können
auch als ein Satz von Bäumen,
einer je Frame, ausgedrückt
werden. Dabei ist ein Abhängiger
ein Zweig und ein Frame ohne Abhängige
ist ein Blatt:
-
-
Die
Frames 1, 4 und 5 weisen keine Abhängigen auf und haben folglich
keine Zweige. Bei der gegebenen Baumstruktur ist der Prozess der
Kompression aller Bänder
eine Durchquerung aller Abhängigkeitsbäume, wobei
ein Blatt eine auszuführende
Kompression kennzeichnet. Nachdem ein Band komprimiert wurde, ist
es kein Abhängiger
irgendeines Frames mehr. Folglich wird es aus der Baumstruktur entfernt.
Der Prozess der Kompression aller Bänder wird durch die folgende
Abfolge (von links nach rechts) ausgeführt:
-
-
Das
Grafikspeichermanagementmodul muss die Frames für die Zuweisung so wählen, dass
die vorstehenden Abhängigkeitsbäume niemals
zyklisch sind, wie im folgenden Beispiel:
-
-
Dieser
Baum ist zyklisch. Folglich wird eine einfache Durchquerung niemals
enden. Der Grafikspeichermanager wird Speicher nur so zuweisen,
dass die Abhängigkeitsbäume der
Frames nicht zyklisch sind. Unter dieser Voraussetzung kann der Fallback-Manager
die Seite unter Verwendung des Prozesses der Durchquerung des Abhängigkeitsbaumes
verlustbehaftet komprimieren.
-
Das
Grafikspeichermanagementmodul 41 ist für die Zuweisung von Speicher
für die
Anzeigelistenanweisungen und ihrer zugeordneten Daten verantwortlich.
Es unterscheidet sich vom Grafikspeichermanagement des Standes der
Technik darin, das es einen sehr großen Heap bei der Konfiguration
zuweist und diesen Heap intern verwaltet, um den Anforderungen der
Alle-Seiten-Drucken-Umgebung nachzukommen. Wenn das Grafikspeichermanagementmodul 41 seinen
Heap ausschöpft,
ist es auf den Fallback-Manager angewiesen, um Objekte und/oder
Bänder
für die
Rückgewinnung
von Speicherplatz zu komprimieren. Folglich erfordern sowohl das
Grafikspeichermanagementmodul als auch der Fallback-Manager einen
Zugriff auf die Heap-Datenstrukturen und den Inhalt. Zusätzlich zum
Heap teilt sich das Grafikspeichermanagementmodul 41 einen Satz
von Bandpuffern mit dem Wiedergabe-/Dekompressions-Funktionseinheitsmodul 55.
-
Das
Grafikteilsystem ist im Wesentlichen ein Banding-System, das einen Satz von Anweisungen
zum Wiedergeben einer Seite und einige zum Einfärben der Seite verwendete Bandpuffer
verwendet. Der im Grafikteilsystem verwaltete Speicher ist ein Heap,
der Anweisungen und eine Anzahl von Bandpuffern aufnimmt. Für jede Konfiguration
ist ein Minimum von zwei Bandpuffern erforderlich. Das Grafikspeichermanagementmodul
bestimmt die Heap-Größe und die
auf der Konfiguration (Duplex-Einstellung,
Auflösung
und Gesamtspeicher im Drucker) basierende Anzahl der Bandpuffer.
-
Das
Grafikspeichermanagementmodul 41 weist alle Objekte aus
einer eindeutigen Heap-Struktur zu, die für die Speicherung und das Management
von Anweisungslisten optimiert ist. Wenn das Grafikspeichermanagementmodul
konfiguriert ist, ist ein permanenter Heap minimaler Größe zum Drucken
aller Seiten zugewiesen. Wenn dieser permanente Heap ausgeschöpft ist,
wird das Grafikspeichermanagementmodul versuchen, mehr Speicher
direkt vom Speicherblockmanager 51 zuzuweisen, bevor es
das Fallback-Managermodul aufruft. Dies nutzt den Speicher im Drucker über das
Minimum hinaus. Der hierbei zugewiesene Speicher wird ähnlich dem
permanenten Heap verwendet, ist jedoch als ein temporärer Heap
bekannt, da er bei Bedarf aufgegeben wird, wenn anderen Komponenten
im System keinen Speicher mehr zur Verfügung haben.
-
Video-Underrun-Prädiktor
-
Der
Video-Underrun-Prädiktor 47 verwendet
eine eingebaute Metrik, um zu bestimmen, ob die Ausführung der
Anweisungen für
ein Band ein Video-Underrun zur Folge haben wird. Ein Video-Underrun tritt auf, wenn
das Grafikanweisungserzeugungsmodul 33 nicht alle Anweisungen
innerhalb der zum Erzeugen des Videodatenstromes für die kontinuierliche
synchrone Ausgabeeinrichtung notwendigen Zeit ausführen kann.
Die zur Voraussage verwendete Metrik kann ein einfacher Maximalwert
für die
Anzahl der Anweisungen sein, von dem das Anweisungsausführungsmittel
erwarten kann, diese in der zulässigen
Zeit auszuführen.
Eine etwas komplexere Metrik umfasst eine maximale Anweisungsgrenze
und einen Wert für
maximale Speicherzugriffe.
-
Unter
Verwendung der einfachen Metrik liest der Video-Underrun-Prädiktor die Anweisungsliste
und vergleicht die Anzahl der einzelnen Anweisungen für jedes
Band mit dem Grenzwert. Wenn die Anzahl der Anweisungen für ein Band
den Grenzwert überschreitet,
beendet der Prädiktor
diese Ausführung
der Anweisungen für
dieses Band und wird einen Video-Underrun zur Folge haben.
-
Verlustbehaftungsprüfung
-
Das
Verlustbehaftungsprüfmodul 49 bestimmt,
ob irgendein Band bereits verlustbehaftet komprimiert wurde. Unter
diesen Umständen
erzwingt es eine verlustbehaftete Kompression aller Bänder für die aktuelle Seite,
so dass die Seitenqualität
konsistent ist.
-
Der
Speicherblockmanager 51 wird vom Grafikspeichermanagementmodul 41 wie
vorstehend erwähnt
aufgerufen, wenn der permanente Heap ausgeschöpft ist. Genauere Angaben eines
geeigneten Speicherblockmanagers werden für ein Verständnis der Erfindung nicht benötigt. Funktionsgemäß führt es das Äquivalent
der MALLOC-Operation von Unix aus.
-
Das
Kompressions-Funktionseinheitsmodul 53 und die Wiedergabe-/Dekompressions-Funktionseinheit 55 führen die
eigentliche Kompression und Wiedergabe/Dekompression, wie vom Fallback-Managermodul 45 angefordert,
aus. Die spezifischen Ausführungsdetails
dieser Module werden für
ein Verständnis
der vorliegenden Erfindung nicht benötigt. Eine Beschreibung geeigneter
Kompressions- und Wiedergabe/Dekompressionsausführungen kann jedoch in der
parallel anhängigen
Patentanmeldung mit der Serien-Nr. 08/324,682, eingereicht am 18.
Oktober 1994 mit dem Titel Bi-level Image Compression By Grayscale
Encoding, und der parallel anhängigen
Patentanmeldung mit der Serien-Nr. 08/582,150, eingereicht am 2.
Januar 1996 mit dem Titel Method and Apparatus For Double Run-Length
Encoding Of Binary Data, gefunden werden. Für Nicht-Bi-Level Daten sind
andere geeignete Komprimierverfahren erhältlich.
-
Genauere
Angaben einer geeigneten Ausführung
des Treibers der Druck-Funktionseinheit 39 werden für ein Verständnis der
Erfindung nicht benötigt.
Jedoch sollten derartige genauere Angaben einem Fachmann schnell
ersichtlich sein, der die spe zifische Druck-Funktionseinheit kennt,
für die
der Treiber benötigt
wird.
-
Fallback-Managermodul
-
Das
Fallback-Managermodul 45 behandelt Speicher-Overflows und
vorausgesagte Video-Underruns.
-
Speicher-Overflow-Lösung
-
Ein
Speicher-Overflow kann während
des Anweisungsaufbaus auftreten. In diesem Fall fordert der Anweisungsaufbau
den Fallback-Manager auf, die Situation durch die Freigabe von Speicher
zu behandeln. Der Fallback-Manager weist fünf Verfahren auf, um einen
Speicher-Overflow zu beseitigen. Er setzt diese Verfahren in der
nachstehend gezeigten Reihenfolge ein. Wenn das erste Verfahren
das Problem löst,
besteht keine Notwendigkeit zum zweiten Verfahren weitergehen:
- 1. verlustlose Kompression eines oder mehrerer
Raster.
- 2. verlustbehaftete Kompression aller Raster.
- 3. Vorab-Wiedergabe eines Bandes, wenn die Anweisungsliste größer als
das Band ist.
- 4. verlustlose Kompression einiger Bänder.
- 5. verlustbehaftete Kompression aller Bänder.
-
Der
Fallback-Manager versucht zuerst einen Speicher-Overflow durch Änderung
der Darstellung von Rasterobjekten in der Anweisungsliste zu beseitigen,
wobei Text- und Line-art[Strichzeignungs-]Objekte in ihrer aktuellen
Bitmap- oder Abtastzeilentabellendarstellung belassen werden. Diese
Lösung
erhält
die Auflösung
und Druckqualität
des Textes und der computergezeichneten (Line-Art-)Objekte. Wenn
eine verlustlose Kompression zur Reduzierung der Größe von Rastern
angewendet werden kann, wird auch ihre Qualität aufrechterhalten.
-
Wenn
eine verlustbehaftete Kompression auf Raster angewendet werden muss,
um den erforderlichen Speicher zu bekommen, wird die Qualität des Textes
und der computergezeichneten Objekte dennoch aufrechterhalten und
die Anweisungsliste erhält
noch immer die Identität
jedes Objektes. Sobald ein Raster verlustbehaftet komprimiert ist,
müssen
alle Raster verlustbehaftet komprimiert werden, um eine konsistente Qualität auf der
Seite zu gewährleisten.
-
Wenn
der Fallback-Manager den erforderlichen Speicher unter Verwendung
der Verfahren 1 oder 2 nicht erhalten kann, muss er die Anweisungsliste
für ein
Band durch das Auslösen
der Ausführung
der Anweisungsliste freigeben, um ein wiedergegebenes Band zu erzeugen.
Dies ist Verfahren 3.
-
Wenn
das Verfahren 3 nicht ausreichend ist, setzt der Fallback-Manager
mit Verfahren 4 fort und löst die
verlustlose Kompression eines Bandes aus. Die Qualität wird immer
noch erhalten, aber die Unterscheidung zwischen den Objekttypen
geht verloren.
-
Wenn
das Verfahren 4 nicht ausreichend ist, setzt der Fallback-Manager
mit Verfahren 5 fort. Da das Verfahren 5 die Abbildung des Bandes
abändert,
können
alle nachfolgenden Anweisungen, die sich auf das verlustbehaftete
Band beziehen, nicht ohne vorherige Dekompression des Bandes ausgeführt werden.
Wenn ein Band verlustbehaftet komprimiert wurde, müssen alle
Bänder
vor dem Druck verlustbehaftet komprimiert werden, um eine konsistente
Qualität über der
Seite zu gewährleisten.
Dieser Schritt kann bis Ende-Seite verzögert werden. Das Verfahren
5 ist im Behandeln von Speicher-Overflow immer erfolgreich.
-
Video-Underrun-Lösung
-
Nachdem
alle Anweisungen aufgebaut wurden und der Interpreter ENDE-SEITE
aufruft, ruft ENDE-SEITE den Video-Underrun-Prädiktor
auf, um auf potentielle Video-Underruns zu prüfen. Wenn ein Video-Underrun
für ein
Band oder Bänder
vorausgesagt ist, weist der Fallback-Manager drei Verfahren auf,
um den Video-Underrun zu beseitigen. Er setzt diese Verfahren in
der nachstehend gezeigten Reihenfolge ein. Wenn das erste Verfahren
das Problem löst,
besteht keine Notwendigkeit zum zweiten Verfahren weiterzugehen:
- 1. Vorab-Wiedergabe von Bändern mit dem vorausgesagten
Video-Underrun.
- 2. verlustlose Kompression von Bändern mit dem vorausgesagten
Video-Underrun.
- 3. verlustbehaftete Kompression aller Bänder.
-
In
Verfahren 1 löst
der Fallback-Manager die Ausführung
der Anweisungsliste für
die Bänder
aus, für die
ein Video-Underrun
vorausgesagt wurde. Wenn nicht ausreichend Speicher verfügbar ist,
um diesen Prozess ohne Kompression abzuschließen, geht der Manager zu Verfahren
2 weiter.
-
In
Verfahren 2 löst
der Fallback-Manager die verlustlose Kompression eines oder mehrerer
in Verfahren 1 vorab-wiedergegebener Bänder aus. Der Fallback-Manager
iteriert zwischen den Verfahren 1 und 2, bis alle Bänder mit
den vorausgesagten Video-Underruns vorab-wiedergegeben wurden. Wenn
die verlustlose Kompression fehlschlägt, geht der Fallback-Manager
zu Verfahren 3 weiter.
-
Da
die in Verfahren 3 verwendete verlustbehaftete Kompression gewährleistet,
dass alle Bänder
im verfügbaren
Speicher komprimiert werden können,
kann dieses Verfahren nicht fehlschlagen.
-
Rasterkompression
-
Eine
Rasterkompression wird durch die Kompressions-Funktionseinheit 53,
wie vom Fallback-Manager angefordert, ausgeführt. Die Zielstellung der Rasterkompression
ist, Speicher für
den weiteren Anweisungsaufbau bei gleichzeitiger Aufrechterhaltung
der Anweisungsliste freizugeben.
-
Verlustlose
Rasterkompression
-
Die
verlustlose Kompression wird nur an unkomprimierten Rastern ausgeführt. Die
Kompression wird von der Kompressions-Funktionseinheit 53 unter der
Leitung des Fallback-Managers ausgeführt. Der Fallback-Manager hat
eine Zielanzahl von freizugebenden Bytes und setzt die Kompression
von Rastern fort, bis diese Anzahl von Bytes freigegeben wurde oder
die verlustlose Kompression fehlschlägt. Der Fallback-Manager versucht
auch komprimierte Raster in den Lücken zu platzieren oder im
ungenutzten Speicher in dem vom Grafikspeichermanager für den Frame,
in dem sich das Raster befindet, zugewiesenen Speicherplatz. wenn kein
ungenutzter Speicherplatz oder keine Lücke gefunden wird, wird temporär Zwischenspeicher
[Scratch Space] für
die Kompressionsausgabe verwendet. Sobald ein Rasterobjekt komprimiert
ist, wird die unkomprimierte Quelle freigegeben, was ungenutzten
Speicherplatz oder eine Lücke
für die
nachfolgende Verwendung erzeugt, wenn der Prozess fortsetzt.
-
Die
folgenden Regeln und Präzedenzfälle betreffen
den Kompressionsprozess:
- 1. Komprimiere zuerst
die Raster innerhalb des Frame oder der Frames, die die größte Anzahl
von vorher unkomprimierten Rastern aufweisen.
- 2. Komprimiere zuerst die an Lücken angrenzenden Raster, um
größere Lücken zu
erzeugen.
- 3. Komprimiere die Raster von oben nach unten im Frame oder
in den Frames, so dass Sätze
von Rastern in Richtung des Anfangs des Frames verdichtet werden,
während
Lücken
erzeugt werden.
- 4. Komprimiere die Raster in den Zwischenspeicher, wenn keine
Lücke existiert,
und verschiebe dann die komprimierte Ausgabe zurück zu der Speicherstelle, die
vorher durch das unkomprimierte Raster belegt war. Dies erzeugt
eine Lücke
mit der Größe der Differenz
zwischen dem unkomprimierten Raster und dem komprimierten Raster.
-
Verlustbehaftete Rasterkompression
-
Die
verlustbehaftete Rasterkompression arbeitet in der gleichen Art
und Weise wie die verlustlose Kompression, ausgenommen, dass das
Ergebnis voraussagbar ist und nicht fehlschlagen kann, eine Kompression
zu erreichen.
-
Vorab-Wiedergabe eines
Bandes
-
Die
Vorab-Wiedergabe eines Bandes besteht aus der Ausführung der
Anweisungsliste für
ein Band, um eine druckbare Abbildung dieses Bandes zu erzeugen.
Die Wiedergabe-Funktionseinheit 55 führt diese Operation aus. Die
Ausführung
der Anweisungsliste ist die Gleiche, wie sie sein würde, wenn
das Band nach ENDE SEITE wiedergegeben würde.
-
Bandkompression
-
Die
Bandkompression bezieht sich auf die Kompression eines wiedergegebenen
Bandes. Das bedeutet, die Anweisungsliste für ein Band muss ausgeführt und
der sich ergebende Bandpuffer komprimiert werden. Die Wiedergabe-Funktionseinheit 55 führt die
Anweisungsliste aus und die Kompressions-Funktionseinheit 53 führt die
Kompression durch. Wie bei der Rasterkompression wird eine verlustlose
Kompression versucht, bevor auf eine verlustbehaftete Bandkompression
zurückgegriffen
wird. Sobald irgendein Band verlustbehaftet komprimiert wurde, müssen alle
Bänder
verlustbehaftet komprimiert werden, um eine konsistente Qualität über die
Seitenabbildung zu erhalten.
-
Eine
Bandkompression wird während
des Anweisungsaufbaus als Antwort auf einen Speicher-Overflow verwendet,
wenn bevorzugte Verfahren fehlschlagen, oder während der ENDE-SEITE-Verarbeitung, wenn
ein Video-Underrun vorausgesagt ist. In beiden Fällen besteht die Zielstellung
der Bandkompression in der Freigabe der Speichermenge, die für die Bewilligung
der Fortsetzung des Prozesses erforderlich ist.
-
Verlustlose Bandkompression
-
Wenn
eine Bandkompression notwendig ist, wird eine verlustlose Bandkompression
bevorzugt, da sie die Druckqualität aufrechterhält und folglich
den Fallback-Manager nicht zwingt, alle Bänder zu komprimieren. Im Falle
des Speicher-Overflows gibt die Bandkompression Speicher frei, der
zur Aufnahme zusätzlicher
Anweisungen in die Anweisungsliste im Heap verwendet werden kann.
Dies kann auf zwei Arten und Weisen durchgeführt werden:
- 1.
komprimiere Bänder,
bis ausreichend Speicherplatz freigegeben ist, um die neue Anweisung
zu speichern.
- 2. gebe die neue Seite unmittelbar zu einem Bandpuffer wieder
und komprimiere das Band, einschließlich der Ausgabe der neuen
Anweisung.
-
Das
erste Verfahren ist das bevorzugte, da es schnell ausreichend Speicher
freigeben kann, um viele neue Anweisungen aufzunehmen. Das zweite
Verfahren wird als Bandcaching [in den Band-Cachespeicher aufnehmen]
bezeichnet, da es im Wesentlichen eine Anzahl von Bandpuffern auf
der Seite (alle anderen sind komprimiert) in den Cachespeicher aufnimmt.
Um effizient zu arbeiten, müssen
neue Anweisungen häufig
auf die in den Cachespeicher aufgenommenen Bänder zugreifen, sonst werden
Kompressions-/Dekompressions-Folgen häufig sein. Bei der minimalen
Speicherkonfiguration ist nur ein einzelnes, in den Cachespeicher aufgenommenes
Band verfügbar.
-
In
Anbetracht dessen, dass nur ein einzelnes Band in den Cachespeicher
aufgenommen werden kann, stützt
sich die verlustlose Bandkompression hauptsächlich auf Verfahren 1), tatsächlich ist
sie jedoch eine Kombination von beiden. Nachdem ein Band komprimiert
wurde, weist seine neue Anweisungsliste eine einzelne Dekompressionsanweisung
auf; neue Anweisungen für
dieses Band werden einfach zu der Liste hinzugefügt, solange Speicher verfügbar ist.
Wenn der Speicher erschöpft
ist, erfordert der wiedergegebene Bandpuffer nur, daß die neuen
Anweisungen wiedergegeben werden. Dann kann der Bandpuffer neu komprimiert werden,
einschließlich
aller neuen Anweisungen (wie es in Verfahren 2 geschehen würde). Folglich
beginnt der Algorithmus genau wie Verfahren 1), geht dann jedoch
zu Verfahren 2 über,
wo er letztendlich fehlschlagen kann, wenn komprimierte Daten nicht
wieder in den Heap eingepasst werden können. Eine verlustbehaftete Bandkompression
beginnt an diesem Punkt.
-
Bei
der Verwendung einer Bandkompression zum Lösen eines Video-Underruns muss
die ursprüngliche
Anweisungsliste ausgetauscht werden. Verlustlos komprimierte Bänder können immer
noch Video-Underruns [aufweisen]. In diesem Fall ist das vollständig wiedergegebene
Band selbst die einzig mögliche
verlustlose Darstellung des Bandes. Der von der Kompressions-Funktionseinheit 53 verwendete
Bandkompressionsalgorithmus identifiziert diese Situation und versucht
Speicherplatz freizugeben, um das gesamte wiedergegebene Band aufzunehmen.
-
Verlustbehaftete Bandkompression
-
Der Übergang
von einer verlustlosen Bandkompression zu einer verlustbehafteten
Bandkompression erfolgt, wenn einer der verlustlosen Algorithmen
der Kompressions-Funktionseinheit 53 fehlschlägt, die
erforderliche Speichermenge freizugeben. Bei einer verlustbehafteten
Kompression wird der systemeigene Frame verwendet, um das komprimierte
Band aufzunehmen. Es ist bekannt, dass er passt, da die Framegröße auf das
verlustbehaftete Kompressionsverhältnis abgestimmt ist. Zusätzlich wird
kein verlustbehaftet komprimiertes Band einen Video-Underrun aufweisen.
Es ist die abschließende
Darstellung der Seite und von der darunter liegenden Hardware wird
gewährleistet,
erfolgreich zu sein. Die Hauptzielstellung bei einer verlustbehafteten
Bandkompression besteht darin, zu gewährleisten, dass alle Bänder ohne
Blockierung (Deadlock) und mit minimaler Datenblockkopiermenge komprimiert
werden können.
Man beachte, dass eine verlustbehaftete Bandkompression in einem
Zustand beginnt, in dem es ein Band gibt, das noch nicht in den
Heap passen wird. Dies ist das Anfangsziel für eine verlustbehaftete Bandkompression,
wie durch den nachstehenden Algorithmus gegeben ist.
-
Die
betrieblichen Aspekte der Erfindung und die Details, die die Ausführung eines
mit der Erfindung zu verwendenden geeigneten Fallback-Managermoduls
betreffen, werden nun mit Bezug auf die 3, 4 und 5 beschrieben.
-
Es
wird zuerst auf 3 Bezug genommen. Es sollte
beachtet werden, dass die folgenden Abkürzungen verwendet werden:
ENDPG-Anweisungserzeugung
abgeschlossen
OM-Zustand eines unzureichenden Speicherplatzes
erkannt
VU-Video-Underrun vorausgesagt
-
Der
Zustand 61 ist der Nominalzustand für einen Anweisungsaufbau, in
dem Anweisungen zur Anweisungsliste vom Grafikanweisungserzeugungsmodul 33 hinzugefügt werden,
bis der Druckerspracheninterpreter 25 ein ENDPG-Kommando
ausgibt. Wenn ENDPG auftritt, wird eine Prüfung auf einen potentiellen
Video-Underrun durchgeführt.
Wenn durch den Video-Underrun-Prädiktor 47 bestimmt
wurde, dass ein Video-Underrun-Zustand existieren kann, wird ein Übergang
zu Zustand 63 durchgeführt.
-
Wenn
ein Zustand eines unzureichenden Speicherplatzes entsteht, wird
die Anweisungsliste auf Raster geprüft. Raster sind Arrays von
Pixelwerten. Obwohl jede Abbildung als Raster dargestellt werden
kann, verwendet der Personalcomputer- oder Arbeitsstationstreiber 17 (siehe 1) üblicherweise
Raster, um eine photografisches Abbildung an einen Drucker zu senden.
Für Bi-Level-Abbildungen
bestehen die Pixelwerte in einem Raster aus jeweils einem Bit und
weisen einen Wert von 0 oder 1 auf. Für Abbildungen mit mehreren Bit
je Pixel, entweder Graustufen oder Farbe, haben die Pixelwerte einen
Bereich von 0 bis zum maximalen Wert, der in der Anzahl von Bits
je Pixel dargestellt werden kann (üblicherweise 16, 64, 256 etc.).
-
Gemäß der vorliegenden
Erfindung verwendet der Interpreter die folgenden Aufrufe, um dem
System Raster vorzulegen:
-
-
Wenn
irgendwelche Raster vorliegen, gibt es einen Übergang zu Zustand 65.
Wenn es keine Raster gibt, wird ein Übergang zu Zustand 63 durchgeführt.
-
Während des
Zustands 65 werden Raster von der Kompressions-Funktionseinheit
komprimiert, um Speicher freizugeben und das Hinzufügen von
Anweisungen zur Anweisungsliste durch das Grafikanweisungserzeugungsmodul 33 setzt
fort. Wenn ein Zustand eines unzureichenden Speicherplatzes entsteht,
wird ein Übergang
zu Zustand 67 durchgeführt.
Es wird auch ein Übergang
zu Zustand 67 durchgeführt,
wenn vom Video-Underrun-Prädiktor 47 bei
ENDPG ein potentieller Video-Underrun-Zustand erkannt wurde.
-
Während des
Zustandes 67 wird von der Kompressions-Funktionseinheit 53 eine
verlustlose Kompression ausgeführt,
um ein oder mehr Bänder
für eine
Speicherfreigabe zu komprimieren. Wenn es erfolgreich ist, setzt
das Grafikanweisungserzeugungsmodul 33 das Hinzufügen von
Anweisungen zur Anweisungsliste fort. Wenn die verlustlose Kompression
einen Overflow in einem Bandpuffer erzeugt, gibt es einen Übergang
zu Zustand 69. In diesem Zusammenhang sollte beachtet werden,
dass die Effektivität
einer verlustlosen Kompression mit den Daten variiert. In einigen
Fällen
kann ein verlustloses Kompressionsverfahren eine Ausgabe erzeugen,
die größer als
die Eingabe ist. Dies wird durch ein Fehlschlagen der verlustlosen
Kompression verursacht. Eine verlustbehaftete Kompression, wie zum
Beispiel eine graustufenkodierende Kompression, wie sie in der parallel
anhängigen
Patentanmeldung der Serien-Nr. 08/324,682, eingereicht am 18. Oktober 1994
mit dem Titel Bi-level Image Compression By Grayscale Encoding,
beschrieben ist, erzeugt eine voraussagbar kleinere Ausgabe.
-
Der
Zustand 63 tritt wie vorstehend erwähnt ein. Wie bei Zustand 67 bewirkt
das Fehlschlagen der verlustlosen Kompression eines Bandes einen Übergang
zu Zustand 69.
-
Der
Zustand 69 kann nicht fehlschlagen, da er eine von der
Kompressions-Funktionseinheit 53 ausgeführte verlustbehaftete Bandkompression
verwendet, um zu gewährleisten,
dass die Seitendaten in den Speicher passen und in Echtzeit abgebildet
werden können.
Sobald dieser Zustand erreicht ist, wird die gesamte Seite unter
Verwendung einer verlustbehafteten Kompression komprimiert. Jedoch
wird dieser abschließende
Schritt verzögert,
bis ENDPG erreicht wird. Es ist effizienter, der Anweisungsliste
hinzuzufügen,
als die Zielbandpuffer und die Abbildung sofort zu dekomprimieren.
-
Während des
Zustands 71 wird auf die Fertigstellung der verlustbehafteten
Bandkompression durch die Kompressions-Funk tionseinheit 53 und
die Wiedergabe-/Dekompressions-Funktionseinheit 55 geachtet.
-
Die
Effektivität
der verlustlosen Kompression variiert mit den Daten. In einigen
Fällen
kann ein verlustloses Kompressionsverfahren eine Ausgabe erzeugen,
die größer als
die Eingabe ist.
-
4 stellt
den vom Fallback-Managermodul 45 verwendeten Ablauf zur
Behandlung von Speicher-Overflows während der Grafikanweisungserzeugungsverarbeitung
dar. Wenn der Aufruf einen Speicher-Overflow erzeugen wird, wie
vom Grafikspeicher-Managementmodul 41 (Block 81)
ermittelt, wird eine Bestimmung vorgenommen, ob Speicher durch Warten
(Blöcke 83 und 85)
verfügbar
werden wird. Diese Bestimmung wird durch ein Prüfen auf vorhergehende Seiten
durchgeführt,
die momentan abgebildet und gedruckt werden. Wenn vorhergehende
Seiten ausgeführt
werden, wird Speicher verfügbar
werden, wenn sie eingefärbt und
ausgegeben wurden. Wenn auf der Seite komprimierbare Raster vorhanden
sind (Block 89), führt
die Kompressions-Funktionseinheit 53 möglichst eine verlustlose Kompression
aus, andernfalls führt
sie eine verlustbehaftete Kompression (Block 91) aus. Die
Bestimmung, ob es auf der Seite komprimierbare Raster gibt oder
nicht, wird durch ein Durchsuchen der Anweisungsliste nach unkomprimierten
Rastern ausgeführt.
Wenn es keine komprimierbaren Raster auf der Seite gibt (Block 89),
führt die
Kompressions-Funktionseinheit 53 möglichst eine verlustlose Bandkompression
aus, andernfalls führt
sie eine verlustbehaftete Bandkompression aus (Block 91).
Nachdem diese Kompression für
ein Band durchgeführt
wurde, prüft
der Fallback-Manager, ob der freie Speicher den für das Hinzufügen der
nächsten
Anweisung erforderlichen Minimalwert überschreitet (Block 93).
Sobald der freie Speicher den Minimalwert überschreitet, kann die nächste Anweisung
vom Grafikanweisungserzeugungsmodul 33 verarbeitet werden
(Block 95). Wenn der freie Speicher den Minimalwert nicht überschreitet,
wird eine weitere Kompression ausgeführt (Block 91).
-
5 stellt
den vom Fallback-Managermodul 45 verwendeten Ablauf zum
Behandeln potentieller Video-Underruns während der Verarbeitung zum
Beenden der Seite dar. Wenn eine verlustbehaftete Kompression irgendwelcher
Bänder
benötigt
wird, wie von der Verlustbehaftungsprüfung 49 bestimmt (Block 101),
komprimieren die Kompressions-Funktionseinheit 53 und die
Wiedergabe-/Dekompressions-Funktionseinheit 55 alle Bänder verlustbehaftet
(Block 103). Wenn dann der Video-Underrun-Prädiktor 47 irgendwelche
Video-Underrun-Bänder
voraussagt (Block 105), prüft das Grafikspeichermodul 41,
ob es ausreichend Speicher zur vollständigen Abbildung der Video-Underrun-Bänder gibt
(Block 107). In diesem Fall geben die Kompressions-Funktionseinheit 53 und
die Wiedergabe-/Dekompressions-Funktionseinheit 55 die
Underrun-Bänder
vorher wieder (Block 109). Wenn nicht, wird das Grafikspeichermanagementmodul
verwendet, um zu bestimmen, ob es ausreichend Speicher zum verlustlosen
Komprimieren von Video-Underrun-Bändern gibt (Block 111).
In diesem Fall komprimieren die Kompressions-Funktionseinheit 53 und
die Wiedergabe-/Dekompressions-Funktionseinheit 55 verlustlos
Underrun-Bänder
(Block 113). Wenn nicht, komprimieren die Kompressions-Funktionseinheit 53 und
die Wiedergabe/Dekompressions-Funktionseinheit 55 alle
Bänder
verlustbehaftet (Block 103).