Dacom 450/500 facsimile data transcoding
RFC 803

Document Type RFC - Unknown (November 1981; No errata)
Last updated 2013-03-02
Stream Legacy
Formats plain text pdf html bibtex
Stream Legacy state (None)
Consensus Boilerplate Unknown
RFC Editor Note (None)
IESG IESG state RFC 803 (Unknown)
Telechat date
Responsible AD (None)
Send notices to (None)
RFC 803

          Dacom 450/500 Facsimile Data Transcoding
         A. Agarwal, M. J. O'Connor and D. L. Mills
                      2 November 1981

1.  Introduction

     As part of our effort in support of  the  DARPA  Internet  Program,
software  modules  to encode and decode facsimile data for the Dacom 450
and 500 models Computerfax facsimile  machines  have  been  constructed.
The  purpose of these modules is to map the data representations used by
these machines to and from bit-map  and  run-length  representations  in
programs  for editing, transmission and archiving facsimile images.  The
modules are written in the PDP-11 MACRO-11 assembly language and can  be
incorporated into programs for, among others, the RT-11 operating system
and the DCNET BOS or VOS operating systems.

     The first part of this report describes in  detail  the  Dacom  450
data compression algorithm and is an update and correction to an earlier
memorandum [2].  Following this, the encoding  and  decoding  algorithms
are  described  along  with  the  supporting  programs and file formats.
Reference  [3]  describes  another  implementation   of   the   decoding
algorithm.   Grateful  acknowledgment  is made to E.  A.  Poe of Rapicom
for his assistance in this effort.

     The second part of this report describes briefly the Dacom 500 data
compression  algorithm  as used by the INTELPOST electronic-mail network
under  development  by  the  US  Postal  Service  and  several   foreign
administrations.    These  machines  conform  to  the  CCITT  T.4  Draft
Recommendation, described in [5].  Supporting programs and file  formats
are described.

2.  Dacom 450 Data Compression Principles

     The encoding algorithm for the Dacom 450 processes lines scanned by
the  machine  to  produce a two-dimensional run-length code described by
Weber [1]; however,  this  article  contains  a  number  of  errors  and
omissions,  many  of  which  were  discovered  only  after  considerable
analysis  and  experimentation  [2,3].   The  machine  operates  over  a
coordinate   space   of   l726   by  approximately  2200  pels  when  in
high-resolution (detail) mode.  In normal (quality)  mode  the  vertical
resolution is halved, so that about 1100 lines are transmitted, while in
express mode about 733 lines are transmitted (missed lines are filled in
on playback by replicating previous lines).

     Data are encoded  two  rows  at  a  time  using  a  two-dimensional
run-length  code.   Each  row-pair  is  scanned  left-to-right  and  the
line-pairs themselves processed top-to-bottom of the document.  Figure 1
shows how the pels are represented.


Dacom 450/500 Facsimile Data Transcoding                        PAGE   2

                    |          |          |
                ----+----------+----------+----
                ... |  x(1,j)  | x(1,j+1) | ...
                ----+----------+----------+----
                ... |  x(2,j)  | x(2,j+1) | ...
                ----+----------+----------+----
                    |          |          |
                      Direction of scan ->

               Figure 1. Data Representation

     For each j the vector (x(1,j),x(2,j)) represents  the  contents  of
the  jth  column, where x(i,j) can take on values of zero (white) or one
(black).  Each of the four possible vectors ranging  over  these  values
will  be  called a state (Dacom calls these "modes") with the succession
of transitions between these states determined by the picture content of
the  particular line-pair.  Scanning of the line-pairs follows one after
the other with no special end-of-line code in the data itself.  For  the
purpose  of later discussion and comparison with the published data, the
following conventions will be used (note: the pels read top-bottom):

                Pels    Vector  State
                ---------------------   
                W-W     (0,0)   0
                B-W     (1,0)   1
                W-B     (0,1)   2
                B-B     (1,1)   3

     The algorithm used by Dacom to generate the transmitted data as the
columns   are   scanned   can  be  described  as  the  non-deterministic
finite-state automaton (nfsa) shown in Figure 2.  Conceptually, the nfsa
starts  at  the beginning of a page in a designated state and at a point
just after scanning the jth column in the jth state.  It then scans  the
(j + 1)th column and enters that state while emitting the string of bits
shown in the figure.

     In the states corresponding to  W-W  (0)  and  B-B  (3)  a  special
run-length  encoding  techniques is used.  There are two state variables
associated with each of  these  two  states,  one  variable  used  as  a
run-length  counter  and  the  other  the field length (in bits) of this
counter.  Upon each entry to either of these two states the  counter  is
initialized  at  zero  and  counts up for every additional column of the
same state.  At the end  of  the  run  the  value  of  this  counter  is
transmitted  extending  with high-order zeros, if necessary, to fill the
Show full document text