As part of the negotiations of a fax session, the transmitter determines the image format as to
- Page Size
- Minimum line length
Furthermore, the addition of a header/footer to the image must be performed immediately prior to transmission. As a result, the T.30 protocol engine must usually convert the stored image during transmission. The ICL has two components that support the T.30 transmit operation, the Reader (RDR) package and the Convert (CNV) package. The RDR package produces bit-mapped data at a specified image width and resolution, performing scaling as required. The CNV package accepts bit-mapped images, adds a header/footer and encodes the image data for transmission in the format specified by T.30. The diagram above is a structure chart for utilizing the conversion library for transmission.
The process of transmission starts with calling RDR_Get_File_Attributes. This routine “tastes” the file and determines its type and the format of the image data it contains. These returns are used by the controller to determine the best transmission format. For example, if the file is low resolution, T.30 should negotiate low-resolution transmission, since sending at high resolution would only result in extra transmission time. Once T.30 has negotiated an appropriate rate, it can open the CNV package and specify the negotiated format as the output format and the file format as the input format. From that point on, T.30 can pull buffers of bit-mapped data from the RDR package, passing those buffers to the CNV package, which then returns transmittable image data. The transmittable image data are then passed to the modem for transmission.
At the completion of a page, the RDR_Get_Bitmap_Line routine returns an indicator that the page is complete and whether there are more pages in the file. T.30 uses this indicator to formulate the Post Page Message. After the post page message exchange, T30 calls RDR_Goto_Next_Page to advance to the next image page.
For reception, the T.30 controller utilizes the DIO package to write TIFF-F files and the CVT package to analyze and repair bad lines, and format the image for storage. The T.30 controller supplies buffers of incoming image data to the conversion package. ICL analyzes the image data, locating and repairing bad lines, and reformats the image data for disk storage. The structure chart for this operation is displayed above.
The reception process requires that the controller pass successive buffers to the CNV_Convert_Buffer function. This routine analyzes the bad line and repairs them, and converts the received image format to that required for the output file. The converted data are passed to the DIO_Write_Image routine for output to the TIFF file. After each buffer conversion, the controller should call CNV_Get_Image_Quality to monitor the quality of the image. During reception, the “Bytes Since Last EOL” value should be used to determine if the T.30 dictated 5.0-seconds-between-EOLs rule had been violated. If it has, the controller should disconnect. At the end of the image this routine returns the values required to choose from RTN, RTP, or MCF for the post page response. To begin receiving the next page, the controller calls DIO_Advance_Page and repeats the process. After the last page, the call to DIO_Close completes writing of the page attributes in the TIFF file and closes the file.
The CCL implements an ECTF S.100 compatible header/footer facility. The facility is controlled by the following structure.
||ASCII string to drive format of the header line.
||ASCII string to drive format of the footer line.
||Method to use for adding hdr/ftr: Insert, Append, Overlay.
||Phone number of the local end.
||ID of the remote end.
||Total number of pages in the Fax.
||Current page number
||Font type face to use for rendering the header/footer.
||Size of font in points
||Attributes of the font.
||Character set of the font to use.
||Determine if the header/footer is to wrap or be truncated if the rendered header/footer exceeds the size of the page.
||Specifies the number of pixels of margin on the left and right.