JP2002043950A - Coding method and device, and decoding method and device - Google Patents

Coding method and device, and decoding method and device

Info

Publication number
JP2002043950A
JP2002043950A JP2000221236A JP2000221236A JP2002043950A JP 2002043950 A JP2002043950 A JP 2002043950A JP 2000221236 A JP2000221236 A JP 2000221236A JP 2000221236 A JP2000221236 A JP 2000221236A JP 2002043950 A JP2002043950 A JP 2002043950A
Authority
JP
Japan
Prior art keywords
data
command
step
line
means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000221236A
Other languages
Japanese (ja)
Inventor
Yoichi Sakamoto
陽一 坂本
Original Assignee
Canon Inc
キヤノン株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc, キヤノン株式会社 filed Critical Canon Inc
Priority to JP2000221236A priority Critical patent/JP2002043950A/en
Publication of JP2002043950A publication Critical patent/JP2002043950A/en
Application status is Withdrawn legal-status Critical

Links

Abstract

PROBLEM TO BE SOLVED: To provide a coding device and a decoding device that conduct coding/ decoding by using repetition of data with at least two different sizes so as to enhance the compression rate when utilizing the detected repetition of data in coding/decoding.
SOLUTION: When a replaceable part of data through copy of processed data is detected and a data length of the part is acquired and then a replaceable part through repetition of data of any size among a plurality of kinds of sizes is acquired, any of commands Copy the Repeat Byte, Copy then Repeat Word, and Copy then Repeat Double Word is generated depending on the size of the data. Furthermore, in the case that a part to which repetition of data is not applicable in succession to the part replaceable through copy of the processed data is detected, a command Copy then Raw is generated.
COPYRIGHT: (C)2002,JPO

Description

【発明の詳細な説明】 DETAILED DESCRIPTION OF THE INVENTION

【0001】 [0001]

【発明の属する技術分野】本発明は、画像データの符号化及び復号化に関する。 The present invention relates to relates to encoding and decoding of image data. 特に、グレイスケールまたはカラー画像データのように一画素が多値で表現される、2 In particular, one pixel as a gray scale or color image data is represented by multi-value, 2
次元またはそれ以上の次元を持つデータ構造を圧縮するために符号化し、またその符号を復号するのに好適な符号化及び復号化技術に関するものである。 Encoded to compress the data structure having a dimension or more dimensions, also it relates to suitable encoding and decoding techniques to decode the code.

【0002】 [0002]

【従来の技術】従来、画像データを圧縮する方法として、ランレングス符号を用いる方法がある。 Conventionally, as a method for compressing image data, there is a method of using a run-length code. ランレングス符号は、同一データが繰り返される場合に、そのデータと繰り返しの長さを符号化するものである。 Run-length code, when the same data is repeated, it is to encode the length of the data and repeated. ランレングス符号は、ソフトウェアによってかなり高速に符号化を行うことができるが、画像データのように水平・垂直の両方向に相関がある場合でも、水平方向の相関のみが圧縮に寄与し、垂直方向の相関があっても圧縮に寄与しない。 Run-length code can be carried out considerably faster to the encoding by software, even if there is a correlation in both the horizontal and vertical as the image data, contributing only the correlation in the horizontal direction is the compression in the vertical direction even if a correlation does not contribute to compression. このため、画像データに適用して高い圧縮率を得ることは困難である。 Therefore, it is difficult to obtain a high compression ratio is applied to the image data.

【0003】また、別の方法としてデルタロウ符号を用いる方法がある。 [0003] Further, there is a method of using a delta row code Alternatively. デルタロウ符号は、直前のラインと同じデータが続いている場合に、続いている長さを符号化するものである。 Delta row code, if the same data as the previous line continues, followed by being length is to encode. デルタロウ符号は、ソフトウェアによってかなり高速に符号化を行うことができるが、画像データのように水平・垂直の両方向に相関がある場合でも、垂直方向の相関のみが圧縮に寄与することになり、 Delta row code, can be performed much faster to the encoding by software, even if there is a correlation in both the horizontal and vertical as image data, will be only the correlation in the vertical direction is to contribute to compression,
水平方向の相関があっても圧縮に寄与しない。 Does not contribute to compression even if the correlation in the horizontal direction. このため、画像データに適用して高い圧縮率を得ることが困難である。 Therefore, it is difficult to obtain a high compression ratio is applied to the image data.

【0004】また、別の方法としてハフマン符号を用いる方法がある。 Further, there is a method of using a Huffman code Alternatively. ハフマン符号は、データの分布を調べ、 Huffman codes, examines the distribution of data,
出現頻度の高いデータを短い符号に符号化するものである。 It is to encode the high frequency data in the short code. ハフマン符号は画像データのように水平・垂直の両方向に相関がある場合において、どちらの方向の相関も圧縮に寄与しない。 In case Huffman codes are correlated in both the horizontal and vertical as image data, also do not contribute to compression either direction of the correlation. このため、画像データに適用して高い圧縮率を得ることが困難である。 Therefore, it is difficult to obtain a high compression ratio is applied to the image data.

【0005】そのほかにもLZ77符号、LZ78符号、JBIG符号など様々な符号が考案されているが、 [0005] In addition to also LZ77 coding, LZ78 codes, various codes such as JBIG codes have been devised,
いずれも水平・垂直の相関が最も顕著である直左のデータ、および直上のデータ以外のデータを調べる必要がある。 Both need to examine the horizontal and vertical correlation is most prominent is directly on the left of the data, and the data other than the data immediately above. このため、符号化における計算量が多く、ソフトウェアで符号化した場合に、符号化にかなりの時間を要し、また、ハードウェアで復号した場合に復号器の規模も大きくなるという欠点がある。 Thus, the computational amount is large in the coding, the case of encoding with software, it takes considerable time coding, also, there is a disadvantage that a scale of the decoder is also increased when decoded by hardware.

【0006】また、別の方法として、ランレングス符号とデルタロウ符号を併用し、水平・垂直の相関が最も顕著である直左のデータ、および直上のデータのみを調べることにより計算量を小さくし、ソフトウェアで符号化した場合に要する時間を短くするとともに、水平・垂直両方向の相関を利用する場合に使用される3種類の操作、すなわちデータの繰り返し、複写、生データのうちの少なくとも2つを同時に符号化することにより、より圧縮率を高くする方法がある。 [0006] In another method, a combination of run-length encoding and delta row code, to reduce the calculation amount by checking directly on the left of the data correlation in the horizontal and vertical is most pronounced, and immediately above the data only, thereby shortening the time required when encoded in software, the three operations used in the case of using the correlation in the horizontal and vertical directions, i.e. the repetition of data, copying, of the raw data of at least two simultaneously by encoding, there is a method of increasing the more the compression ratio. しかしながら、この方法によれば、ランレングス符号が表現する繰り返しデータが一種類、たとえば1バイトに限られている。 However, according to this method, run-length code is limited to repetitive data one type, for example, 1 byte to represent. 塗りつぶしのパターンや減色のためのディザパターンは8×8ピクセルで構成されることが多いので、画像データが2値の場合は同一バイトが繰り返されることが多くなり、1 Because dither pattern for the pattern and color reduction of fill are often composed of 8 × 8 pixels, if the image data is binary will often identical byte is repeated, 1
バイトの繰り返しのランレングス符号が有効に作用する。 Repetition of the run-length encoding of bytes to act effectively. しかしながら、画像データが多値の場合は同一バイトが連続せず、例えば1バイトおきに同一バイトが繰り返されるようなことが多く、ランレングス符号が有効に作用しないという欠点がある。 However, if the image data is multi-value not consecutive identical bytes, for example, it is more like the same bytes are repeated one byte every the disadvantage that run length code does not act effectively.

【0007】 [0007]

