spandsp  1.99.0
t4_tx.h File Reference

Go to the source code of this file.

Macros

#define COMPRESSION_T85   9
 
#define COMPRESSION_T43   10
 

Typedefs

typedef int(* t4_row_read_handler_t) (void *user_data, uint8_t buf[], size_t len)
 
typedef struct t4_tx_state_s t4_tx_state_t
 

Enumerations

enum  t4_image_format_status_t { T4_IMAGE_FORMAT_OK = 0, T4_IMAGE_FORMAT_INCOMPATIBLE = -1, T4_IMAGE_FORMAT_NOSIZESUPPORT = -2, T4_IMAGE_FORMAT_NORESSUPPORT = -3 }
 

Functions

int t4_tx_start_page (t4_tx_state_t *s)
 Prepare to send the next page of the current document. More...
 
int t4_tx_restart_page (t4_tx_state_t *s)
 Prepare the current page for a resend. More...
 
int t4_tx_next_page_has_different_format (t4_tx_state_t *s)
 Check for the existance of the next page, and whether its format is like the current one. This information can be needed before it is determined that the current page is finished with. More...
 
int t4_tx_end_page (t4_tx_state_t *s)
 Complete the sending of a page. More...
 
int t4_tx_image_complete (t4_tx_state_t *s)
 Return the next bit of the current document page, without actually moving forward in the buffer. The document will be padded for the current minimum scan line time. More...
 
int t4_tx_get_bit (t4_tx_state_t *s)
 Get the next bit of the current document page. The document will be padded for the current minimum scan line time. More...
 
int t4_tx_get (t4_tx_state_t *s, uint8_t buf[], size_t max_len)
 Get the next chunk of the current document page. The document will be padded for the current minimum scan line time. More...
 
int t4_tx_get_tx_compression (t4_tx_state_t *s)
 Get the compression for the encoded data. More...
 
int t4_tx_get_tx_image_type (t4_tx_state_t *s)
 Get the image type of the encoded data. More...
 
int t4_tx_get_tx_resolution (t4_tx_state_t *s)
 Get the X and Y resolution code of the current page. More...
 
int t4_tx_get_tx_x_resolution (t4_tx_state_t *s)
 Get the column-to-column (x) resolution of the current page. More...
 
int t4_tx_get_tx_y_resolution (t4_tx_state_t *s)
 Get the row-to-row (y) resolution of the current page. More...
 
int t4_tx_get_tx_image_width (t4_tx_state_t *s)
 Get the width of the encoded data. More...
 
int t4_tx_get_tx_image_width_code (t4_tx_state_t *s)
 Get the width code of the encoded data. More...
 
int t4_tx_set_tx_image_format (t4_tx_state_t *s, int supported_compressions, int supported_image_sizes, int supported_bilevel_resolutions, int supported_colour_resolutions)
 Auto-select the format in which to send the image. More...
 
void t4_tx_set_min_bits_per_row (t4_tx_state_t *s, int bits)
 Set the minimum number of encoded bits per row. This allows the makes the encoding process to be set to comply with the minimum row time specified by a remote receiving machine. More...
 
void t4_tx_set_max_2d_rows_per_1d_row (t4_tx_state_t *s, int max)
 Set the maximum number of 2D encoded rows between 1D encoded rows. This is only valid for T.4 2D encoding. More...
 
void t4_tx_set_local_ident (t4_tx_state_t *s, const char *ident)
 Set the identity of the local machine, for inclusion in page headers. More...
 
void t4_tx_set_header_info (t4_tx_state_t *s, const char *info)
 Set the header info. More...
 
void t4_tx_set_header_tz (t4_tx_state_t *s, tz_t *tz)
 Set the header timezone. More...
 
void t4_tx_set_header_overlays_image (t4_tx_state_t *s, bool header_overlays_image)
 Set page header overlay mode. More...
 
int t4_tx_set_row_read_handler (t4_tx_state_t *s, t4_row_read_handler_t handler, void *user_data)
 Set the row read handler for a T.4 transmit context. More...
 
int t4_tx_get_pages_in_file (t4_tx_state_t *s)
 Get the number of pages in the file. More...
 
int t4_tx_get_current_page_in_file (t4_tx_state_t *s)
 Get the currnet page number in the file. More...
 
