PatentDe  


Dokumentenidentifikation DE69730892T2 06.10.2005
EP-Veröffentlichungsnummer 0000798665
Titel Verarbeitung von Rückzugspunkten zur Blatterstellung mit Techniken zur Speicherreduktion
Anmelder Peerless Systems Corp., El Segundo, Calif., US
Erfinder Chura, David J., Redondo Beach, Californfia 90278, US;
Schafer, Stephen L., Irvine, California 92714, US
Vertreter Zenz, Helber, Hosbach & Partner GbR, 45128 Essen
DE-Aktenzeichen 69730892
Vertragsstaaten DE, FR, GB
Sprache des Dokument EN
EP-Anmeldetag 25.02.1997
EP-Aktenzeichen 973012438
EP-Offenlegungsdatum 01.10.1997
EP date of grant 29.09.2004
Veröffentlichungstag im Patentblatt 06.10.2005
IPC-Hauptklasse G06K 15/00

Beschreibung[de]
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 Anweisungen 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 reduzieren, 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 verschiedene 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.

Tabelle 1

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 Grafikteilsystem 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 spezifische 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:

TABELLE 2

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-Funktionseinheit 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).


Anspruch[de]
  1. Ein System zum Erzeugen von Bilddaten zur Verwendung durch einen Treiber für eine kontinuierliche synchrone Rasterbildausgabeeinrichtung aus von einem Computerprogramm erzeugten Beschreibungsdaten, aufweisend:

    a) Mittel zum Konvertieren der Beschreibungsdaten in die Bilddaten;

    b) einen mit den Konvertierungsmitteln gekoppelten Speicher (20), wobei der Speicher vorgegebene Abschnitte der Bilddaten in einem vorgegebenen Format speichert;

    c) Mittel (41, 51) zum Zuteilen von Abschnitten des Speichers zur Verwendung durch die Konvertierungsmittel;

    d) Mittel (35, 47) zum Bestimmen, ob der Speicher eine ausreichende Menge der vorgegebenen Abschnitte der Bilddaten zur Verwendung durch den Treiber ohne Kompression speichern kann, um die Bilddaten bei einer für die Ausgabeeinrichtung erforderlichen Geschwindigkeit zur Verfügung zu stellen;

    e) Mittel (53, 55) zum verlustlosen und verlustbehafteten Komprimieren der vorgegebenen Abschnitte der Bilddaten, sofern die Bestimmungsmittel feststellen, daß der Speicher nicht ausreichend ist; wobei das System dadurch gekennzeichnet ist, daß es ferner enthält:

    f) Mittel (45) zum Steuern des Betriebs der Komprimiermittel, um zu sichern, daß die Bilddaten stets von der Ausgabeeinrichtung ausgegeben werden, indem die Bilddaten nur dann verlustbehaftet komprimiert werden, wenn der Speicher für eine verlustlose Kompression der Bilddaten nicht ausreichend ist, und indem dann, wenn kein ausreichender Speicher verfügbar wird, auf zuvor verarbeitete von der Ausgabeeinrichtung auszugebende Bilddaten gewartet wird.
  2. Das System nach Anspruch 1, wobei die Mittel zum Konvertieren eine Schnittstelle (27) aufweisen, welche Seitenbeschreibungssprachaufrufe verarbeitet und die Aufrufe in eine Form konvertiert, die die Erzeugung des vorgegebenen Formats ermöglicht.
  3. Das System nach Anspruch 1, wobei die Mittel zum Bestimmen ein Modul (47) aufweisen, welches so betrieben wird, daß es eine Auftragsliste für Bänder, für welche ein Videounterlauf vorhergesagt ist, ausführt, um zu bestimmen, ob eine ausreichende Menge Speicher vorhanden ist, um die Ausführung abzuschließen.
  4. Das System nach Anspruch 1, wobei die Mittel zum Steuern ein Modul (83, 87, 89) aufweisen, das so ausgebildet ist, daß es Speicherüberläufe und vorhergesagte Videounterläufe verarbeitet.
  5. Das System nach Anspruch 1, wobei die Mittel zum Konvertieren der Beschreibungsdaten in die Bilddaten ferner aufweisen:

    a) Mittel (27) zum Empfangen von in den Beschreibungsdaten eingebetteten Kommandos und zum Weiterleiten jedes dieser Kommandos als entweder ein Neue-Seite-Kommando, ein Zeichenkommando oder ein Beende-Seite-Kommando;

    b) Mittel (31) zum Verarbeiten des Neue-Seite-Kommandos;

    c) Mittel (33) zum Verarbeiten der Zeichenkommandos und zum Erzeugen von Graphikaufträgen, die Bänder der in dem Speicher (20) gespeicherten Bilddaten darstellen;

    d) Mittel (35) zum Verarbeiten der Beende-Seite-Kommandos;

    wobei die Zuteilungsmittel (41, 51) eine Zuteilung des Speichers (20) zur Verwendung durch die Zeichenkommando-Verarbeitungsmittel verwalten.
  6. Das System nach Anspruch 5, wobei die Beende-Seite-Kommandoverarbeitungsmittel eine Zustandsmaschine umfassen, die einen Auftragsliste-Zustand (61), einen Verlustbehaftetes-Raster-Plus-Auftragsliste-Zustand (65), einen Verlustbehaftetes-Raster-Plus-Verlustloses-Band-Plus-Auftragsliste-Zustand (67), einen Verlustloses-Band-Plus-Auftragsliste-Zustand (63), einen Einige-Verlustbehaftete-Bänder-Plus-Auftragsliste-Zustand (69) und einen Alles-Verlustbehaftete-Bänder-Zustand (71) einschließt.
  7. Das System nach Anspruch 5, wobei die Mittel zum Empfangen eine Schnittstelle (27) umfassen, welche Seitenbeschreibungssprachaufrufe verarbeitet und die Aufrufe in eine Form konvertiert, die durch die Mittel zum Verarbeiten der Neue-Seite-Kommandos, die Mittel zum Verarbeiten der Zeichenkommandos und zum Erzeugen von Graphikaufträgen und die Mittel zum Verarbeiten der Beende-Seite-Kommandos verwendbar ist.
  8. Das System nach Anspruch 5, wobei die Mittel zum Verarbeiten der Neue-Seite-Kommandos ein Modul umfassen, welches eine zu erzeugende Seite durch nachfolgende Graphikkommandos definiert.
  9. Das System nach Anspruch 5, wobei die Mittel zum Verarbeiten der Zeichenkommandos und zum Erzeugen von Graphikaufträgen ein Modul umfassen, welches Bitmap-Deskriptoren in Graphikaufträge konvertiert.
  10. Das System nach Anspruch 5, wobei die Mittel (41, 51) zum Verwalten ein Modul umfassen, welches so betrieben wird, daß es Bänder von Graphikinformationen erzeugt, die als Anzeigelistenaufträge und deren zugehörige Daten dargestellt werden und einen zuvor konfigurierten Heap verwaltet, um Speicher in dem Vorkonfigurationsheap zuzuteilen, um zu sichern, daß sämtliche Seiten der auszugebenden Bilddaten von der Ausgabeeinrichtung ausgegeben werden.
  11. Das System nach Anspruch 5, wobei die Mittel zum Bestimmen ein Modul (47) umfassen, welches so betrieben wird, daß es eine Auftragsliste für Bänder, für welche ein Videounterlauf vorhergesagt ist, ausführt, um zu bestimmen, ob eine ausreichende Menge Speicher vorhanden ist, um die Ausführung abzuschließen.
  12. Das System nach Anspruch 5, wobei die Mittel zum Steuern ein Modul (83, 87, 89) umfassen, welches so ausgebildet ist, daß es Speicherüberläufe und vorhergesagte Videounterläufe verarbeitet.
  13. Ein Verfahren zum Erzeugen von Bilddaten zur Verwendung durch einen Treiber für eine kontinuierliche synchrone Rasterbildausgabeeinrichtung aus Beschreibungsdaten, die von einem Computerprogramm erzeugt worden sind, umfassend die Schritte:

    a) Empfangen (27) von Kommandos, die in den Beschreibungsdaten eingebettet sind, und Weiterleiten jedes der Kommandos als entweder ein Neue-Seite-Kommando, ein Zeichenkommando oder ein Beende-Seite-Kommando;

    b) Verarbeiten (31) der Neue-Seite-Kommandos;

    c) Verarbeiten (33) der Zeichenkommandos und Erzeugen von Graphikaufträgen, die Bänder der Bilddaten darstellen;

    d) Verarbeiten (35) der Beende-Seite-Kommandos;

    e) Speichern (33) der Bänder;

    f) Verwalten (41, 51) von Zuteilungen der Speichermittel zur Verwendung durch die Zeichenkommandoverarbeitungsmittel;

    g) Bestimmen (35, 57), ob eine Kommpression der Bänder durch ein Kompressionsmittel erforderlich ist, um die Bänder zu speichern, so daß sie dem Treiber bei einer bei der Ausgabeeinrichtung erforderlichen Geschwindigkeit zur Verfügung gestellt werden können, wobei die Kompressionsmittel dem verlustbehafteten und verlustlosen Komprimieren der Bänder dienen;

    wobei das Verfahren dadurch gekennzeichnet ist, daß es ferner einschließt:

    h) Steuern (45) der Verwaltungsmittel und der Kompressionsmittel, um zu sichern, daß die Bänder nur dann verlustbehaftet komprimiert werden, wenn die Speichermittel nicht ausreichend sind, um die Bänder dann zu speichern, wenn sie verlustlos komprimiert sind, bei der von der Ausgabeeinrichtung erforderlichen Geschwindigkeit und, wenn kein ausreichender Speicher verfügbar wird, indem darauf gewartet wird, daß zuvor verarbeitete Bilddaten von der Ausgabeeinrichtung ausgegeben sind.
Es folgen 5 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com