【発明が解決しようとする課題】本発明は、上記の問題に鑑みてなされたものであり、符号化・復号化においてあるデータの繰り返しを検出してこれを利用するにおいて、少なくとも2つの異なるサイズのデータの繰り返しを用いて符号化・復号化することを可能とし、より圧縮率を高くすることを目的とする。 [SUMMARY OF THE INVENTION The present invention has been made in view of the above problems, the use of this to detect the repetition of the data in the encoding and decoding, at least two different sizes and it allows for encoding and decoding using the repetition of the data, and an object thereof is to increase the more the compression ratio. これにより、グレイスケールまたはカラー画像データのように一画素が多値で表現される画像データであっても圧縮率を高くすることができる。 This makes it possible to be image data one pixel as a gray scale or color image data is represented by multi-value increasing the compression ratio. また、本発明の他の目的は、水平・垂直両方向の相関を利用して符号化する場合等において一般に使用される3種類の操作、すなわちあるデータの繰り返し、処理済データの複写、生データのうちの少なくとも2つを同時に符号化可能とし、より圧縮率を高くすることにある。 Another object of the present invention, three types of operations that are commonly used in the case such encoding using the correlation in the horizontal and vertical directions, i.e. the repetition of certain data, the processed data copying, the raw data simultaneously enabling encoding at least two of out is to increase the more the compression ratio. また、本発明の他の目的は、画像データのような2次元以上のデータ構造を、水平・垂直両方向の相関を利用して符号化することにより高い圧縮率を得ることを目的とする。 Another object of the present invention is intended to obtain a two-dimensional or more data structures, such as image data, a high compression rate by encoding using the correlation in the horizontal and vertical directions. 特に、水平・垂直の相関が最も顕著である直左のデータおよび直上のデータを用いて圧縮を行うことにより計算量を小さくし、ソフトウェアで符号化した場合に要する時間を短くすることを目的とする。 In particular, a purpose of reducing the amount of calculation by performing compression using data directly on the left data and right above the correlation in the horizontal and vertical is most pronounced, to shorten the time required in the case of encoding by software to.

【0008】 [0008]

【課題を解決するための手段】上記の目的を達成するための本発明の一態様によれば、処理済データの複写で置換し得る部分を検出し、該部分のデータ長を取得する第1取得手段と、複数種類のサイズのうちのいずれかのサイズのデータの繰り返しで置換し得る部分を検出し、該データの内容と該部分のデータ長を取得する第2取得手段と、前記第1乃至第2取得手段によって取得されない部分を検出し、該部分のデータ内容及びデータ長を取得する第3取得手段と、前記第1乃至第3取得手段によって検出された各部分のデータ長とデータ内容に基づいて符号化データを生成する生成手段とを備える符号化装置が提供される。 According to one aspect of the present invention for achieving the Means for Solving the Problems The above object, detecting a moiety capable of replacing the copying of the processed data, the first to get the data length of the partial an acquiring unit, a second acquiring means for detecting the repeated part can be substituted with data of any size of a plurality of sizes, obtains a data length of content and partial of the data, the first to detect a portion which is not acquired by the second acquisition means, and the third acquisition means for acquiring data content and the data length of the partial data length and data content of the first to the parts that have been detected by the third acquiring means encoding apparatus comprising generating means for generating encoded data is provided based on.

【0009】また、上記の目的を達成するための本発明の他の一態様によれば、所定のデータ長の符号列からなるコマンドを解析する解析手段と、復号化済みのデータを記憶する記憶手段と、前記解析手段の解析結果に基づいて復号化データを出力する出力手段とを備え、前記出力手段が、前記記憶手段より前記復号化済みのデータの対応部分を取得して出力する第1出力手段と、複数種類のサイズの中より指定されたサイズを有するデータを後続の符号列より得て、これを指定された繰り返し数だけ繰り返して出力する第2出力手段と、指定されたデータ長のデータを後続の符号列より得て出力する第3出力手段とを備える複合化装置が提供される。 [0009] According to another aspect of the present invention for achieving the above object, analyzing means for analyzing the command consisting of the code string having a predetermined data length, storage for storing the decrypted data and means, and output means for outputting the decoded data based on the analysis result of the analyzing means, the said output means, and output to obtain the corresponding part of the decoded data from the storage means 1 and output means, the data having a specified size from among a plurality of types of sizes obtained from the subsequent code sequence, and a second output means for repeatedly outputting only repetition number is specified, the specified data length the third composite device and output means is provided for outputting the data obtained from a subsequent code sequence.

【0010】 [0010]

【発明の実施の形態】以下、添付の図面を参照して本発明の好適な実施形態を説明する。 BEST MODE FOR CARRYING OUT THE INVENTION The following describes the preferred embodiments of the present invention with reference to the accompanying drawings.

【0011】図1は本発明の第1の実施形態による印刷システムのハードウエア構成を説明するブロック図である。 [0011] Figure 1 is a block diagram illustrating a hardware configuration of a printing system according to the first embodiment of the present invention.

【0012】図1において、1はホストコンピュータであり、CPU2、メモリ3、ハードディスク4、フロッピー(登録商標)ドライブ5およびホストパラレルポート6を備える。 [0012] In FIG. 1, 1 denotes a host computer, comprising CPU 2, a memory 3, a hard disk 4, a floppy drive 5 and the host parallel port 6. ホストコンピュータ1とプリンタ7とは、ホストパラレルポート6を介して接続されている。 The host computer 1 and the printer 7 are connected via the host parallel port 6.

【0013】CPU2は、メモリ3に記憶された各種の制御プログラム、およびアプリケーションプログラムを実行する。 [0013] CPU2 various control programs stored in the memory 3, and executes the application program. メモリ3は、ハードディスク4またはフロッピードライブ5から読み出されたプログラム、およびそのプログラムが必要とするデータを記憶する。 Memory 3 stores programs read from the hard disk 4 or floppy drive 5, and the data that the program requires.

【0014】ハードディスク4は、図2において後述するオペレーティングシステム10、アプリケーションプログラム(アプリケーション)11、プリンタドライバプログラム12、通信ドライバプログラム15などのプログラムを格納する。 The hard disk 4 stores an operating system 10 which will be described later in FIG. 2, an application program (application) 11, a printer driver program 12 stores programs such as a communication driver program 15.

【0015】フロッピードライブ5は、インストールディスク8などのフロッピーディスクを装着することができ、装着されたフロッピーディスクに格納されたプログラムを読み取る。 The floppy drive 5 may be mounted a floppy disk, such as the installation disk 8 and reads the program stored in the loaded floppy disk. ホストパラレルポート6は、プリンタ7にデータを送ることができる。 Host parallel port 6 may send data to the printer 7. プリンタ7は、ホストパラレルポート6から印刷データを受け取り、印刷を行う。 Printer 7 receives the print data from the host parallel port 6 performs printing. 8はインストールディスクであり、本実施形態では、後述する図2に示すプリンタドライバプログラム1 8 is a installation disk, in the present embodiment, the printer driver program 1 shown in FIG. 2 to be described later
2およびそれをインストールするためのインストールプログラムを格納する。 2 and stores the installation program to install it.

【0016】通常のインストール操作は、操作者がインストールディスク8をフロッピードライブ5(あるいは図示しないCD−ROMドライブ)にセットし、インストールプログラムを起動することで行われる。 [0016] The normal installation operation, the operator sets the installation disk 8 in the floppy drive 5 (or not shown CD-ROM drive), is performed by starting the installation program. インストールプログラムが起動されると、プリンタドライバプログラム12がインストールディスク8から読み込まれ、 When the installation program is started, the printer driver program 12 is read from the installation disk 8,
ハードディスク4に書き込まれる。 It is written to the hard disk 4. また、インストールプログラムはオペレーティングシステム10が提供する機能を用いて、プリンタドライバプログラム12がアプリケーション11から使用可能となるように設定する。 Also, the installation program using a function of the operating system 10 provides a printer driver program 12 is set to be available from the application 11.

【0017】図2は、本実施形態による印刷装置を適用可能な印刷システムの制御構成を示すブロック図である。 [0017] FIG. 2 is a block diagram showing a control configuration of a printing system applicable to a printing apparatus according to the present embodiment.

【0018】図2において、10はオペレーティングシステム(OS)であり、CPU2、メモリ3、ハードディスク4、フロッピードライブ5、ホストパラレルポート6などのハードウェア資源の管理、およびアプリケーションプログラム11、プリンタドライバプログラム1 [0018] In FIG 2, 10 is an operating system (OS), CPU 2, a memory 3, a hard disk 4, floppy drive 5, management of the hardware resources such as the host parallel port 6, and the application program 11, the printer driver program 1
2、通信プログラム15などのソフトウェアの管理を行う。 2, and software management, such as communication program 15. 11はアプリケーションプログラムであり、操作者の指示に従って印刷データを作成するとともに、オペレーティングシステム10を経由してプリンタドライバプログラム12に印刷指令を発行する。 11 is an application program, as well as creating print data according to an instruction of the operator issues a print command to the printer driver program 12 via the operating system 10.

【0019】12はプリンタドライバプログラムであり、アプリケーションプログラム11から発行された印刷指令に基づき、プリンタ7が印刷を行うためのビットマップデータを作成し、後述する符号化手順によりビットマップデータを符号化し、用紙サイズ、ビットマップデータのラインの長さとライン数などの印刷制御に必要なデータとともに符号化したビットマップデータを出力する。 [0019] 12 denotes a printer driver program, based on the print instruction issued from the application program 11, the printer 7 to create a bit map data for printing, it encodes the bit map data by the encoding procedure described below , and it outputs the bitmap data encoded with data necessary for printing control, such as the length and number of lines of the paper size, the bitmap data lines. 15は通信プログラムであり、ホストパラレルポート6を制御してプリンタ7にデータを送信する。 15 is a communication program, and transmits the data to the printer 7 to control the host parallel port 6.

【0020】6はホストパラレルポートであり、IEE [0020] 6 is a host parallel port, IEE
E規格「IEEE Std 1284-1994」に規定される、8ビットのデータ信号Data1からData8、プリンタ7を制御する4 E is defined in the standard "IEEE Std 1284-1994", Data8 from 8-bit data signals Data1, controls the printer 7 4
ビットの制御信号nStorobe、nAutoFd、nSelectIn、nIni Bit control signal nStorobe, nAutoFd, nSelectIn, nIni
t、プリンタ7の状態を示す5ビットの状態信号nAck、B t, the state signal of 5 bits indicating the status of the printer 7 nAck, B
usy、PError、Select、nFaultにより、プリンタ7内のプリンタパラレルポート16に接続される。 usy, PError, Select, by nFault, is connected to the printer parallel port 16 of the printer 7.

【0021】次に、プリンタ7の制御構成について説明する。 Next, a description will be given of a control structure of the printer 7. プリンタパラレルポート16は、前述の信号によりホストパラレルポート6に接続される。 Printer parallel port 16 is connected to the host parallel port 6 by the above-mentioned signals. 17は制御回路であり、例えば1チップCPUで構成され、プリンタパラレルポート16、FIFOメモリ19、復号回路2 17 is a control circuit, for example 1 is composed of a chip CPU, printer parallel port 16, FIFO memory 19, decoding circuit 2
0、シフトレジスタ21、およびプリンタエンジン22 0, the shift register 21, and the printer engine 22
の制御を行う。 It performs the control of.

【0022】19はFIFO(ファーストインファーストアウト)メモリであり、プリンタパラレルポート16 [0022] 19 is a FIFO (first-in first-out) memory, printer parallel port 16
が受信したデータを記憶し、記憶したデータを先入れ先出しの順に復号回路20に出力する。 There stores the received data, and outputs to the decoding circuit 20 the stored data in the order of first-in-first-out. 復号回路20は、 Decoding circuit 20,
FIFOメモリ19に記憶された符号列データを復号し、シフトレジスタ21に出力する。 It decodes the code string data stored in the FIFO memory 19, and outputs to the shift register 21. 21はシフトレジスタであり、復号回路20が出力したパラレルデータをシリアルデータに変換し、プリンタエンジン22に出力する。 21 is a shift register converts the parallel data is the decoding circuit 20 and output to the serial data, and outputs to the printer engine 22. 22はプリンタエンジンであり、本実施形態ではレーザビームプリンタエンジンを用いる。 22 denotes a printer engine, a laser beam printer engine in the present embodiment. プリンタエンジン22は、制御回路17との間でシリアル信号を用いてエンジンコマンドの受信およびエンジンステータスの送信を行い、制御回路17からPRINTコマンドを受信すると1ページの印刷処理を開始し、用紙が所定の位置に達するとシフトレジスタ21が出力したシリアルデータに従って用紙への印刷を行う。 The printer engine 22 performs transmission of the reception and the engine status of the engine command using serial signals between the control circuit 17 starts the print process of one page upon receiving the PRINT command from the control circuit 17, the paper is given performs printing on a sheet according to the serial data shift register 21 has output reaches the position.

【0023】以下、印刷動作について説明する。 [0023] In the following, a description will be given of the printing operation. 操作者がホストコンピュータ1側でアプリケーションプログラム11を操作して印刷データを生成し、その印刷を指示すると、アプリケーションプログラム11からオペレーティングシステム10を経由してプリンタドライバプログラム12に印刷指令が渡される。 Operator generates print data by operating the application program 11 in the host computer 1 side, and instructs the printing, the print command from the application program 11 to the printer driver program 12 via the operating system 10 is passed. プリンタドライバプログラム12はアプリケーションプログラム11から発行された印刷指令に基づき、ビットマップデータを作成する。 The printer driver program 12 based on the print instruction issued from the application program 11 creates a bitmap data. そして、プリンタドライバプログラム12は、後述する符号化手順に基づき、作成したビットマップデータから符号化データを生成し、用紙サイズ、ビットマップデータのラインの長さとライン数などの印刷制御に必要なデータとともに出力する。 The printer driver program 12, based on the encoding procedure described below, to generate the coded data from the bit map data created, paper size, the data necessary for printing control, such as the length and number of lines of the bitmap data lines the output with. 通信プログラム15は、 Communication program 15,
プリンタドライバプログラム12が作成した、印刷制御に必要なデータおよび符号化データを、ホストパラレルポート6を経由して送信する。 Printer driver program 12 creates the data and the encoded data necessary for printing control, and transmits via the host parallel port 6.

【0024】制御回路17はプリンタパラレルポート1 [0024] The control circuit 17 printer parallel port 1
6を経由してこれを受信する。 6 via the receiving it. 受信したコマンドが印刷の開始を指示するコマンドであった場合、制御回路17 If the received command is a command for instructing the start of printing, the control circuit 17
はプリンタエンジン22にPRINTコマンドを送信する。 It transmits a PRINT command to the printer engine 22. プリンタエンジン22はPRINTコマンドを受信すると、印刷を開始する。 The printer engine 22 receives the PRINT command to start printing.

【0025】復号回路20は、後述する復号手順に基づき、FIFOメモリ19に格納された符号化データを復号してシフトレジスタ21に出力する。 The decoding circuit 20, based on the decoding procedure to be described later, and outputs the decoding encoded data stored in the FIFO memory 19 to the shift register 21. シフトレジスタ21は主走査の長さをカウントするカウンタを持ち、プリンタエンジン22から主走査の開始が通知される毎に、カウンタに所定の値を設定した後、カウンタが「0」より大である間、所定のタイミングで復号回路2 The shift register 21 has a counter for counting the length of the main scanning, each time the start of the main scanning from the printer engine 22 is notified, after setting a predetermined value to the counter, the counter is larger than "0" during the decoding circuit 2 at a predetermined timing
0が出力したパラレルデータをシリアルデータに変換し、プリンタエンジン22に出力するとともにカウンタを減算する。 0 converts the parallel data output to the serial data, subtracts the counter outputs to the printer engine 22. プリンタエンジン22は用紙が所定の位置に達すると、主走査開始毎にデータの出力が必要であることを通知するとともに、シフトレジスタ21が出力したシリアルデータに基づき、印刷を行う。 The printer engine 22 when the sheet reaches a predetermined position, and notifies the need for output of data to the main scanning start each, based on the serial data shift register 21 has output, performs printing.

【0026】次に、図3乃至図5を参照して、本実施形態のプリンタドライバ12が生成する符号化データについて説明する。 Next, with reference to FIGS. 3 to 5, the printer driver 12 of this embodiment is the encoded data will be described for generating.

【0027】図3は、図2に示したプリンタドライバ1 [0027] Figure 3, the printer driver 1 shown in FIG. 2
2が符号化データを生成するのに用いるコマンドコードテーブルの一例を説明する図である。 2 is a diagram illustrating an example of a command code table used to generate the encoded data. 本実施形態で説明する符号は、同一データバイトの繰り返しを示すバイトリピート、同一データワードの繰り返しを示すワードリピート、同一データダブルワードの繰り返しを示すダブルワードリピートの各リピート、直前のラインのデータを複写するコピー、およびデータ列の内容を直接指定する生データの3種類の操作のうち、少なくとも一つを指定する。 Code described in this embodiment, byte repeat showing repetition of the same data byte, word repeat showing repetition of the same data word, each repeat doubleword repeat showing repetition of the same data double word, the data of the immediately preceding line copy copying, and of the three types of manipulation of the raw data directly specify the contents of the data string to specify at least one. ここでワードとは2バイトを、ダブルワードとは4バイトを、それぞれあらわす。 2 bytes here in word, the 4-byte and double word, representing respectively.

【0028】図3に示すように、コマンドコードのビットが「11000000」の場合はEOLコマンドであり、行末まで直前のラインをコピーすることを示す。 As shown in FIG. 3, if bit command code is "11000000" is EOL command, indicating that copying the immediately preceding line to the end of the line.

【0029】また、コマンドコードのビットが「111000 [0029] In addition, the bits of the command code is "111000
00」の場合はEOPコマンドであり、ページの終了を示す。 In the case of 00 "is the EOP command, indicating the end of the page. このコマンドは復号の終了を指示するのみで、画像データは表現しない。 This command is only indicates the end of decoding, the image data is not represented.

【0030】また、コマンドコードの上位2ビットが「01」の場合は、Copy thenRepeat Byteコマンドであり、直前のラインのデータを、下位3ビット(S0〜S2) [0030] In addition, if the upper two bits of the command code is "01", it is a Copy thenRepeat Byte command, the data of the previous line, the lower 3 bits (S0~S2)
で指定されるバイト数(Sバイト)分複写した後、コマンドコードの直後の1バイトの繰り返しデータを、中位3ビット(L0〜L2)で指定されるLに2を加えた回数繰り返すことを示す。 After copying the number of bytes specified (S bytes) in a repeating data of 1 byte immediately following the command code, repeating number plus 2 to L specified by the intermediate 3 bits (L0 to L2) show.

【0031】また、コマンドコードの上位3ビットが「100」の場合は、Copy thenRepeat Wordコマンドであり、直前のラインのデータを、下位3ビットで指定されるSバイト複写後、コマンドコードの直後の2バイトの繰り返しデータを、中位2ビット(L0,L1)で指定されるLに2を加えた回数繰り返すことを示す。 [0031] In addition, if the three most-significant bits of the command code is "100", is a Copy thenRepeat Word command, the data of the last line, after the S byte copy, which is specified by the lower 3 bits, immediately after the command code repeating data of 2 bytes, indicating that the repeating number of times plus two L specified by the middle two bits (L0, L1).

【0032】また、コマンドコードの上位3ビットが「101」の場合は、Copy thenRepeat Double Wordコマンドであり、直前のラインのデータを、下位3ビットで指定されるSバイト複写後、コマンドコードの直後の4バイトの繰り返しデータを、中位2ビット(L0,L1)で指定されるLに2を加えた回数繰り返すことを示す。 Further, if the upper three bits of the command code is "101", a Copy thenRepeat Double Word command, the data of the immediately preceding line, after S bytes copied is specified by the lower 3 bits, immediately after the command code repeating data of 4 bytes, indicating that the repeating number of times plus two L specified by the middle two bits (L0, L1).

【0033】また、コマンドコードの上位2ビットが「00」の場合は、Copy then Rawコマンドであり、直前のラインのデータを、下位3ビットで指定されるSバイト複写後、コマンドコードの直後に続く、中位3ビットで指定されるR(R0〜R2)に、1を加えたバイト数のデータをそのままデータとすることを示す。 [0033] In addition, if the upper two bits of the command code is "00", is a Copy then Raw command, the data of the last line, after the S byte copy, which is specified by the lower 3 bits, immediately after the command code followed, the R (R0~R2) specified by the intermediate 3 bits indicates that the intact data (bytes) plus one.

【0034】また、コマンドコードの上位3ビットが「110」で、残りのビットのいずれかが1の場合は、Cop Further, the upper 3 bits of the command code is "110", if any of the remaining bits is 1, Cop
yLongコマンドであり、直前のラインのデータを、下位5ビット(S0〜S4)で指定されるSの8倍のバイトを複写することを示す。 A yLong command, indicating that copying the data of the immediately preceding line, the 8 times the byte S which is specified by the lower 5 bits (S0 to S4).

【0035】また、コマンドコードの上位3ビットが「111」で、残りのビットのいずれかが1の場合は、Ext Further, the upper 3 bits of the command code is "111", if any of the remaining bits is 1, Ext
endコマンドであり、Extendコマンドコードに続く第2 Is the end command, the second following the Extend command code
のコマンドコードと組み合わされて一つのコマンドとなり、下位5ビット(E0〜E4)で指定される数値Eに応じたカウントを、第2のコマンドコードが示すカウントに加算されることを示す。 The combination with the command code become one of the command, it indicates that the count corresponding to a number E, which is specified by the lower 5 bits (E0-E4), is added to the count indicated by the second command code.

【0036】図4は、図3に示したExtendコマンドに後続する第2のコマンドコードの一例を示す図である。 [0036] FIG. 4 is a diagram illustrating an example of a second command code following the Extend command shown in FIG.

【0037】図4に示すように、第2のコマンドコードの上位2ビットが「01」の場合は、Copythen Repeat By As shown in FIG. 4, if the upper 2 bits of the second command code is "01", Copythen Repeat By
te Longコマンドであり、直前のラインのデータを、下位3ビット(S0〜S1)で指定されるSバイト複写後、第2のコマンドコードの直後の1バイトの繰り返しデータを、中位3ビット(L0〜L2)で指定されるLに、Extend te a Long command, the data of the immediately preceding line, after S bytes copied is specified by the lower 3 bits (S0 to S1), the repeated data of 1 byte immediately after the second command code, intermediate 3 bits ( to L, which is specified in the L0~L2), Extend
コマンドで指定された数値Eの8倍を加え、さらに2を加えた回数繰り返すことを示す。 Eight times the given number E in the command added, indicating that the repeating number of times further 2 was added.

【0038】また、第2のコマンドコードの上位2ビットが「10」の場合は、Copy thenRepeat Word Longコマンドであり、直前のラインのデータを、下位3ビットで指定されるSバイト複写後、第2のコマンドコードの直後の2バイトの繰り返しデータを、中位3ビット(L0〜 Further, if the upper 2 bits of the second command code is "10", a Copy thenRepeat Word Long command, the data of the immediately preceding line, after S bytes copied is specified by the lower 3 bits, the repeating data of 2 bytes immediately following the second command code, intermediate 3 bits (L0~
L2)で指定されるLに、Extendコマンドで指定された数値Eの8倍を加え、さらに2を減算した回数繰り返すことを示す。 The L designated by L2), added 8 times the given number E in Extend command, indicating that the repeating number of times further 2 were subtracted.

【0039】また、第2のコマンドコードの上位2ビットが「11」の場合は、Copy thenRepeat Double Word Lo [0039] In addition, if the upper two bits of the second command code is "11", Copy thenRepeat Double Word Lo
ngコマンドであり、直前のラインのデータを、下位3ビットで指定されるSバイト複写後、第2のコマンドコードの直後の4バイトの繰り返しデータを、中位3ビットで指定されるLに、Extendコマンドで指定された数値E Is ng command, the data of the immediately preceding line, after S bytes copied is specified by the lower 3 bits, the repeated data of 4 bytes immediately following the second command code, the L designated by intermediate 3 bits, It is specified in the Extend command numerical values ​​E
の8倍を加え、さらに2を減算した回数繰り返すことを示す。 It added 8-fold, indicating that the repeating number of times further 2 were subtracted.

【0040】また、第2のコマンドコードの上位2ビットが「00」の場合は、Copy thenRawLongコマンドであり、直前のラインのデータを、下位3ビットで指定されるSバイト複写後、第2のコマンドコードの直後に続く、中位3ビット(R0〜R2)で指定されるRに、Extend [0040] In addition, if the upper two bits of the second command code is "00", Copy thenRawLong is a command, the data of the last line, after the S byte copy, which is specified by the lower 3 bits, of the second immediately following the command code, the R specified by the intermediate 3 bits (R0~R2), Extend
コマンドで指定された数値Eの8倍を加え、さらに1を加えたバイト数のデータをそのままデータとすることを示す。 Eight times the given number E in the command added, it indicates that the data more data bytes plus 1.

【0041】次に図5を参照し、図3および図4に示される符号の実例を説明する。 [0041] Next referring to FIG. 5, illustrating the examples of the reference symbols shown in FIGS. 図5は、本実施形態によるコマンドの動作の一例を示す図である。 Figure 5 is a diagram showing an example of a command of the operation according to this embodiment.

【0042】図5に示す「0x01、0x01、0x48、0xFF、0x [0042] shown in Figure 5, "0x01,0x01,0x48,0xFF, 0x
E1、0x81、0x55、0x00、0xC0」は符号列の一部を示し、 E1,0x81,0x55,0x00,0xC0 "refers to the part of the code string,
一つのラインを表現している。 It expresses a single line. また、ラインの長さは2 In addition, the length of the line is 2
0バイトで、直前のラインは図に示すように、「(1)、 0 bytes, immediately preceding line, as shown in FIG. "(1),
(2)、(3)、…(20)」となっている。 (2), and has a (3), ... (20) ".

【0043】ここで図示の符号が与えられると、先頭のコマンド「0x01」はビット列「00000001」であるので、 [0043] Here, when the sign of the illustration is given, since the beginning of the command "0x01" is a bit string "00000001",
Copythen Rawコマンドであり、コピー数Sは1、生データサイズ(R+1)は1である。 A Copythen Raw command, the copy number S 1, raw data size (R + 1) is 1. したがって、1バイトのデータ「(1)」が直前のラインからコピーされた後に、コマンドコードに続く1バイトのデータ「0x01」がそのままデータとなる(参照番号51を参照)。 Accordingly, (see reference 51) 1 after the bytes of data "(1)" is copied from the previous line, the 1-byte data "0x01" is as data following the command code.

【0044】次のコマンド「0x48」はビット列「010010 [0044] The following command "0x48" is the bit string "010010
00」であるので、Copy thenRepeatByteコマンドであり、コピー数Sは0、リピート数(L+2)は3である。 Because it is 00 ", is a Copy thenRepeatByte command, the copy number of S 0, the number of repeats (L + 2) is three. したがって、当該コマンドコードに続く1バイトの繰り返しデータ「0xFF」が3回繰り返されることになる(参照番号52を参照)。 Therefore, the repeated data "0xFF" in the 1 byte following the corresponding command code is repeated three times (see reference 52).

【0045】次のコマンド「0xE1」はビット列「111000 [0045] The following command "0xE1" is the bit string "111000
01」であるので、Extendコマンドであり、Eは1である。 Since the 01 ", which is the, is the Extend command, E is 1. 第2のコマンドコード「0x81」はビット列「100000 The second command code "0x81" is a bit string "100000
01」であるので、Copythen Repeat Word Longコマンドであり、コピー数Sは0、またLは0、したがってリピート数「L+8×E−2」は6である。 Since 01 "is a Copythen Repeat Word Long command, the copy number S 0, and L is 0, thus the number of repeat" L + 8 × E-2 "is 6. したがって、1 Therefore, 1
バイトのデータ「(6)」が直前のラインからコピーされた後に、第2のコマンドコードに続く2バイトの繰り返しデータ「0x55、0x00」が6回繰り返される(参照番号53を参照)。 Bytes of data (see reference numeral 53) after the "(6)" is copied from the immediately preceding line, the second command code 2 bytes of repeated data "0x55,0x00" followed is repeated 6 times.

【0046】次のコマンド「0xC0」はビット列「110000 [0046] The following command "0xC0" is the bit string "110000
00」であるので、EOLコマンドであり、行末までの2バイト「(19)、(20)」が直前のラインからコピーされる(参照番号54を参照)。 Because it is 00 ", is the EOL command, 2 bytes up to the end of the line" (19), (see reference numeral 54) (20) "is to be copied from the previous line.

【0047】次に、複数の操作を同時に符号化することによる効果について説明する。 Next, a description will be given of an effect caused by encoding multiple operations simultaneously. 複写・繰り返し・生データの操作を用いて符号化を行った場合、複数の操作を同時に符号化しなければ、複写・繰り返し・生データのそれぞれについて1バイトのコマンドにしなければならない。 If encoding is performed using a copy-repetition and raw data operations, unless simultaneously encode multiple operations, it must be 1 byte command for each copy-repetition and raw data. 複写と繰り返し、複写と生データ、または繰り返しと生データを同時に符号化すれば、2つの操作を1バイトのコマンドにすることができ、圧縮率が向上する。 Copying and repeating, if at the same time encoding replication and raw data, or repeatedly and the raw data can be two operations into one-byte command, the compression ratio is improved.

【0048】一方、複数の操作を同時に符号化することにより、1バイトのコマンドで表現することができる長さは短くなる。 Meanwhile, by encoding a plurality of operations at the same time, the shorter length that can be expressed by 1 byte command. 例えば、複写・繰り返し・生データのそれぞれについて1バイトのコマンドにした場合は、2ビットを操作の区別に使ったとして、長さを表現するのに6ビット使用することができ、63程度までの長さが表現できる。 For example, when one byte of the command for each of the copying-repetition and raw data, as with the 2-bit to distinguish the operation, can be 6 bits used to represent the length, up to about 63 It can be expressed in length. これに対して、複数の操作を同時に符号化した場合、上述の例では長さを表現するのに3ビットしか使用できず、7程度までの長さしか使用できない。 In contrast, when simultaneously encode multiple operations, it can only be used 3 bits to represent the length in the above example, can use only the length of up to about 7.

【0049】プリンタで印刷されるビットマップでは、 [0049] In the bit map to be printed by the printer,
直前のラインと類似しているが、少しずつ違うのが一般的である。 It is similar to the immediately preceding line, but little by little different from general. このため、長さの短い複写と長さの短い繰り返し、あるいは長さの短い複写と長さの短い生データの組み合わせが非常に多くなることが多い。 Therefore, it is often short repetitive short copying and length lengths or a combination of short raw data short copying and length lengths, is very large. 特にテキスト、すなわち文字フォントを印刷する場合にこの傾向が顕著である。 In particular text, namely the tendency is conspicuous when printing characters font. このため、長さを制限して複数の操作を同時に符号化したほうが圧縮率が向上することが多い。 Therefore, it is often better to simultaneously encode multiple operations to limit the length to improve the compression ratio. 従って、プリンタ用のデータに適用する場合、本実施形態のように複数の操作を同時に符号化するほうが、圧縮率が向上する。 Therefore, when applied to data for a printer, better to simultaneously encode multiple operations as in this embodiment, the compression ratio is improved.

【0050】次に、EOLコマンドの効果について説明する。 Next, a description will be given of an effect of the EOL command. EOLコマンドは行末まで複写を行うものなので、ある長さの複写コマンドに置き換え可能である。 Since EOL command such performs copying to the end of the line, it can be replaced by a copy command of a certain length. プリンタが印刷するビットマップは、右側にある程度の余白があるのが一般的である。 Bitmap printer is printing, there is some margin in the right side is common. 例えば右余白の長さが2.54センチメートルで、プリンタが600dpiのレーザービームプリンタであり、1画素が4ビットの場合、240 For example the right margin at 2.54 centimeters in length, the printer is a 600dpi laser beam printer, if one pixel is 4 bits, 240
0ビットの余白となり、300バイトに相当する。 0 become a bit of margin, equivalent to 300 bytes. 長さ300の複写を表現するためには、長さ256および4 To represent a copy of length 300, length 256 and 4
0のCopy Longコマンドと、図3では定義されていない長さ4のCopyコマンドが必要で合わせて3 And Copy Long command 0, combined require Copy command length 4 not defined in FIG 3
バイトとなる。 The bytes. EOLコマンドは長さを含まないため、作用するバイト数に関わらず1バイトで表現することが可能であり、符号の圧縮率が向上するとともに、長さ1から7までのCopyコマンドが不要になる。 Because EOL command does not include the length, it is possible to express by one byte regardless of the number of bytes to act, together with the improved code compression rate, Copy command is not required from length 1 to 7 .

【0051】つぎに、プリンタドライバ12による符号化処理について説明する。 Next, a description will be given encoding process by the printer driver 12. 図6A及び図6Bは、本実施形態によるプリンタドライバの符号化処理を説明するフローチャートである。 6A and 6B are a flowchart illustrating an encoding process of the printer driver according to this embodiment. 図6Aにおいて、まず、ステップS11において、処理対象の行と直前の行のデータとが連続して一致するバイトの数を取得し、これを変数copy In Figure 6A, first, in step S11, it obtains the number of bytes to be processed line and the previous line of data matches in succession, which variable copy
に格納する。 And stores it in. ステップS12では、直前の行と行末まで一致していたかどうかを判断する。 In step S12, it is determined whether or not match up the previous line and the end of the line. 行末まで一致していればステップS13へ進み、EOLコマンドを出力し、ステップS31へ進む。 If they match to the end of the line proceeds to step S13, and outputs the EOL command, the flow advances to step S31. 一方、行末に到達していなければ、ステップS14へ進み、変数copyの内容が8以上であるかどうかを判断する。 On the other hand, if not reached the end of the line, the process proceeds to step S14, the contents of the variable copy to determine whether 8 or more. ここで、copy≧8の場合はステップS15でCopyLongコマンドを生成視、ステップS Here, when the copy ≧ 8 generates viewing the CopyLong command in step S15, step S
16へ進む。 It advances to 16. なお、copyの大きさによっては、Copy Lon Incidentally, depending on the size of the copy is, Copy Lon
gコマンドが複数生成されることになる。 g command is to be more generated. また、ステップS14において、copy≦7の場合は、ステップS15 Further, in step S14, if the copy ≦ 7, step S15
をスキップして、ステップS16へ進む。 The skip, the process proceeds to step S16.

【0052】ステップS16では、同一バイトの繰返し数を調べ、変数lenに格納する。 In step S16, it checks the number of repeating the same byte, and stores it in the variable len. この処理は、Copythen This process, Copythen
Repeat Byte Longが最大257回の繰り返しまでしか指定できないため、lenが257以下で、かつ、処理が行末に到達するまでの間において行われることになる。 Since the Repeat Byte Long can not only specify up to repeated up to 257 times, len is at 257 or less, and the processing is to be performed during the period until it reaches the end of the line. ステップS16の処理の結果、lenに0以外の数値が入っていればステップS17からステップS18へ進み、co A result of the process in the step S16, if it contains a value other than 0 to len proceeds from step S17 to step S18, co
py内の数値とlen内の数値に従って(copyの値でS0〜S3 In accordance with the numerical value of the numerical value and the len in py with the value of the (copy S0~S3
を生成し、lenの値に基づいてL0〜L2或いはE0〜E4を生成する)Copythen Repeat Byte或いはCopy then Repeat Generates, it generates a L0~L2 or E0~E4 based on the value of len) Copythen Repeat Byte or Copy then the Repeat
Byte Longを生成する。 To generate a Byte Long.

【0053】ステップS17においてlenが0であった場合は、ステップS20において、同一ワードの繰返し数(同一の、連続する2バイトが繰り返される数)を調べ、変数lenに格納する。 [0053] If len is 0 in step S17, in step S20, the repetition number of the same word examined (the same number of consecutive 2-byte is repeated), and stored in the variable len. この処理は、Copythen Repeat This process, Copythen Repeat
Word Longが最大253回の繰り返しまでしか指定できないため、lenが253以下で、かつ、処理が行末に到達するまでの間において行われることになる。 Because Word Long can not only specify up to repeated up to 253 times, len is 253 or less, and the processing is to be performed during the period until it reaches the end of the line. ステップS20の処理の結果、lenに0以外の数値が入っていればステップS21からステップS22へ進み、copy内の数値とlen内の数値に従って(copyの値でS0〜S3を生成し、lenの値に基づいてL0〜L2或いはE0〜E4を生成する)、Copythen Repeat Word或いはCopy then Repeat W A result of the process in the step S20, if contains a numerical value other than 0 for len proceeds from step S21 to step S22, generates a S0~S3 in (the value of the copy number and in accordance with numbers in len in copy, of len generating a L0~L2 or E0~E4 based on the value), Copythen Repeat Word or Copy then the Repeat W
ord Longを生成する。 To generate a ord Long.

【0054】ステップS21においてlenが0であった場合は、ステップS24において、同一ダブルワードの繰返し数(同一の、連続する4バイトが繰り返される数)を調べ、変数lenに格納する。 [0054] If len is 0 in step S21, in step S24, the repetition number of the same double word examined (the same number of 4 consecutive bytes is repeated), and stored in the variable len. この処理は、Copythe This process, Copythe
n Repeat Double Word Longが最大253回の繰り返しまでしか指定できないため、lenが253以下で、かつ、処理が行末に到達するまでの間において行われることになる。 Since n Repeat Double Word Long can not only specify up to repeated up to 253 times, len is 253 or less, and the processing is to be performed during the period until it reaches the end of the line. ステップS24の処理の結果、lenに0以外の数値が入っていればステップS25からステップS2 Results of the processing of step S24, step from step S25 if contains a numerical value other than 0 to len S2
6へ進み、copy内の数値とlen内の数値に従って(copy Proceed to 6, according to the numerical value of the numerical value and len in the copy (copy
の値でS0〜S3を生成し、lenの値に基づいてL0〜L2或いはE0〜E4を生成する)、Copythen Repeat Double Word Of generating an S0~S3 in value, to produce a L0~L2 or E0~E4 based on the value of len), Copythen Repeat Double Word
或いはCopy then Repeat Double Word Longを生成する。 Or to generate a Copy then Repeat Double Word Long.

【0055】更に、ステップ25においてlenが0であった場合は、前の行とのバイトの一致、バイト単位の繰り返し、ワード単位の繰り返し、ダブルワード単位の繰り返しが見出せない場合である。 [0055] Further, if len is 0 in step 25, match the bytes of the previous line, repeating bytes, repeating units of words, a case can not find the repetition of double words. この場合、ステップS In this case, step S
28において、前の行とのバイトの一致、バイト単位の繰り返し、ワード単位の繰り返し、ダブルワード単位の繰り返しが見出せない間のバイト数をカウントし、これをlenに格納する(この処理においてlenは必ず1以上となる)。 In 28, byte match of the previous line, repeating bytes, repeating the word unit, counts the number of bytes between the not found repeatedly doubleword units, which is stored in len (len in this process always be 1 or more). そして、ステップS29において、copy内の数値とlen内の数値に従って(copyの値でS0〜S3を生成し、lenの値に基づいてR0〜R2或いはE0〜E4を生成する)、Copythen Rawを生成する。 Then, in step S29, numbers and according to numbers in len in copy (generates S0~S3 the value of copy, generates a R0~R2 or E0~E4 based on the value of len), generates a Copythen Raw to.

【0056】以上のようにして、ステップS18、S2 [0056] As described above, step S18, S2
2、S26、S29のいずれかでコマンドが生成されると、処理はステップS30へ進み、処理が当該行の行末に到達したかどうかを判断し、まだ到達していなければ処理をステップS11へ戻し、当該行について上述の処理を繰り返す。 When 2, S26, S29 command either is generated, the process proceeds to step S30, the process determines whether the reached to the end of the row, yet returns the processing if not reaching the step S11 to repeat the above process for the row. 一方、ステップS30において行末に到達したと判断された場合は、ステップS31へ進み、次に処理するべき行が存在するかどうか、すなわち、ページの終了を判断する。 On the other hand, when it is determined to have reached the end of line in step S30, the process proceeds to step S31, then the line should be processed or not present, i.e., to determine the end of the page. ページの終了である(当該印刷ページにおいて次に処理すべき行が無いと判断された場合は、ステップS32へ進みEOPコマンドを生成して本処理を終了する。一方、まだ処理すべき行があると判断された場合は、ステップS33へ進み、次の行を処理対象としてステップS11へ処理を戻す。次に、図7および図8に示すプログラムリストを参照し、プリンタドライバ12の符号化手順の詳細を説明する。 If the page is the end (next row to be processed in the print page is determined that there is no, and generates an EOP command proceeds to step S32 and the process ends. On the other hand, there is a row to be processed still If it is determined that, the process proceeds to step S33, the process returns to step S11 for the next line for processing. next, with reference to the program list shown in FIGS. 7 and 8, the printer driver 12 of the encoding procedure the details will be explained.

【0057】図7は、図6A及び図6Bで説明したプリンタドライバ12の符号化手順を実現するためのプログラムリスト例を示す図である。 [0057] Figure 7 is a diagram showing a program list example for implementing the encoding procedure of the printer driver 12 described in FIGS. 6A and 6B. 図7のプログラムは、C Figure 7 of the program, C
言語で記述された関数で構成される。 It consists of functions that are written in a language.

【0058】図7において、行1は関数名、引数、および戻り値の型を定義する。 [0058] In FIG. 7, line 1 defines the type of a function name, arguments, and return values. この関数の関数名はencodeであり、呼び元からビットマップデータの先頭アドレスsr Function name of this function is encode, the start address of the bit map data from the calling source sr
c、符号化データを格納するバッファの先頭アドレスds c, the start address of the buffer for storing coded data ds
t、1ラインのバイト数widthおよびライン数heightを受け取り、ビットマップデータを符号化して符号化データをバッファに格納し、戻り値としてバッファに格納したバイト数を返す。 t, 1 receives a number of bytes width and number of lines height of the line, encodes the bit map data stored in the encoded data in the buffer, and returns the number of bytes stored in the buffer as the return value.

【0059】符号化処理の過程で先頭アドレスsrc、先頭アドレスdstは各々ビットマップデータの未処理のラインの先頭アドレス、未処理のバッファの先頭アドレスを示すように更新される。 [0059] start address in the course of the coding process src, the start address dst each unprocessed start address of the line of the bit map data is updated to indicate the head address of the buffer untreated.

【0060】行3、行4、行5および行6は一時変数x、y、len、copy、copy2、data、dsttop、dataw、p [0060] Row 3, Row 4, Row 5 and row 6 temporary variable x, y, len, copy, copy2, data, dsttop, dataw, p
w、datad、pdwを定義する。 w, datad, to define the pdw. xはビットマップデータの、処理中のラインの先頭からのオフセットを格納する。 x stores the offset from the beginning of the bit map data, in the processing line. yは処理中のライン番号を格納する。 y stores the line number being processed. lenは処理中の生データの長さ、または繰り返しの長さを格納する。 len stores the length of the raw data being processed, or repeated length.
copyおよびcopy2は処理中の繰り返し数を格納する。 copy and copy2 stores the number of repetitions of processing. dat dat
aは繰り返しデータを格納する。 a stores the repeated data. また、dsttopは関数enc In addition, dsttop function enc
odeが呼び出されたときの符号化データを格納するバッファの先頭アドレスdstを記憶する。 ode stores the head address dst of buffers to store encoded data when called. datawはワードデータを一時的に格納する領域であり、pwはワードデータを指すポインタを一時的に格納する領域である。 dataw is a region for storing word data temporarily, pw is an area for storing a pointer to the word data temporarily. また、da In addition, da
tadはダブルワードデータを一時的に格納する領域であり、pdはダブルワードデータを指すポインタを一時的に格納する領域である。 tad is an area for temporarily storing the double word data, pd is an area for temporarily storing a pointer to a double word data.

【0061】関数encodeが呼び出されると、行4でバッファの先頭アドレスdstの値をdsttopに格納する。 [0061] If the function encode is called, it stores the value of the start address dst buffer in dsttop in line 4.

【0062】次に行7から行74までの第1のforループで、yを0に初期化し、yがheightに等しくなるまでループを繰り返す。 [0062] Next, in the first for loop from line 7 to line 74, and initializes y to 0, y is the loop repeats until it equals the height. 各ループの最後では、yに1が加算され、srcにwidthすなわち1ラインの長さが加算される(S31、S33)。 At the end of each loop, 1 is added to y, length width namely one line is added to the src (S31, S33).

【0063】第1のforループの中では行8から行73 [0063] lines from the Line 8 in the first for loop 73
までの第2のforループが実行される。 The second for loop up is executed. 第2のforループでは、xを0に初期化し、xがwidthに等しくなるまでループを繰り返す(S30)。 In the second for loop initializes x to 0, x is the loop repeats until it equals the width (S30).

【0064】[ステップS11〜S15に相当する処理]第2のforループの中では、まず行9にてcopyに0 [0064] [process corresponding to Step S11 to S15] In the second for loop, first zero copy at line 9
を設定する。 To set. 次に行10にてyが0であるか判定し、y Next, it is determined whether y is 0 at line 10, y
が0であれば先頭ラインなので行24に進む。 But proceed to the line 24 because the top line if it is 0. yが0でない場合は、直前のラインのデータと比較するため、まず行11から行13までのwhileループを実行する。 If y is not 0, for comparison with the data of the immediately preceding line, first executes a while loop from line 11 to line 13. whi whi
leループでは、xがwidthより小さく、かつsrc[x]すなわち現在のラインのx番目のバイト(現在のバイト) In le loop, x is from less than width, and src [x] or x-th byte of the current line (current byte)
と、src[x−width]すなわち直前のラインのx番目のバイト(現在のバイトの直上のバイト)が等しい間、行12にてxとcopyに1を加算する。 If, src [x-width] ie, between the x-th byte of the immediately preceding line (byte immediately above the current byte) are equal, 1 is added to x and copy at line 12. whileループを抜けた時点で、copyには直前のラインとデータが連続して一致する長さ、すなわちコピーカウントが格納され、xはその長さに応じて更新される。 When it exits the while loop, the length of the immediately preceding line and data matches in succession to copy, ie copy count is stored, x is updated according to its length. 次に行14にてxとwidt x and widt Next, in line 14
hが等しいか判定する。 h determines whether equal. xとwidthが等しい場合は、行末まで連続して直前のラインとデータが一致しており、EO If x and width are equal it is immediately preceding line and the data match continuously until the end of the line, EO
Lコマンドに符号化することができるので、行15にて出力バッファに0xC0すなわちEOLコマンドを格納し、dst It is possible to encode the L command, stores 0xC0 That EOL command into the output buffer at row 15, dst
を更新し、行16のbreakにより第2のforループを終了する。 Update the ends the second for loop by break lines 16.

【0065】xとwidthが等しくない場合は、行18から行22までのwhileループを実行する。 [0065] If x and width are not equal, executes a while loop from line 18 to line 22. whileループでは、copyが7より大である間、行19から行21までの処理を繰り返す。 The while loop, while copy is greater than 7, and repeats the processing from the line 19 to the line 21. まず、行19にてcopy2にcopy/8と31の大きくないほうを格納する。 First of all, to store better not greater of copy / 8 and 31 at line 19 to copy2. ここでminは2つの引数のうち大きくない引数を返すマクロである。 Where min is the macro returns the argument not greater of the two arguments. 次に、 next,
行20にてCopyLongコマンドを出力バッファに格納し、 Stores CopyLong command to the output buffer at row 20,
dstを更新する。 To update the dst. 次に行21にてcopyから、行20で出力したCopy Longコマンドに応じたコピーカウントを減算する。 Then the copy at line 21, subtracts the copy count corresponding to Copy Long command outputted on line 20. このようにしてCopyLongコマンドが出力され、 Thus CopyLong command is output,
whileループを抜けた時点では、copyは7以下になっている。 At the time of out of the while loop, copy is made to 7 or less.

【0066】[ステップS16〜S18に相当する処理]次に行24にて、現在のバイトの次のバイトが現在のラインに残されており、かつsrc[x]すなわち現在のバイトとsrc[x+1]すなわちその次のバイトが一致するか判定する。 [0066] At next row 24 Processing equivalent to step S16 to S18], the next byte of the current byte has been left in the current line, and src [x] That current byte and src [x + 1 that determines whether the next bytes match. 現在のバイトの次のバイトが現在のラインに残されていない場合、あるいは現在のバイトとその次のバイトが一致しない場合はバイトの繰り返しがない場合なので行34に進む。 If the byte following the current byte is not left in the current line, or if the current byte and the next byte does not match because if there is no repetition of the byte proceeds to the line 34. 現在のバイトの次のバイトが現在のラインに残されており、かつsrc[x]すなわち現在のバイトとsrc[x+1]すなわちその次のバイトが一致する場合は繰り返し数を求めるため、まず行25にてdataにsrc[x]すなわち繰り返しデータを格納する。 The next byte of the current byte has been left in the current line, and src [x] That for determining the number of repetitions if the current byte and src [x + 1] That which the next bytes match, first row 25 storing src [x] that repetitive data in data at. 次に行26から行28までのforループを実行する。 Next, run the for loop from line 26 to line 28. forループでは、初期化処理として一致した2つのデータを飛ばすためにxに2を加算するとともに、le In the for-loop, while adding 2 x to skip two data match as the initialization process, le
nに2を格納し、xがwidthより小さくかつlenが257 n 2 stores in, x is from small and len than width 257
より小さい間ループを実行する。 To run a smaller inter-loop. 各ループの最後では、 At the end of each loop,
xとlenに1を加算する。 1 is added to the x and len. ループ中、行27にて、src In the loop, in row 27, src
[x]すなわち現在のデータがdataすなわち繰り返しデータと等しくない場合には、breakによりこのforループを終了する。 [X] that is the current data if not equal to the data i.e. repetition data, break the ends the for loop. このようにして、ループを抜けた時点では、lenに連続する繰り返しデータの数が格納され、x In this way, at the time when passed through the loop, the number of repeating data continuous to len is stored, x
はlenの値に応じて更新されている。 It has been updated in accordance with the value of len.

【0067】行29にてlenが7より大である場合にはE [0067] In the case len in line 29 is greater than 7 E
xtendコマンドを出力バッファに格納してdstを更新し、 To update the dst stores xtend command to the output buffer,
行30にてCopythen Repeatコマンドを出力バッファに格納してdstを更新し、行31にてdataすなわち繰り返しデータを出力バッファに格納してdstを更新し、行3 Update the dst store Copythen the Repeat command to the output buffer at line 30, and stores the data i.e. repeating data in the output buffer and updates the dst at row 31, row 3
2のcontinueで第2のforループに戻る。 In 2 of continue back to the second of the for loop.

【0068】[ステップS20〜S22に相当する処理] [0068] [process corresponding to step S20~S22]
行24にて、現在のバイトの次のバイトが現在のラインに残されていない場合、あるいは現在のバイトとその次のバイトが一致しない場合は行34にてワードデータへのポインタpwに&src[x]、すなわち現在のバイトのアドレスを格納する。 At line 24, when the next byte of the current byte is not left in the current line, or pointer pw to & src of if the current byte and the next byte does not match at line 34 to the word data [ x], that is, it stores the address of the current byte.

【0069】次に行35にて、現在のバイトの次の3バイトが現在のラインに残されており、かつpw[0]すなわち現在のワードとpw[1]すなわちその次のワードが一致するか判定する。 [0069] Next at line 35, the next 3 bytes of the current byte has been left in the current line, and pw [0] That current word and pw [1] That is the next word match determines whether or not the. 現在のバイトの次の3バイトが現在のラインに残されていない場合、あるいは現在のワードとその次のワードが一致しない場合はワードの繰り返しがない場合なので行51に進む。 If the next three bytes of the current byte is not left in the current line, or if the current word and the next word does not match because the absence repetition of the word goes to line 51. 現在のバイトの次の3バイトが現在のラインに残されており、かつpw[0] The next three bytes of the current byte has been left on the current line, and pw [0]
すなわち現在のワードとpw[1]すなわちその次のワードが一致する場合は繰り返し数を求めるため、まず行3 That for determining the number of repetitions if the current word and pw [1] That is where the next word match, first row 3
6にてdatawにpw[0]すなわち繰り返しデータを格納する。 Storing pw [0] That repeated data dataw at 6. 次に行37から行39までのforループを実行する。 Next, run the for loop from line 37 to line 39. forループでは、初期化処理として一致した2つのデータを飛ばすためにxに4を加算するとともに、len In the for-loop, as well as adds 4 to x in order to skip two data match as the initialization process, len
に2を格納し、x+1がwidthより小さくかつlenが25 To store 2, x + 1 is smaller than the width and len is 25
3より小さい間ループを実行する。 3 executes the smaller between the loops. 各ループの最後では、xに2を、lenに1をそれぞれ加算する。 At the end of each loop, a 2 x, 1 to be respectively added to len. ループ中、行38にて、pw[len]すなわち現在のデータがdat In the loop at line 38, pw [len] That current data dat
awすなわち繰り返しデータと等しくない場合には、brea When aw i.e. not equal to the repetition data, brea
kによりこのforループを終了する。 k by the end of this for loop. このようにして、ループを抜けた時点では、lenに連続する繰り返しデータの数が格納され、xはlenの値に応じて更新されている。 In this way, at the time when passed through the loop, stores the number of repeating data continuous to len, x is updated according to the value of len.

【0070】行40にてlenが5より大でない場合には行41にてCopy then RepeatWordコマンドを出力バッファに格納してdstを更新する。 [0070] If len at line 40 is no more than 5 updates the dst store Copy then RepeatWord command at line 41 to the output buffer. 行40にてlenが5より大である場合には、行43にてExtendコマンドを出力バッファに格納してdstを更新し、行44にてCopythen Repe If len at line 40 is greater than 5 updates the dst store Extend command to the output buffer at row 43, Copythen Repe at line 44
at Word Longコマンドを出力バッファに格納してdstを更新する。 To update the dst stores at Word Long command to the output buffer.

【0071】[ステップS24〜S26に相当する処理]次に行46にてワードデータへのポインタpwにds [0071] ds then at line 46 Processing equivalent to step S24 to S26] the pointer pw to word data
t、すなわち現在の出力アドレスを格納する。 t, that is, it stores the current output address. 次に行4 Next, line 4
7にて、*pw、すなわち現在の出力アドレスが指すワード領域にdatawすなわち繰り返しデータを格納する。 At 7, * pw, i.e. stores dataw i.e. repeated data word area pointed to current output address. 次に行48にてdstを更新し、行49のcontinueで第2のf Then update the dst at line 48, the second f at continue the line 49
orループに戻る。 Back to or loop.

【0072】行35にて、現在のバイトの次の3バイトが現在のラインに残されていない場合、あるいは現在のワードとその次のワードが一致しない場合は行51にてダブルワードデータへのポインタpdに&src[x]、すなわち現在のバイトのアドレスを格納する。 [0072] In line 35, in the case if the next 3 bytes of the current byte is not left in the current line, or the current word and the next word does not match to the double-word data at line 51 the pointer pd & src [x], that is, stores the address of the current byte.

【0073】次に行52にて、現在のバイトの次の7バイトが現在のラインに残されており、かつpd[0]すなわち現在のダブルワードとpd[1]すなわちその次のダブルワードが一致するか判定する。 [0073] Next at line 52, the next seven bytes of the current byte has been left in the current line, and pd [0] that is the current double word and pd [1] That is the next double word It determines whether or not the match. 現在のバイトの次の7バイトが現在のラインに残されていない場合、あるいは現在のダブルワードとその次のダブルワードが一致しない場合はダブルワードの繰り返しがない場合なので行68に進む。 If the next 7 byte of the current byte is not left in the current line, or because if there is no repeat of the double word if the current double word and its next double word does not match proceed to the line 68. 現在のバイトの次の7バイトが現在のラインに残されており、かつpd[0]すなわち現在のダブルワードとpd[1]すなわちその次のダブルワードが一致する場合は繰り返し数を求めるため、まず行53にてda And the next seven bytes of the current byte is left in the current line, and pd [0] That for determining the number of repetitions if the current double word and pd [1] That is where the next double word is matched, first da at line 53
tadにpd[0]すなわち繰り返しデータを格納する。 pd [0] that is stored in the repetitive data tad. 次に行54から行56までのforループを実行する。 Then run the for loop from line 54 to line 56. forループでは、初期化処理として一致した2つのデータを飛ばすためにxに8を加算するとともに、lenに2を格納し、x+3がwidthより小さくかつlenが253より小さい間ループを実行する。 In the for-loop, while adding 8 to x in order to skip two data match as the initialization process, and stores the 2 len, x + 3 is smaller and len than width executes 253 smaller between the loops. 各ループの最後では、xに4 At the end of each loop, 4 x
を、lenに1をそれぞれ加算する。 And 1 is added respectively to len. ループ中、行55にて、pd[len]すなわち現在のデータがdatadすなわち繰り返しデータと等しくない場合には、breakによりこのf In the loop at line 55, pd [len] that is, when the current data is not equal to datad i.e. repeating data, the f the break
orループを終了する。 To end the or loop. このようにして、ループを抜けた時点では、lenに連続する繰り返しデータの数が格納され、xはlenの値に応じて更新されている。 In this way, at the time when passed through the loop, stores the number of repeating data continuous to len, x is updated according to the value of len.

【0074】行57にてlenが5より大でない場合には行58にてCopy then RepeatDoubleWordコマンドを出力バッファに格納してdstを更新する。 [0074] len in line 57 if it is not greater than 5 to update the dst contains the Copy then RepeatDoubleWord command at line 58 to the output buffer. 行57にてlenが5 len is 5 at line 57
より大である場合には、行60にてExtendコマンドを出力バッファに格納してdstを更新し、行61にてCopythe If it is larger updates the dst store Extend command to the output buffer at row 60, Copythe at line 61
n Repeat Double Word Longコマンドを出力バッファに格納してdstを更新する。 Stores n Repeat Double Word Long command into the output buffer to update the dst.

【0075】次に行63にてダブルワードデータへのポインタpdにdst、すなわち現在の出力アドレスを格納する。 [0075] Next dst pointer pd to doubleword data at line 63, i.e. to store the current output address. 次に行64にて、*pd、すなわち現在の出力アドレスが指すダブルワード領域にdatadすなわち繰り返しデータを格納する。 Next, in line 64, * pd, i.e. stores datad i.e. repeating data doubleword area indicated by the current output address. 次に行65にてdstを更新し、行66 Then update the dst at line 65, line 66
のcontinueで第2のforループに戻る。 Back in the continue in the second for loop.

【0076】[ステップS28〜S29に相当する処理]行52にて、現在のバイトの次の7バイトが現在のラインに残されていない場合、あるいは現在のダブルワードとその次のダブルワードが一致しない場合は行68 [0076] At line 52 Processing equivalent to step S28~S29], if the next seven bytes of the current byte is not left in the current line, or the current double word and its next double word match If you do not want to line 68
にて、後述する関数count_rawを呼び出すことにより、 At, by calling the later-described function count_raw,
生データとして格納すべき長さをlenに格納する。 Storing a length to be stored as raw data len. 次に行69にてlenが7より大である場合にはExtendコマンドを出力バッファに格納してdstを更新し、行70にてC Then if it is greater than len 7 at rows 69 is stored in the output buffer Extend command to update the dst, C at the line 70
opythen Rawコマンドを出力バッファに格納してdstを更新し、行71にてライブラリ関数memcpyにより出力バッファに生データをコピーし、行72にて行71でコピーした生データの長さに応じてxとdstを更新し、第2のf Update the dst and stored in the output buffer Opythen Raw command copies the raw data to the output buffer by the library function memcpy at line 71, in accordance with the length of the raw data copied on line 71 at line 72 x to update the dst and, second f
orループに戻る。 Back to or loop.

【0077】このようにして現在のラインが全て処理されてxがwidthと等しくなると、第2のforループを終了し、第1のforループに戻る。 [0077] In this manner is processed current line all x equals the width, ends the second for loop, back to the first for-loop. 各ループの最後では、y At the end of each loop, y
に1が加算され、srcにwidthすなわち1ラインの長さが加算されるので、次のラインの処理が開始される。 1 is added to, the length of the width or one line is added to the src, processing of the next line is started. このようにして全てのラインの処理が終了してyがheightと等しくなると、第1のforループを終了し、行75にて0 When y In this way ends the processing of all lines is equal to height, and ends the first for loop, at line 75 0
xE0、すなわちEOPコマンドを出力バッファに格納し、dstを更新する。 xe0, i.e. stored in the output buffer EOP command to update the dst. 次に行76にてdst即ちバッファの終了アドレスからdsttop即ちバッファの先頭アドレスを引くことによりバッファに格納したバイト数を求め、それを戻り値として関数を終了する。 Then determine the number of bytes stored in the buffer by subtracting the head address of dsttop i.e. buffers from the end address of dst That buffer in row 76, and terminates the function it as a return value.

【0078】次に、図7に示すプログラムリストを参照し、関数count_rawの処理手順の詳細を説明する。 Next, with reference to the program list shown in FIG. 7, the detailed description of the processing procedure of the function Count_raw.

【0079】図8は、図7に示した関数count_rawを実現するためのプログラムリスト例を示す図である。 [0079] Figure 8 is a diagram showing a program list example for realizing the functions count_raw shown in FIG. 図8 Figure 8
は、プログラム言語としてC言語を用いて記述された例を示している。 Shows an example which is described using the C language as a programming language.

【0080】図8において、行1は関数名、引数、および戻り値の型を定義する。 [0080] In FIG. 8, line 1 defines the type of a function name, arguments, and return values. この関数の関数名はcount_ra Function name of this function is count_ra
wであり、呼び元からビットマップデータの現在のラインの先頭アドレスsrc、現在位置のラインの先頭からのオフセットx、ライン番号y、1ラインのバイト数widt A w, the start address of the current line of the bit map data from the calling source src, offset x from the beginning of the current position line, line number y, 1 line the number of bytes of widt
h、生データの長さの上限limitを受け取り、戻り値として生データとして格納すべき長さを返す。 h, receives the upper limit of the length of the raw data, returns the length to be stored as the return value as raw data.

【0081】処理の過程で現在位置のラインの先頭からのオフセットxは現在位置を示すように更新されるが、 [0081] offset x from the beginning of the process at the current position of the processing line is being updated to reflect the current position,
C言語の規約により引数は値で渡されるため、更新された値は呼びもとの引数には反映されない。 For by the conventions of the C language argument is passed by value, the updated value is not reflected in the call original argument.

【0082】行3、行4および行5は一時変数len、p [0082] line 3, line 4 and line 5 is a temporary variable len, p
w、pdを定義する。 w, to define the pd. lenは生データとして格納すべき長さを格納する。 len stores the length to be stored as raw data. pwはワードデータを指すポインタを一時的に格納する領域である。 pw is an area for storing a pointer to the word data temporarily. また、pdはダブルワードデータを指すポインタを一時的に格納する領域である。 Further, pd is an area for temporarily storing a pointer to a double word data.

【0083】関数count_rawが呼び出されると、行7から行22までのforループで、lenを0に初期化し、xが [0083] If the function count_raw is called, in the for loop from line 7 to line 22, to initialize the len to 0, x is
widthより小でありかつlenがlimitより小である間ループを繰り返す。 Small a and and len than width is repeated while loop is smaller than limit. 各ループの最後では、xとlenに1が加算される。 At the end of each loop, 1 is added to x and len.

【0084】ループ中、まず行8にて、lenが0、すなわち生データの先頭で、かつ現在のデータの次のデータが現在のラインに残されており、かつ現在のデータとその次のデータが等しい場合は、データの先頭でバイトの繰り返し数が2以上であり、バイトの繰り返しとして符号化するべきなので、breakによりforループを終了する。 [0084] in the loop, first in line 8, len is 0, that at the beginning of the raw data, and the next data of the current data have been left in the current line, and the next data with the current data are equal is the number of repetitions the top byte of data is 2 or more, so should be encoded as a repeating byte, and terminates the for loop by break.

【0085】次に行9にて、現在のデータの次の次のデータが現在のラインに残されており、かつ現在のデータ、その次のデータおよびさらにその次のデータがみな等しい場合は、バイトの繰り返し数が3以上であり、バイトの繰り返しデータとして符号化するべきなので、br [0085] Next at line 9, the next following data in the current data are left in the current line, and the current data, when the next data and further the subsequent data is equal to everyone, and a repetition number of bytes is three or more, so should be encoded as repeated data bytes, br
eakによりforループを終了する。 To end the for loop by eak.

【0086】次に行10にて、ワードデータへのポインタpw、およびダブルワードデータへのポインタpdに&sr [0086] then at line 10, pointer pw to the word data, and a pointer pd to the double-word data & sr
c[x]、すなわち現在のバイトのアドレスを格納する。 c [x], i.e., it stores the address of the current byte.

【0087】次に行11にて、現在のバイトの次に3バイトのデータが現在のラインに残されており、かつpw [0087] then at line 11, next to the 3 bytes of data in the current byte has been left on the current line, and pw
[0]すなわち現在のワードがpw[1]すなわち現在のワードの次のワードと等しい場合は、ワードの繰り返し数が2以上であり、ワードの繰り返しデータとして符号化するべきなので、breakによりforループを終了する。 [0] that is, if the current word is equal to pw [1] That is the next word of the current word is a number of repetitions of the word is 2 or more, so should be coded as a repeat data word, for a loop by break to end the.
次に行12にて、現在のバイトの次に7バイトのデータが現在のラインに残されており、かつpd[0]すなわち現在のダブルワードがpd[1]すなわち現在のダブルワードの次のダブルワードと等しい場合は、ダブルワードの繰り返し数が2以上であり、ダブルワードの繰り返しデータとして符号化するべきなので、breakによりforループを終了する。 Next, in line 12, the next seven bytes of data in the current byte has been left in the current line, and pd [0] That current doubleword pd [1] That is the next current doubleword equal to the double word is the number of repetitions of the double word is 2 or more, so should be encoded as repetitive data double word, and ends the for loop by break.

【0088】次に行13にて、yが0でない、すなわち先頭のラインでなく、かつ現在のデータと直上のデータが等しい場合は、行14から行19までを実行する。 [0088] Next at line 13, y is not 0, i.e. not at the head of the line, and if the data immediately above the current data are equal, executes the line 14 to the line 19. まず、行14にて、lenが7以下である場合には、コピーとして符号化することにより、生データの長さが7を超えてExtendコマンドが必要になるために符号が1バイト余計に長くなることを避けることができるため、break First, at line 14, if len is 7 or less, by encoding as a copy, the code for the length of the raw data is required Extend command exceed 7 1 byte extra long since it is possible to avoid becoming, break
によりforループを終了する。 To end the for loop by.

【0089】次に行15にて、次のデータが現在のラインに残されていて、かつ次のデータとその直上のデータが等しい場合は、コピー数が2以上なので、コピーとして符号化するべきなので、breakによりforループを終了する。 [0089] Next at line 15, and the next data is not left in the current line, and if the data immediately thereabove and the next data are equal, the number of copies, such 2 or more, should be coded as a copy so, to end the for loop by the break. 次に行16にて、次の次のデータが現在のラインに残されていて、かつ次のデータとその次のデータが等しい場合は、コピー数が1でバイトの繰り返し数が2以上なので、コピー+バイトの繰り返しとして符号化するべきなので、breakによりforループを終了する。 Next, in line 16, have been left next following data in the current line, and if the next data and the next data are equal, the number of repetitions of bytes copy 1 is a 2 or more, since should be coded as a repeat of the copy + byte, to end the for loop by the break.

【0090】次に行17にて、ワードデータへのポインタpw、およびダブルワードデータへのポインタpdに&sr [0090] Next, at line 17, pointer pw to the word data, and a pointer pd to the double-word data & sr
c[x+1]、すなわち現在のバイトの次のアドレスを格納する。 c [x + 1], that is, it stores the address of the next current byte.

【0091】次に行18にて、現在のバイトの次に4バイトのデータが現在のラインに残されており、かつpw [0091] then at line 18, next to the 4 bytes of data in the current byte has been left on the current line, and pw
[0]すなわち現在のバイトの次のワードがpw[1]すなわちその次のワードと等しい場合は、コピー数が1でワードの繰り返し数が2以上なので、コピー+ワードの繰り返しとして符号化するべきなので、breakによりfor [0] that is, when the next word of the current byte is equal to pw [1] That is the next word, since the number of repetitions of the word copy number in 1 a 2 or more, should be coded as a repeat copy + word so, for the break
ループを終了する。 To exit the loop.

【0092】次に行19にて、現在のバイトの次に8バイトのデータが現在のラインに残されており、かつpd [0092] then at line 19, next to the 8 bytes of data in the current byte has been left on the current line, and pd
[0]すなわち現在のバイトの次のダブルワードがpd [0] ie, the next double word of the current byte is pd
[1]すなわちその次のダブルワードと等しい場合は、 [1] That is equal to the next doubleword,
コピー数が1でダブルワードの繰り返し数が2以上なので、コピー+ダブルワードの繰り返しとして符号化するべきなので、breakによりforループを終了する。 Since the number of repetitions of doubleword copy number in 1 a 2 or more, since to be encoded as repeated copies + double word, and ends the for loop by break.

【0093】forループを終了する条件が成立しなかった場合は、forループに戻り、xとlenに1が加算され、 [0093] If the condition to end the for loop is not satisfied, return to the for loop, 1 is added to the x and len,
ループを続ける。 Continue the loop. このようにして、生データに符号化するべきでないデータに遭遇するか、1ラインのデータを全て処理するか、生データの長さの上限limitに達するまでループが続けられる。 In this manner, either encounter data that should not be coded raw data, or to process all the data of one line, the loop is continued until the upper limit of the length of the raw data. ループが終了した時点では、lenに生データとして符号化されるべき長さが格納されているので、行22にてlenの値を戻り値として関数を終了する。 At the time the loop is finished, the length to be encoded is stored as raw data in len, terminates the function as a return value the value of len in line 22.

【0094】以上のようにして、本実施形態のプリンタドライバプログラム12による符号化が実現される。 [0094] As described above, encoding is realized by the printer driver program 12 of the present embodiment.

【0095】次に、図9を参照し、図2に示した復号回路20の詳細について説明する。 Next, with reference to FIG. 9, details of the decoding circuit 20 will be described as shown in FIG.

【0096】図9は、図2に示した復号回路20の詳細を示すブロック図である。 [0096] Figure 9 is a block diagram showing details of the decoding circuit 20 shown in FIG. 図9において、コマンドデコード回路31は、コピーカウンタ32、リピートカウンタ33、生データカウンタ35の全てが0である場合に、FIFO19から図3および図4に示した符号によって構成された符号化データを受け取り、符号化データをデコードしてコピーカウンタ32、リピートカウンタ33、生データカウンタ35にそれぞれ複写数、繰り返し数および生データ数を出力し、セットする。 9, the command decode circuit 31, a copy counter 32, the repeat counter 33, when all the raw data counter 35 is 0, the encoded data formed by the code shown in FIGS. 3 and 4 from FIFO19 receiving encoded data copy counter 32 decodes a repeat counter 33, the raw data counter 35 respectively count copying, and outputs the number of iterations and the raw data number is set. コマンドデコード回路31は、デコードしたコマンドがバイト、 Command decoding circuit 31, the command bytes decoded,
ワード或いはダブルワードの繰り返し操作を含むものであれば、繰り返しデータをFIFO19から受け取り、 As long as it comprises a repeating operation of the word or double word, receives repeated data from the FIFO 19,
リピートデータレジスタ34に設定するとともに、データサイズレジスタ43に繰り返すべきデータのサイズ(バイト数(例えば、コマンドがCopythen Word Repeat And sets the repeat data register 34, the size of the data to repeat the data size register 43 (the number of bytes (e.g., command Copythen Word Repeat
なら2バイトとなる))を格納する。 Nara is 2 bytes)) is stored.

【0097】コマンドデコード回路31はまた、EOLコマンドをデコードした場合には、コピーカウンタ32に複写数を出力するかわりに、減算回路36にEOL信号を出力する。 [0097] command decoding circuit 31 also when decoding the EOL command, instead of outputting the number of copying to the copy counter 32, and outputs a EOL signal to the subtraction circuit 36. また、コマンドデコード回路31がExtendコマンドをデコードした場合は、Extendコマンドに含まれるカウント値を内部的に保持した後に、次のコマンドをFIFO19から受け取り、デコードを行い、内部的に保持したカウント値、および第2のコマンドコードに応じたカウント値を計算し、複写数、繰り返し数または生データ数として出力する。 Further, if the command decode circuit 31 decodes the Extend command, after internally holds a count value contained in the Extend command, it receives the next command from the FIFO 19, performs decoding, internally held count value, and the second count value is calculated according to the command code, number of copies, and outputs as the number of repetitions or raw data rate.

【0098】コピーカウンタ32は、コマンドデコード回路31または減算回路36が出力した複写数を保持する。 [0098] Copy counter 32 holds the number of copying the command decode circuit 31 or the subtracting circuit 36 ​​is output. リピートカウンタ33は、コマンドデコード回路3 Repeat counter 33, command decode circuit 3
1が出力した繰り返し数を保持する。 Holding the repetition number of 1 is output. リピートデータレジスタ34は、コマンドデコード回路31が出力した、 Repeat data register 34, the command decode circuit 31 has output,
繰り返すべきデータを保持する。 To hold the data should be repeated. データサイズレジスタ43は、コマンドデコード回路31が出力した繰り返すべきデータのサイズを保持する。 Data size register 43 holds the size of the data to repeat the command decode circuit 31 has output. 生データカウンタ35 Raw data counter 35
は、コマンドデコード回路31が出力した生データ数を保持する。 Holds the number of raw data the command decode circuit 31 has output. 減算回路36は、コマンドデコード回路31 Subtraction circuit 36, the command decode circuit 31
がEOL信号を出力したときに、ラインレングスレジスタ37とアドレスカウンタ38の差を計算し、コピーカウンタ32に出力する。 There When outputting EOL signal, the difference between the line length register 37 and the address counter 38 is calculated and output to the copy counter 32. ラインレングスレジスタ37は、 Line length register 37,
制御回路17があらかじめ出力した、1ラインのバイト数を保持する。 The control circuit 17 has output in advance holds the number of bytes of 1 line.

【0099】アドレスカウンタ38は、ラインバッファ39の、現在のアドレスを保持し、コピー出力回路4 [0099] The address counter 38, the line buffer 39 holds the current address, copy output circuit 4
0、リピート出力回路41、または生データ出力回路4 0, the repeat output circuit 41 or the raw data output circuit 4,
2がラインバッファをアクセスする毎にカウントアップし、またその結果、ラインレングスレジスタ37が保持している1ラインのバイト数に達した場合は0に復帰する。 2 counts up each time to access the line buffer and the result, if the line length register 37 has reached the number of bytes of 1 line held returns to 0. ラインバッファ39は、少なくとも1ラインの復号データを保持し、アドレスカウンタ38が保持する現在のアドレスに従って、復号データの入力または出力を行う。 Line buffer 39 holds the decoded data of at least one line, according to the current address address counter 38 holds performs the input or output of the decoded data.

【0100】コピー出力回路40は、コピーカウンタ3 [0100] copy output circuit 40, the copy counter 3
2が保持する値が0でない場合に、アドレスカウンタ3 If the value 2 holds is not 0, the address counter 3
8が示し、ラインバッファ39が保持する直前のラインのデータを復号データとして出力するとともに、1バイト出力する毎にコピーカウンタ32から1を減算する。 8 represents, to output the data of the immediately preceding line of the line buffer 39 holds the decoded data, subtracts from the copy counter 32 1 each time the 1-byte output.

【0101】リピート出力回路41は、コピーカウンタ32が保持する値が0で、かつリピートカウンタ33が保持する値が0でない場合に、データサイズレジスタ4 [0102] Repeat the output circuit 41, when the value value copy counter 32 is held at 0, and the repeat counter 33 is held is not 0, the data size register 4
3が保持する繰り返すべきデータのサイズによって指定されるサイズの、リピートデータレジスタ34が保持する繰り返しデータを復号データとして出力するとともに、アドレスカウンタ38が示すラインバッファ39の位置に、出力した復号データを格納し、また1バイト出力する毎にリピートカウンタ33から1を減算する。 3 is a size specified by the size of the data should be repeated for holding outputs a repeating data repeat data register 34 holds the decoded data, the position of the line buffer 39 indicated by the address counter 38, the outputs decoded data store, also subtracts from the repeat counter 33 1 each time the 1-byte output.

【0102】生データ出力回路42は、コピーカウンタ32が保持する値およびリピートカウンタ33が保持する値がともに0で、かつ生データカウンタ34が保持する値が0でない場合に、FIFO19に格納された生データを復号データとして出力するとともに、アドレスカウンタ38が示すラインバッファ39の位置に、出力した復号データを格納し、また1バイト出力する毎に生データカウンタ34から1を減算する。 [0102] The raw data output circuit 42, when the value value and the repeat counter 33 copy counter 32 holds holds both at 0, and the value held raw data counter 34 is not zero, is stored in FIFO19 outputs the raw data as decoded data, the position of the line buffer 39 indicated by the address counter 38, and stores the outputted decoded data, also subtracts from the raw data counter 34 1 each time the 1-byte output.

【0103】以上説明した復号回路の動作について以下、説明する。 [0103] The operation of the decoding circuit described above will be described below. コマンドデコード回路31が、Copy Lon Command decoding circuit 31, Copy Lon
gコマンドをデコードすると、コピーカウンタ32には複写数が、リピートカウンタ33および生データカウンタ35には0がそれぞれ設定される。 When decoding the g command, the number of copying in the copy counter 32, the repeat counter 33 and the raw data counter 35 0 is set, respectively. コピーカウンタ3 Copy counter 3
2に複写数が設定されると、コピー出力回路40はラインバッファ39のアドレスカウンタ38が示す位置のデータを読み取り、復号データとして出力する。 When the number of copying to 2 is set, the copy output circuit 40 reads the data at the location indicated by the address counter 38 of the line buffer 39, and outputs it as decoded data. アドレスカウンタ38には1が加算され、コピーカウンタ32からは1が減算される。 1 is added to the address counter 38, 1 is subtracted from the copy counter 32. コピーカウンタ32が0になるまでこれが繰り返され、0になるとコマンドデコード回路は次のコマンドのデコードを行う。 Previously copy counter 32 becomes 0 is repeated, it becomes 0 when the command decode circuit decodes the next command.

【0104】コマンドデコード回路31が、EOLコマンドをデコードすると、リピートカウンタ33および生データカウンタ35には0がそれぞれ設定される。 [0104] command decoding circuit 31, when decoding the EOL command, 0 to repeat counter 33 and the raw data counter 35 are respectively set. また、 Also,
EOL信号が出力され、減算回路36はラインレングスレジスタ37とアドレスカウンタ38の差を計算し、コピーカウンタ32に設定する。 EOL signal is output, the subtraction circuit 36 ​​calculates the difference of the line length register 37 and the address counter 38 is set to the copy counter 32. コピーカウンタ32に複写数が設定されると、以下CopyLongコマンドの場合と同様に処理が行われる。 When the number of copying to the copy counter 32 is set, treated in the same manner as in the CopyLong command is executed less.

【0105】コマンドデコード回路31が、Copy then [0105] command decoding circuit 31, Copy then
Repeat ByteコマンドまたはCopythen Repeat Byte Long Repeat Byte command or Copythen Repeat Byte Long
コマンドをデコードすると、コピーカウンタ32には複写数が、リピートカウンタ33には繰り返し数が、リピートデータレジスタ34には1バイトの繰り返しデータが、データサイズレジスタ43には1が、生データカウンタ35には0がそれぞれ設定される。 When decoding the command, the number of copying in the copy counter 32, the number of repetitions in the repeat counter 33, one byte of the repeat data in the repeat data register 34, the data size register 43 1, the raw data counter 35 0 is set, respectively. コピーカウンタ32に複写数が設定されると、まずCopyLongコマンドの場合と同様に処理が行われてやがてコピーカウンタ32 When the number of copying to the copy counter 32 is set, eventually copy counter treated in the same manner as in the first CopyLong command is performed 32
は0となる。 The value is zero. 次に、リピートカウンタ33に繰り返し数が設定されているので、リピート出力回路41はリピートデータレジスタ34に格納されている1バイトの繰り返しデータを復号データとして出力するとともに、ラインバッファ39のアドレスカウンタ38が示す位置に書き込む。 Next, since the number of repetitions to repeat counter 33 is set, together with the repeat output circuit 41 outputs a 1-byte repetition data stored in the repeat data register 34 as the decoded data the address of the line buffer 39 counter 38 write to the position indicated by the. アドレスカウンタ38には1が加算され、リピートカウンタ33からは1が減算される。 1 is added to the address counter 38, 1 is subtracted from the repeat counter 33. リピートカウンタ33が0になるまでこれが繰り返され、0になるとコマンドデコード回路は次のコマンドのデコードを行う。 Is this is repeated until the repeat counter 33 becomes 0, it becomes 0 when the command decode circuit decodes the next command.

【0106】コマンドデコード回路31が、Copy then [0106] command decoding circuit 31, Copy then
Repeat WordコマンドまたはCopythen Word Byte Longコマンドをデコードすると、コピーカウンタ32には複写数が、リピートカウンタ33には繰り返し数が、リピートデータレジスタ34には2バイトの繰り返しデータが、データサイズレジスタ43には2が、生データカウンタ35には0がそれぞれ設定される。 When decoding the the Repeat Word command or Copythen Word Byte Long command, the number of copying in the copy counter 32, the number of repetitions in the repeat counter 33 is repeated 2-byte data in the repeat data register 34, the data size register 43 2, the raw data counter 35 0 is set, respectively. コピーカウンタ32に複写数が設定されると、まずCopyLongコマンドの場合と同様に処理が行われてやがてコピーカウンタ32 When the number of copying to the copy counter 32 is set, eventually copy counter treated in the same manner as in the first CopyLong command is performed 32
は0となる。 The value is zero. 次に、リピートカウンタ33に繰り返し数が設定されているので、リピート出力回路41はリピートデータレジスタ34に格納されている2バイトの繰り返しデータを復号データとして出力するとともに、ラインバッファ39のアドレスカウンタ38が示す位置に1 Next, since the number of repetitions to repeat counter 33 is set, together with the repeat output circuit 41 outputs a 2-byte repetition data stored in the repeat data register 34 as the decoded data the address of the line buffer 39 counter 38 1 to the position indicated by the
バイトずつ2回書き込む。 Byte by writing twice. アドレスカウンタ38には1 The address counter 38 1
が2回加算され、リピートカウンタ33からは1が減算される。 There are added twice, 1 is subtracted from the repeat counter 33. リピートカウンタ33が0になるまでこれが繰り返され、0になるとコマンドデコード回路は次のコマンドのデコードを行う。 Is this is repeated until the repeat counter 33 becomes 0, it becomes 0 when the command decode circuit decodes the next command.

【0107】コマンドデコード回路31が、Copy then [0107] command decoding circuit 31, Copy then
Repeat Double WordコマンドまたはCopythen Repeat Do Repeat Double Word command or Copythen Repeat Do
uble Word Longコマンドをデコードすると、コピーカウンタ32には複写数が、リピートカウンタ33には繰り返し数が、リピートデータレジスタ34には4バイトの繰り返しデータが、データサイズレジスタ43には4 When decoding the uble Word Long command, the number of copying in the copy counter 32, the number of repetitions in the repeat counter 33 is repeated 4 bytes of data in the repeat data register 34, the data size register 43 4
が、生データカウンタ35には0がそれぞれ設定される。 But the raw data counter 35 0 is set, respectively. コピーカウンタ32に複写数が設定されると、まず When the number of copying to the copy counter 32 is set, first,
CopyLongコマンドの場合と同様に処理が行われてやがてコピーカウンタ32は0となる。 CopyLong if the same processing is copy counter 32 eventually take place command is zero. 次に、リピートカウンタ33に繰り返し数が設定されているので、リピート出力回路41はリピートデータレジスタ34に格納されている4バイトの繰り返しデータを復号データとして出力するとともに、ラインバッファ39のアドレスカウンタ38が示す位置に1バイトずつ4回書き込む。 Next, since the number of repetitions to repeat counter 33 is set, together with the repeat output circuit 41 outputs a repeating data of 4 bytes stored in the repeat data register 34 as the decoded data the address of the line buffer 39 counter 38 written 1 byte four times to the position indicated by the. アドレスカウンタ38には1が4回加算され、リピートカウンタ33からは1が減算される。 1 is added four times to the address counter 38, 1 is subtracted from the repeat counter 33. リピートカウンタ33が0 Repeat counter 33 is 0
になるまでこれが繰り返され、0になるとコマンドデコード回路は次のコマンドのデコードを行う。 This is repeated until, becomes 0 when the command decode circuit decodes the next command.

【0108】コマンドデコード回路31が、Copy then [0108] command decoding circuit 31, Copy then
RawコマンドまたはCopythen Raw Longコマンドをデコードすると、コピーカウンタ32には複写数が、リピートカウンタ33には0が、生データカウンタ35には生データ数がそれぞれ設定される。 When decoding the Raw command or Copythen Raw Long command, the number of copying in the copy counter 32, 0 is the repeat counter 33, the raw data counter 35 count the raw data are respectively set. コピーカウンタ32に複写数が設定されると、まずCopyLongコマンドの場合と同様に処理が行われてやがてコピーカウンタ32は0となる。 When the number of copying to the copy counter 32 is set, first, if the same processing is copy counter 32 eventually take place in CopyLong command is zero. 次に、生データカウンタ35に生データ数が設定されているので、生データ出力回路42はFIFO19から1バイトの生データを読み取り、復号データとして出力するとともに、ラインバッファ39のアドレスカウンタ38が示す位置に書き込む。 Then, since the raw data number to the raw data counter 35 is set, the raw data output circuit 42 reads the raw data of 1 byte from the FIFO 19, and outputs as decoded data, it is indicated by the address counter 38 of the line buffer 39 write to the position. アドレスカウンタ38には1が加算され、生データカウンタ35からは1が減算される。 1 is added to the address counter 38, 1 is subtracted from the raw data counter 35. 生データカウンタ35が0になるまでこれが繰り返され、0になるとコマンドデコード回路は次のコマンドのデコードを行う。 Previously raw data counter 35 becomes zero is repeated, it becomes 0 when the command decode circuit decodes the next command.

【0109】コマンドデコード回路31が、EOPコマンドをデコードすると、コピーカウンタ32には0が、 [0109] command decoding circuit 31, when decoding the EOP command, the copy counter 32 0,
リピートカウンタ33には0が、生データカウンタ35 0 to the repeat counter 33, the raw data counter 35
には0がそれぞれ設定され、デコードは次に制御回路1 0 is set each of the decoding then the control circuit 1
7によって起動されるまで停止する。 Stop until activated by 7.

【0110】以上説明したように、本実施形態によれば、符号化にあたって直左および直上のデータを参照するので、画像データのような水平・垂直両方向に相関があるデータを高い圧縮率で符号化することができるとともに、直左および直上のデータ以外のデータを参照しないため、符号化における計算量も小さく、ソフトウェアにより符号化を行った場合でも高速に符号化を行うことができる。 [0110] As described above, according to this embodiment, since the reference to the data of straight left and right above when coding, the code data having a correlation in the horizontal and vertical directions, such as image data at a high compression ratio it is possible to reduction, because it does not refer to the data other than the data of the straight left and right above, the amount of calculation in encoding is small, it is possible to perform high-speed encoding, even when performing encoding by software. また、本実施形態によれば、複数の操作(コピーと繰り返し、コピーと生データ)を同時に符号化し、あるいは復号するため、画像データを高い圧縮率で符号化することができる。 Further, according to this embodiment, a plurality of operation (copy and repetition, copying and raw data) for simultaneously encode or decode, can encode the image data at a high compression rate. また、本実施形態によれば、 Further, according to this embodiment,
複数のサイズの繰り返しデータ(バイト、ワード、ダブるワード)に符号化できるため、多値データの画像データを高い圧縮率で符号化することができる。 Multiple sizes repeating data (byte, word, double word) because it encoded can be encoded at a high compression rate of image data of multivalued data.

【0111】なお、上述の実施形態では、復号回路20 [0111] In the above embodiment, the decoding circuit 20
はハードウェアにより構成されていたが、これに替えてソフトウェアで復号するようにしてもよい。 Although was composed by hardware, it may be decoded by the software in place of this. 図9に示した復号回路20による処理をソフトウエアによって実現する手順は種々考えられるが、その一例を示せば図10のようになる。 Procedure for implementing the processing by the decoding circuit 20 shown in FIG. 9 by the software are various, but is shown in FIG. 10 One example thereof.

【0112】図10は本実施形態による復号処理の手順を説明するフローチャートである。 [0112] FIG. 10 is a flowchart for explaining the procedure of the decoding processing according to the present embodiment. 図10において、まずステップS101で次のコマンドを取り込み、コマンドをと取り込み、これをデコードする。 10, first, fetches the next command in step S101, capture and the command, decode it. このデコードの結果、当該ページの終了を示すEOPコードが検出された場合は、ステップS102から本処理を終了する。 The result of this decoding, if the EOP code indicating the end of the page is detected, the process ends at step S102.

【0113】ステップS103では、各カウンタ、レジスタを初期化し、ステップS104において、デコードの結果EOLコードが検出されたか否かを判断する。 [0113] In step S103, the counter, the register is initialized, and in step S104, it is determined whether the result EOL code decoded is detected. EOLコードが検出された場合は、ステップS105へ進み、当該行の残りのバイト数をコピーカウンタにセットして、 If the EOL code is detected, the process proceeds to step S105, sets the number of remaining bytes in the row in the copy counter,
ステップS108へ進む。 The process proceeds to step S108.

【0114】一方、EOLコードでない場合は、ステップS104からステップS106へ進み、デコードの結果に従ってコピーカウンタ、リピートカウンタ、生データカウンタをそれぞれセットし、更に、ステップS107 [0114] On the other hand, if not EOL code, the process proceeds from step S104 to step S106, the copy counter, the repeat counter, the raw data counter was set respectively according to the result of decoding, further, step S107
でリピートデータレジスタとデータサイズレジスタをセットする。 To set the repeat data register and the data size register in. 例えば、Copythen Repeat Byteコマンドであった場合は、コピーカウンタとリピートカウンタに当該コマンドを解析してえられた値をセットし、生データカウンタを0にセットする。 For example, in the case were Copythen Repeat Byte command to set the value on E analyzes the command to copy counter and repeat counter, the raw data counter is set to 0. 更に、リピートデータレジスタに当該コマンドに続く1バイトのデータをセットし、 Furthermore, to set the one-byte data following the repeat data register to the command,
データサイズレジスタに1をセットする。 1 is set in the data size register.

【0115】ステップS108では、コピーカウンタの内容が0かどうかを判断し、コピーカウンタの内容が0 [0115] In step S108, it is determined whether or not the contents of the copy counter is 0, the contents of the copy counter is 0
でなければステップS109へ進み、コピーカウンタのバイト数分を直前のラインのデータから抽出して復号データとして出力する。 Otherwise the process proceeds to step S109, and outputs the decoded data by extracting the number of bytes of the copying counter from the data of the immediately preceding line.

【0116】ステップS110では、リピートカウンタの内容が0かどうかを判断する。 [0116] In step S110, the contents of the repeat counter to determine whether 0. リピートカウンタの内容が0でない場合は、ステップS111に進み、リピートデータレジスタの内容(データサイズをデータサイズレジスタから得て、繰り返すべきデータを取得する)をリピートカウンタで示される数だけ繰り返し出力する。 If the content of the repeat counter is not 0, the process proceeds to step S 111, (to give the data size from the data size register, and acquires the data should be repeated) content of the repeat data register as many repeatedly output represented by repeat counter.

【0117】また、ステップS112において、生データカウンタの内容が0可動かを判断し、0でなければステップS113へ進む。 [0117] Further, in step S112, the contents of the raw data counter determines whether 0 movable, the process proceeds to not zero step S113. ステップS113では、当該コマンドに続く生データカウンタで示されるバイト数分のデータを取得して、復号データとして出力する。 In step S113, acquires the number of data bytes indicated by the raw data counter subsequent to the command, and outputs it as decoded data.

【0118】その後、処理をステップS101へ戻し、 [0118] After that, the process returns to step S101,
当該ページの処理を終えるまで上述の処理を繰り返す。 Repeating the above process until the end of the processing of the page.

【0119】以上の処理をコンピュータによって実現することで、本実施形態の復号処理をソフトウエアによって実現することが可能となる。 [0119] By realizing the above processing computer, it is possible to realize a decoding process of the present embodiment by software.

【0120】また、上述の実施形態では符号化にあたって行末で処理を区切っているが、これにかえて行末で処理を区切らず、あるラインの最右のデータに次のラインの最左のデータが続いているものとして処理を行ってもよい。 [0120] Further, although in the embodiment described above are separated process at the end of a line when the encoding, not separate the process at the end of a line in place of this, the leftmost data follows rightmost data of a line line processing as being followed may be carried out.

【0121】また、上述の実施例では1バイト、2バイト、4バイトの3種類のサイズの繰り返しを処理していたが、これに替えて、8バイト、16バイト、あるいは3バイト、6バイト等の任意のサイズのデータを繰り返すようにしてもよい。 [0121] Furthermore, one byte in the above embodiment, two bytes, had processing iterations of three sizes of 4 bytes, instead of this, 8 bytes, 16 bytes or 3 bytes, 6 bytes, etc. any size of data may be repeated.

【0122】また、上述の実施例では例えば1バイトの長い繰り返しの場合に、Copy thenRepeat Byte Longコマンドに符号化しているが、これにかえてデータを2バイトあるいはそれ以上の繰り返しとみなして、Copy the [0122] In the case of the long repeat of 1 byte for example in the above embodiment, although encoded Copy thenRepeat Byte Long command, the data is regarded as 2 bytes or more repeated instead of this, Copy the
n RepeatWord、Copy then Repeat Double Word、Copy t n RepeatWord, Copy then Repeat Double Word, Copy t
hen Repeat Word Longコマンド等に符号化するようにしてもよい。 hen the Repeat may be encoded in Word Long command like.

【0123】なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器,リーダ,プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。 [0123] The present invention is a plurality of devices (eg, host computer, interface, reader, printer) or to an apparatus comprising a single device (e.g., a copying machine, a facsimile or to an apparatus, etc.). また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。 Another object of the present invention, a storage medium storing software program codes for realizing the functions of the above embodiments is supplied to a system or an apparatus and a computer (or CPU or MPU) storage medium also by reading and executing the program code stored in, of course, it is achieved.

【0124】この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。 [0124] In this case, the program codes read from the storage medium realizes the functions of the embodiments and the storage medium storing the program code constitutes the present invention.

【0125】プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD [0125] As the storage medium for supplying the program codes, a floppy disk, hard disk, optical disk, magnetooptical disk, CD-ROM, CD
−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。 -R, magnetic tape, nonvolatile memory card, ROM, and the like.

【0126】また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。 [0126] Further, by a computer executing the read program code, as well as functions of the above embodiments are realized on the basis of the instructions of the program code, OS (operating system running on the computer ) performs a part or all of the processing but also to a case where the functions of the above-described embodiments are realized by those processes like.

【0127】さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。 [0127] Furthermore, the program code read from the storage medium are written in a memory of a function expansion unit connected to a function expansion board inserted into the computer or on the basis of the instructions of the program code, its function expansion board or function expansion unit CPU performs a part or all of the processing but also to a case where the functions of the above embodiments are realized by those processes.

【0128】 [0128]

【発明の効果】以上説明したように、本発明によれば、 As described in the foregoing, according to the present invention,
符号化・復号化においてあるデータの繰り返しを検出してこれを利用するにおいて、少なくとも2つの異なるサイズのデータの繰り返しを用いて符号化・復号化することが可能となり、より圧縮率を高くすることが可能となる。 In utilizing this by detecting a repetition of the data in the encoding and decoding, it is possible to encoding and decoding using the repetition of data of at least two different sizes, to increase the more compressibility it it is possible. これにより、グレイスケールまたはカラー画像データのように一画素が多値で表現される画像データであっても圧縮率を高くすることができる。 This makes it possible to be image data one pixel as a gray scale or color image data is represented by multi-value increasing the compression ratio. また、本発明によれば、水平・垂直両方向の相関を利用して符号化する場合等において一般に使用される3種類の操作、すなわちあるデータの繰り返し、処理済データの複写、生データのうちの少なくとも2つを同時に符号化することが可能となり、より圧縮率を高くすることができる。 Further, according to the present invention, three types of operations that are commonly used in the case such encoding using the correlation in the horizontal and vertical directions, i.e. the repetition of certain data, the processed data copying, out of the raw data it is possible to encode at least two simultaneously, it is possible to increase more the compression ratio. また、本発明によれば、画像データのような2次元以上のデータ構造を、水平・垂直両方向の相関を利用して符号化することにより高い圧縮率が得られる。 Further, according to the present invention, a two-dimensional or more data structures, such as image data, high compression ratio by encoding using the correlation in the horizontal and vertical directions is obtained. 特に、水平・垂直の相関が最も顕著である直左のデータおよび直上のデータを用いて圧縮を行うことにより計算量を小さくでき、ソフトウェアで符号化した場合に要する時間を短くすることができる。 In particular, it is possible to correlate the horizontal and vertical is possible to reduce the amount of calculation by performing compression using a straight left data and right above the data is most pronounced, to shorten the time required in the case of encoding by software.

【図面の簡単な説明】 BRIEF DESCRIPTION OF THE DRAWINGS

【図1】本発明の第1の実施形態による印刷システムのハードウエア構成を説明するブロック図である。 1 is a block diagram illustrating a hardware configuration of a printing system according to the first embodiment of the present invention.

【図2】本実施形態による印刷装置を適用可能な印刷システムの制御構成を示すブロック図である。 2 is a block diagram showing a control configuration of a printing system applicable to a printing apparatus according to the present embodiment.

【図3】図2に示したプリンタドライバ12が符号化データを生成するのに用いるコマンドコードテーブルの一例を説明する図である。 [3] The printer driver 12 shown in FIG. 2 is a diagram illustrating an example of a command code table used to generate the encoded data.

【図4】図3に示したExtendコマンドに後続する第2のコマンドコードの一例を示す図である。 Is a diagram illustrating an example of a second command code following the Extend command shown in FIG. 3; FIG.

【図5】本実施形態によるコマンドの動作の一例を示す図である。 5 is a diagram showing an example of a command of the operation according to the present embodiment.

【図6A】本実施形態によるプリンタドライバの符号化処理を説明するフローチャートである。 6A is a flowchart illustrating an encoding process of a printer driver according to this embodiment.

【図6B】本実施形態によるプリンタドライバの符号化処理を説明するフローチャートである。 6B is a flowchart illustrating an encoding process of a printer driver according to this embodiment.

【図7】図6A及び図6Bで説明したプリンタドライバ12の符号化手順を実現するためのプログラムリスト例を示す図である。 7 is a diagram showing a program list example for implementing the encoding procedure of the printer driver 12 described in FIGS. 6A and 6B.

【図8】図7に示した関数count_rawを実現するためのプログラムリスト例を示す図である。 8 is a diagram showing a program list example for realizing the functions count_raw shown in FIG.

【図9】図2に示した復号回路20の詳細を示すブロック図である。 9 is a block diagram showing details of the decoding circuit 20 shown in FIG.

【図10】本実施形態による復号処理の手順を説明するフローチャートである。 10 is a flowchart illustrating a procedure of decoding process according to the present embodiment.

Claims (19)

    【特許請求の範囲】 [The claims]
  1. 【請求項1】 処理済データの複写で置換し得る部分を検出し、該部分のデータ長を取得する第1取得手段と、 複数種類のサイズのうちのいずれかのサイズのデータの繰り返しで置換し得る部分を検出し、該データの内容と該部分のデータ長を取得する第2取得手段と、 前記第1乃至第2取得手段によって取得されない部分を検出し、該部分のデータ内容及びデータ長を取得する第3取得手段と、 前記第1乃至第3取得手段によって検出された各部分のデータ長とデータ内容に基づいて符号化データを生成する生成手段とを備えることを特徴とする符号化装置。 1. A detecting portion which substitutes the copying of the processed data, a first obtaining means for obtaining data length of the partial substitution by repetition of data of any size of a plurality of sizes detects may partially, a second obtaining means for obtaining data length of the content and partial of the data, detecting a portion which is not acquired by the first or second acquiring means, data content and the data length of the partial a third obtaining means for obtaining, encoding, characterized in that it comprises generating means for generating the encoded data based on the data length and the data contents of each portion detected by the first to third acquisition means apparatus.
  2. 【請求項2】 前記生成手段は、前記第1取得手段乃至前記第3取得手段で取得したデータ長とを単一コマンドで表す符号化データを生成することを特徴とする請求項1に記載の符号化装置。 Wherein said generating means, according to claim 1, characterized in that to generate the encoded data representing the the data length obtained by the first obtaining unit to the third acquisition means in a single command encoding device.
  3. 【請求項3】 前記単一コマンドは1バイトで構成されることを特徴とする請求項2に記載の符号化装置。 Wherein said single command encoding apparatus according to claim 2, characterized in that it is composed of 1 byte.
  4. 【請求項4】 符号化の対象となるデータは2次元的な配列構造を有し、 前記第1取得手段は、直前の行データの同一の列位置にあるデータの複写で置換し得る部分を検出することを特徴とする請求項1に記載の符号化装置。 Subject to data wherein encoding includes a two-dimensional array structure, the first obtaining unit, the portion that can be replaced by the data copying in the same column position of previous line data the encoding apparatus according to claim 1, wherein the detecting.
  5. 【請求項5】 前記第2取得手段は、前記複数種類のサイズとして、1バイト長、2バイト長、4バイト長を含むことを特徴とする請求項1に記載の符号化装置。 Wherein said second acquisition means, as the plurality of types of sizes, one byte long, 2 bytes long, the encoding apparatus according to claim 1, characterized in that it comprises a 4-byte length.
  6. 【請求項6】 符号化の対象となるデータは2次元的な配列構造を有し、 前記生成手段は、前記第1取得手段で検出した部分が当該行の最後まで到達する場合は、その部分を所定のコマンドコードで置き換えることを特徴とする請求項1に記載の符号化装置。 Subject to data wherein encoding includes a two-dimensional array structure, said generating means, if the part detected by the first acquisition means reaches the end of the line, a portion thereof the encoding apparatus according to claim 1, characterized in that replacing a predetermined command code.
  7. 【請求項7】 前記第2取得手段取得されるデータ長は、前記選択されたサイズのデータの繰り返し数で示されることを特徴とする請求項1に記載の符号化装置。 7. A data length acquired the second obtaining means, the encoding apparatus according to claim 1, characterized in that indicated by the number of repetitions of data of the selected size.
  8. 【請求項8】 所定のデータ長の符号列からなるコマンドを解析する解析手段と、 復号化済みのデータを記憶する記憶手段と、 前記解析手段の解析結果に基づいて復号化データを出力する出力手段とを備え、 前記出力手段が、 前記記憶手段より前記復号化済みのデータの対応部分を取得して出力する第1出力手段と、 複数種類のサイズの中より指定されたサイズを有するデータを後続の符号列より得て、これを指定された繰り返し数だけ繰り返して出力する第2出力手段と、 指定されたデータ長のデータを後続の符号列より得て出力する第3出力手段とを備えることを特徴とする復号化装置。 Analysis means for 8. analyzes a command made from the code string having a predetermined data length, storage means for storing the decrypted data, the output for outputting the decoded data based on the analysis result of said analyzing means and means, said output means, a first output means for outputting to obtain the corresponding portion of the decoded data from the storage means, the data having a specified size from among a plurality of sizes obtained from the subsequent code sequence comprises a second output means for outputting repeatedly by repeating the specified number of them, and a third output means for outputting the data of the specified data length obtained from the subsequent code sequence decoding device, characterized in that.
  9. 【請求項9】 前記コマンドが前記第1と第2出力手段を組み合わせて、或いは前記第1と第3出力手段を組み合わせて実行することを表わすことを特徴とする請求項8に記載の復号化装置。 9. combining the commands the first and second output means, or the decoding according to claim 8, wherein the representative to perform a combination of the first and third output means apparatus.
  10. 【請求項10】 処理済データの複写で置換し得る部分を検出し、該部分のデータ長を取得する第1取得工程と、 複数種類のサイズのうちのいずれかのサイズのデータの繰り返しで置換し得る部分を検出し、該データの内容と該部分のデータ長を取得する第2取得工程と、 前記第1乃至第2取得工程によって取得されない部分を検出し、該部分のデータ内容及びデータ長を取得する第3取得工程と、 前記第1乃至第3取得工程によって検出された各部分のデータ長とデータ内容に基づいて符号化データを生成する生成工程とを備えることを特徴とする符号化方法。 10. A detecting portion may be replaced by a copy of the processed data, a first obtaining step of obtaining the data length of the partial substitution by repetition of data of any size of a plurality of sizes detects may partially detect a second acquisition step of acquiring the data length of the content and partial of the data, the first through part is not acquired by the second acquisition step, data content and the data length of the partial a third acquisition step of acquiring, encoding, characterized in that it comprises a generation step of generating encoded data on the basis of the data length and the data contents of each portion detected by the first to third acquisition step Method.
  11. 【請求項11】 前記生成工程は、前記第1取得工程乃至前記第3取得工程で取得したデータ長とを単一コマンドで表す符号化データを生成することを特徴とする請求項10に記載の符号化方法。 Wherein said generating step, according to claim 10, characterized in that to generate the encoded data representing the data length acquired by the first acquisition step to the third acquisition step with a single command encoding method.
  12. 【請求項12】 前記単一コマンドは1バイトで構成されることを特徴とする請求項11に記載の符号化方法。 12. The method of claim 11, wherein the single command encoding method according to claim 11, characterized in that it is composed of 1 byte.
  13. 【請求項13】 符号化の対象となるデータは2次元的な配列構造を有し、 前記第1取得工程は、直前の行データの同一の列位置にあるデータの複写で置換し得る部分を検出することを特徴とする請求項10に記載の符号化方法。 13. A data to be coded has a two-dimensional array structure, the first acquisition step, parts can be substituted with data replication in the same column position of previous line data the coding method according to claim 10, characterized in that the detection.
  14. 【請求項14】 前記第2取得工程は、前記複数種類のサイズとして、1バイト長、2バイト長、4バイト長を含むことを特徴とする請求項10に記載の符号化方法。 14. The second obtaining step, said as a plurality of sizes, one byte long, 2 bytes long, the encoding method according to claim 10, characterized in that it comprises a 4-byte length.
  15. 【請求項15】 符号化の対象となるデータは2次元的な配列構造を有し、 前記生成工程は、前記第1取得工程で検出した部分が当該行の最後まで到達する場合は、その部分を所定のコマンドコードで置き換えることを特徴とする請求項10に記載の符号化方法。 15. A data to be coded has a two-dimensional array structure, the generation step, when the first detected in acquisition step portion reaches the end of the line, a portion thereof the coding method according to claim 10, characterized in that replacing a predetermined command code.
  16. 【請求項16】 前記第2取得工程取得されるデータ長は、前記選択されたサイズのデータの繰り返し数で示されることを特徴とする請求項10に記載の符号化方法。 16. The second acquisition step data length is acquired, encoding method according to claim 10, characterized in that it is represented by the number of repetitions of data of the selected size.
  17. 【請求項17】 所定のデータ長の符号列からなるコマンドを解析する解析工程と、 復号化済みのデータをメモリに記憶する記憶工程と、 前記解析工程の解析結果に基づいて復号化データを出力する出力工程とを備え、 前記出力工程が、 前記メモリより前記復号化済みのデータの対応部分を取得して出力する第1出力工程と、 複数種類のサイズの中より指定されたサイズを有するデータを後続の符号列より得て、これを指定された繰り返し数だけ繰り返して出力する第2出力工程と、 指定されたデータ長のデータを後続の符号列より得て出力する第3出力工程とを備えることを特徴とする復号化方法。 17. A analysis step of analyzing a command consisting of the code string having a predetermined data length, a storage step of storing decoded data in a memory, decoded data based on the analysis result of the analyzing step output and an output step of, data having the output step, a first output step of outputting to obtain the corresponding portion of data of the decoded from said memory, the specified size from among a plurality of sizes the obtained from subsequent code string, and a second output step of outputting repeatedly by repeating the specified number of them, and a third output step of outputting the data of the specified data length obtained from the subsequent code sequence decoding method, characterized in that it comprises.
  18. 【請求項18】 前記コマンドが前記第1と第2出力工程を組み合わせて、 或いは前記第1と第3出力工程を組み合わせて実行することを表わすことを特徴とする請求項17に記載の復号化方法。 18. a combination of said command said first and second output step, or decoding according to claim 17, wherein the representative to perform a combination of the first and the third output step Method.
  19. 【請求項19】 請求項10乃至18のいずれかに記載の方法をコンピュータによって実現するための制御プログラムを格納する記憶媒体。 19. A storage medium for storing a control program for implementing the method described by computer to one of claims 10 to 18.
JP2000221236A 2000-07-21 2000-07-21 Coding method and device, and decoding method and device Withdrawn JP2002043950A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000221236A JP2002043950A (en) 2000-07-21 2000-07-21 Coding method and device, and decoding method and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000221236A JP2002043950A (en) 2000-07-21 2000-07-21 Coding method and device, and decoding method and device

Publications (1)

Publication Number Publication Date
JP2002043950A true JP2002043950A (en) 2002-02-08

Family

ID=18715686

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000221236A Withdrawn JP2002043950A (en) 2000-07-21 2000-07-21 Coding method and device, and decoding method and device

Country Status (1)

Country Link
JP (1) JP2002043950A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005294934A (en) * 2004-03-31 2005-10-20 Alfa Vision Kk Image data compression method
JP2008504734A (en) * 2004-06-25 2008-02-14 アボセント コーポレイション Digital video compression command priority
WO2009095956A1 (en) * 2008-01-31 2009-08-06 Fujitsu Limited Data compression/decompression method, and compression/ decompression program
JP2014087066A (en) * 2012-10-23 2014-05-12 Kyocera Document Solutions Inc Method, non-transitory computer-readable recording medium, computer, and program
US9560371B2 (en) 2003-07-30 2017-01-31 Avocent Corporation Video compression system
US9743095B2 (en) 2002-10-01 2017-08-22 Avocent Corporation Video compression encoder

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9743095B2 (en) 2002-10-01 2017-08-22 Avocent Corporation Video compression encoder
US9560371B2 (en) 2003-07-30 2017-01-31 Avocent Corporation Video compression system
JP2005294934A (en) * 2004-03-31 2005-10-20 Alfa Vision Kk Image data compression method
JP4520197B2 (en) * 2004-03-31 2010-08-04 アルファビジョン株式会社 The method of the compressed image data
JP2008504734A (en) * 2004-06-25 2008-02-14 アボセント コーポレイション Digital video compression command priority
WO2009095956A1 (en) * 2008-01-31 2009-08-06 Fujitsu Limited Data compression/decompression method, and compression/ decompression program
JP4814999B2 (en) * 2008-01-31 2011-11-16 富士通株式会社 Data compression and decompression method and compression and decompression program
US8164490B2 (en) 2008-01-31 2012-04-24 Fujitsu Limited Data compression/decompression method and computer readable storage medium storing compression/decompression program
GB2469955B (en) * 2008-01-31 2012-09-12 Fujitsu Ltd Data compression/decompression method,and compression/decompression program
GB2469955A (en) * 2008-01-31 2010-11-03 Fujitsu Ltd Data compression/decompression method,and compression/decompression program
JP2014087066A (en) * 2012-10-23 2014-05-12 Kyocera Document Solutions Inc Method, non-transitory computer-readable recording medium, computer, and program

Similar Documents

Publication Publication Date Title
US7006660B2 (en) Data processing apparatus and method, data processing program, and storage medium
US6014095A (en) Variable length encoding system
US6577254B2 (en) Data compression/decompression system
US6285790B1 (en) Data compression for indexed color image data
US6269190B1 (en) Computer system for processing images using a virtual frame buffer
JP3137270B2 (en) Compressed image data decoding apparatus
US7630099B1 (en) Reducing storage requirements for display data
JP3486433B2 (en) Page printer for automatic font compression
EP0412047A1 (en) Method and system for arithmetic coding and decoding
US5974179A (en) Binary image data compression and decompression
JP3021324B2 (en) Synchronization recovery method and apparatus for variable length decoding device
US5627534A (en) Dual stage compression of bit mapped image data using refined run length and LZ compression
JP2581903B2 (en) Byte-aligned data compression method and apparatus
US20010031092A1 (en) Method for compressing digital documents with control of image quality and compression rate
US5402248A (en) Image encoding apparatus and method
US6665444B1 (en) Image processing apparatus and method, and storage medium
EP1318665B1 (en) Image processing apparatus and method, program, and storage medium
US6501859B1 (en) Image compression using wavelet data or original image data depending on code amount
WO1999023602A1 (en) System and method for efficiently encoding video frame sequences
JP2766302B2 (en) Variable-length code parallel decryption method and device
EP0469851A2 (en) Image processing method and apparatus
JPH07123228B2 (en) Adaptive coding apparatus and method using the carry control
JPH11165435A (en) Creation method of merge data component
US5857035A (en) Arithmetic coding compressor for encoding multiple bit values
CN1656821A (en) Methods and systems for preventing start code emulation at locations that include non-byte aligned and/or bit-shifted positions

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20071002