void t4_tx_get_transfer_statistics (t4_tx_state_t *s, t4_stats_t *t)
 Get the current transfer statistics. More...
 
logging_state_tt4_tx_get_logging_state (t4_tx_state_t *s)
 Get the logging context associated with a T.4 transmit context. More...
 
t4_tx_state_tt4_tx_init (t4_tx_state_t *s, const char *file, int start_page, int stop_page)
 Prepare for transmission of a document. More...
 
int t4_tx_release (t4_tx_state_t *s)
 End the transmission of a document. Tidy up and close the file. This should be used to end T.4 transmission started with t4_tx_init. More...
 
int t4_tx_free (t4_tx_state_t *s)
 End the transmission of a document. Tidy up, close the file and free the context. This should be used to end T.4 transmission started with t4_tx_init. More...
 

Typedef Documentation

◆ t4_row_read_handler_t

typedef int(* t4_row_read_handler_t) (void *user_data, uint8_t buf[], size_t len)

This function is a callback from the image decoders, to read the unencoded bi-level image, row by row. It is called for each row, with len set to the number of bytes per row expected.

Returns
len for OK, or zero to indicate the end of the image data.

◆ t4_tx_state_t

typedef struct t4_tx_state_s t4_tx_state_t

T.4 FAX compression/decompression descriptor. This defines the working state for a single instance of a T.4 FAX compression or decompression channel.

Function Documentation

◆ t4_tx_end_page()

int t4_tx_end_page ( t4_tx_state_t s)

Complete the sending of a page.

Parameters
sThe T.4 context.
Returns
zero for success, -1 for failure.

References t4_tx_state_s::current_page.

◆ t4_tx_free()

int t4_tx_free ( t4_tx_state_t s)

End the transmission of a document. Tidy up, close the file and free the context. This should be used to end T.4 transmission started with t4_tx_init.

Parameters
sThe T.4 context.
Returns
0 for success, otherwise -1.

References t4_tx_release().

◆ t4_tx_get()

int t4_tx_get ( t4_tx_state_t s,
uint8_t  buf[],
size_t  max_len 
)

Get the next chunk of the current document page. The document will be padded for the current minimum scan line time.

Parameters
sThe T.4 context.
bufThe buffer into which the chunk is to written.
max_lenThe maximum length of the chunk.
Returns
The actual length of the chunk. If this is less than max_len it indicates that the end of the document has been reached.

◆ t4_tx_get_bit()

int t4_tx_get_bit ( t4_tx_state_t s)

Get the next bit of the current document page. The document will be padded for the current minimum scan line time.

Parameters
sThe T.4 context.
Returns
The next bit (i.e. 0 or 1). SIG_STATUS_END_OF_DATA for no more data.

References SIG_STATUS_END_OF_DATA, and t4_t6_encode_get_bit().

◆ t4_tx_get_current_page_in_file()

int t4_tx_get_current_page_in_file ( t4_tx_state_t s)

Get the currnet page number in the file.

Parameters
sThe T.4 context.
Returns
The page number, or -1 if there is an error.

References t4_tx_state_s::current_page.

◆ t4_tx_get_logging_state()

logging_state_t* t4_tx_get_logging_state ( t4_tx_state_t s)

Get the logging context associated with a T.4 transmit context.

Get the logging context associated with a T.4 transmit context.

Parameters
sThe T.4 transmit context.
Returns
A pointer to the logging context

References t4_tx_state_s::logging.

◆ t4_tx_get_pages_in_file()

int t4_tx_get_pages_in_file ( t4_tx_state_t s)

Get the number of pages in the file.

Parameters
sThe T.4 context.
Returns
The number of pages, or -1 if there is an error.

References t4_tx_tiff_state_t::file, and t4_tx_state_s::tiff.

◆ t4_tx_get_transfer_statistics()

◆ t4_tx_get_tx_compression()

int t4_tx_get_tx_compression ( t4_tx_state_t s)

Get the compression for the encoded data.

Parameters
sThe T.4 context.
Returns
the chosen compression for success, otherwise -1.

References t4_tx_metadata_t::compression, and t4_tx_state_s::metadata.

◆ t4_tx_get_tx_image_type()

int t4_tx_get_tx_image_type ( t4_tx_state_t s)

Get the image type of the encoded data.

Parameters
sThe T.4 context.
Returns
the chosen image type for success, otherwise -1.

References t4_tx_metadata_t::image_type, and t4_tx_state_s::metadata.

◆ t4_tx_get_tx_image_width()

int t4_tx_get_tx_image_width ( t4_tx_state_t s)

Get the width of the encoded data.

Parameters
sThe T.4 context.
Returns
the width, in pixels, for success, otherwise -1.

References t4_tx_metadata_t::image_width, and t4_tx_state_s::metadata.

◆ t4_tx_get_tx_image_width_code()

int t4_tx_get_tx_image_width_code ( t4_tx_state_t s)

Get the width code of the encoded data.

Parameters
sThe T.4 context.
Returns
the width code, for success, otherwise -1.

References t4_tx_state_s::metadata, and t4_tx_metadata_t::width_code.

◆ t4_tx_get_tx_resolution()

int t4_tx_get_tx_resolution ( t4_tx_state_t s)

Get the X and Y resolution code of the current page.

Parameters
sThe T.4 context.
Returns
The resolution code,.

References t4_tx_state_s::metadata, and t4_tx_metadata_t::resolution_code.

◆ t4_tx_get_tx_x_resolution()

int t4_tx_get_tx_x_resolution ( t4_tx_state_t s)

Get the column-to-column (x) resolution of the current page.

Parameters
sThe T.4 context.
Returns
The resolution, in pixels per metre.

References t4_tx_state_s::metadata, and t4_tx_metadata_t::x_resolution.

◆ t4_tx_get_tx_y_resolution()

int t4_tx_get_tx_y_resolution ( t4_tx_state_t s)

Get the row-to-row (y) resolution of the current page.

Parameters
sThe T.4 context.
Returns
The resolution, in pixels per metre.

References t4_tx_state_s::metadata, and t4_tx_metadata_t::y_resolution.

◆ t4_tx_image_complete()

int t4_tx_image_complete ( t4_tx_state_t s)

Return the next bit of the current document page, without actually moving forward in the buffer. The document will be padded for the current minimum scan line time.

Parameters
sThe T.4 context.
Returns
0 for more data to come. SIG_STATUS_END_OF_DATA for no more data.

References t4_tx_metadata_t::compression, t4_tx_state_s::metadata, SIG_STATUS_END_OF_DATA, t42_encode_image_complete(), t43_encode_image_complete(), T4_COMPRESSION_SYCC_T81, T4_COMPRESSION_T42_T81, T4_COMPRESSION_T43, T4_COMPRESSION_T45, T4_COMPRESSION_T4_1D, T4_COMPRESSION_T4_2D, T4_COMPRESSION_T6, T4_COMPRESSION_T85, T4_COMPRESSION_T85_L0, T4_COMPRESSION_T88, t4_t6_encode_image_complete(), and t85_encode_image_complete().

◆ t4_tx_init()

t4_tx_state_t* t4_tx_init ( t4_tx_state_t s,
const char *  file,
int  start_page,
int  stop_page 
)

Prepare for transmission of a document.

Parameters
sThe T.4 context.
fileThe name of the file to be sent.
start_pageThe first page to send. -1 for no restriction.
stop_pageThe last page to send. -1 for no restriction.
Returns
A pointer to the context, or NULL if there was a problem.

◆ t4_tx_next_page_has_different_format()

int t4_tx_next_page_has_different_format ( t4_tx_state_t s)

Check for the existance of the next page, and whether its format is like the current one. This information can be needed before it is determined that the current page is finished with.

Parameters
sThe T.4 context.
Returns
0 for next page found with the same format as the current page. 1 for next page found with different format from the current page. -1 for no page found, or file failure.

References t4_tx_state_s::logging, and span_log().

◆ t4_tx_release()

int t4_tx_release ( t4_tx_state_t s)

End the transmission of a document. Tidy up and close the file. This should be used to end T.4 transmission started with t4_tx_init.

Parameters
sThe T.4 context.
Returns
0 for success, otherwise -1.

References t4_tx_tiff_state_t::file, and t4_tx_state_s::tiff.

Referenced by t4_tx_free().

◆ t4_tx_restart_page()

int t4_tx_restart_page ( t4_tx_state_t s)

Prepare the current page for a resend.

Parameters
sThe T.4 context.
Returns
zero for success, -1 for failure.

References t4_tx_start_page().

◆ t4_tx_set_header_info()

void t4_tx_set_header_info ( t4_tx_state_t s,
const char *  info 
)

Set the header info.

Set the info field, included in the header line included in each page of an encoded FAX. This is a string of up to 50 characters. Other information (date, local ident, etc.) are automatically included in the header. If the header info is set to NULL or a zero length string, no header lines will be added to the encoded FAX.

Parameters
sThe T.4 context.
infoA string, of up to 50 bytes, which will form the info field.

References t4_tx_state_s::header_info.

◆ t4_tx_set_header_overlays_image()

void t4_tx_set_header_overlays_image ( t4_tx_state_t s,
bool  header_overlays_image 
)

Set page header overlay mode.

Set page header extends or overlays the image mode.

Parameters
sThe T.4 context.
header_overlays_imageTrue for overlay, or false to extend the page.

References t4_tx_state_s::header_overlays_image.

Referenced by t30_set_tx_page_header_overlays_image().

◆ t4_tx_set_header_tz()

void t4_tx_set_header_tz ( t4_tx_state_t s,
tz_t tz 
)

Set the header timezone.

Set the time zone for the time stamp in page header lines. If this function is not used the current time zone of the program's environment is used.

Parameters
sThe T.4 context.
tzA time zone descriptor.

References t4_tx_state_s::tz.

◆ t4_tx_set_local_ident()

void t4_tx_set_local_ident ( t4_tx_state_t s,
const char *  ident 
)

Set the identity of the local machine, for inclusion in page headers.

Parameters
sThe T.4 context.
identThe identity string.

References t4_tx_state_s::local_ident.

◆ t4_tx_set_max_2d_rows_per_1d_row()

void t4_tx_set_max_2d_rows_per_1d_row ( t4_tx_state_t s,
int  max 
)

Set the maximum number of 2D encoded rows between 1D encoded rows. This is only valid for T.4 2D encoding.

Parameters
sThe T.4 context.
maxThe maximum number of 2D rows.

References t4_tx_metadata_t::compression, t4_tx_state_s::metadata, T4_COMPRESSION_T4_1D, T4_COMPRESSION_T4_2D, T4_COMPRESSION_T6, and t4_t6_encode_set_max_2d_rows_per_1d_row().

◆ t4_tx_set_min_bits_per_row()

void t4_tx_set_min_bits_per_row ( t4_tx_state_t s,
int  bits 
)

Set the minimum number of encoded bits per row. This allows the makes the encoding process to be set to comply with the minimum row time specified by a remote receiving machine.

Parameters
sThe T.4 context.
bitsThe minimum number of bits per row.

◆ t4_tx_set_row_read_handler()

int t4_tx_set_row_read_handler ( t4_tx_state_t s,
t4_row_read_handler_t  handler,
void *  user_data 
)

Set the row read handler for a T.4 transmit context.

Parameters
sThe T.4 transmit context.
handlerA pointer to the handler routine.
user_dataAn opaque pointer passed to the handler routine.
Returns
0 for success, otherwise -1.

References t4_tx_state_s::row_handler, and t4_tx_state_s::row_handler_user_data.

◆ t4_tx_set_tx_image_format()

int t4_tx_set_tx_image_format ( t4_tx_state_t s,
int  supported_compressions,
int  supported_image_sizes,
int  supported_bilevel_resolutions,
int  supported_colour_resolutions 
)

Auto-select the format in which to send the image.

Parameters
sThe T.4 context.
supported_compressionsThe set of compressions supported for this transmission
supported_image_sizesThe set of image sizes supported for this transmission
supported_bilevel_resolutionsThe set of bi-level resolutions supported for this transmission
supported_colour_resolutionsThe set of gray scale and colour resolutions supported for this transmission
Returns
A t4_image_format_status_t result code

◆ t4_tx_start_page()

int t4_tx_start_page ( t4_tx_state_t s)

Prepare to send the next page of the current document.

Parameters
sThe T.4 context.
Returns
zero for success, -1 for failure.

References t4_tx_state_s::logging, and span_log().

Referenced by t4_tx_restart_page().