t4_rx.c File Reference

#include <stdlib.h>
#include <inttypes.h>
#include <limits.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <memory.h>
#include <string.h>
#include <tgmath.h>
#include <math.h>
#include "floating_fudge.h"
#include <tiffio.h>
#include "spandsp/telephony.h"
#include "spandsp/logging.h"
#include "spandsp/bit_operations.h"
#include "spandsp/async.h"
#include "spandsp/timezone.h"
#include "spandsp/t4_rx.h"
#include "spandsp/t4_tx.h"
#include "spandsp/t4_t6_decode.h"
#include "spandsp/t4_t6_encode.h"
#include "spandsp/version.h"
#include "spandsp/private/logging.h"
#include "spandsp/private/t4_t6_decode.h"
#include "spandsp/private/t4_t6_encode.h"
#include "spandsp/private/t4_rx.h"
#include "spandsp/private/t4_tx.h"
#include "t4_t6_decode_states.h"

Defines

#define CM_PER_INCH   2.54f
#define EOLS_TO_END_ANY_RX_PAGE   6
#define EOLS_TO_END_T4_RX_PAGE   5
#define EOLS_TO_END_T6_RX_PAGE   2
#define STATE_TRACE(...)

Functions

int t4_rx_end_page (t4_state_t *s)
 Complete the reception of a page.
int t4_rx_put_bit (t4_state_t *s, int bit)
 Put a bit of the current document page.
int t4_rx_put_byte (t4_state_t *s, uint8_t byte)
 Put a byte of the current document page.
int t4_rx_put_chunk (t4_state_t *s, const uint8_t buf[], int len)
 Put a byte of the current document page.
int t4_rx_set_row_write_handler (t4_state_t *s, t4_row_write_handler_t handler, void *user_data)
 Set the row write handler for a T.4 receive context.
t4_state_tt4_rx_init (t4_state_t *s, const char *file, int output_encoding)
 Prepare for reception of a document.
int t4_rx_start_page (t4_state_t *s)
 Prepare to receive the next page of the current document.
int t4_rx_release (t4_state_t *s)
 End reception of a document. Tidy up and close the file. This should be used to end T.4 reception started with t4_rx_init.
int t4_rx_free (t4_state_t *s)
 End reception of a document. Tidy up, close the file and free the context. This should be used to end T.4 reception started with t4_rx_init.
void t4_rx_set_rx_encoding (t4_state_t *s, int encoding)
 Set the encoding for the received data.
void t4_rx_set_image_width (t4_state_t *s, int width)
 Set the expected width of the received image, in pixel columns.
void t4_rx_set_y_resolution (t4_state_t *s, int resolution)
 Set the row-to-row (y) resolution to expect for a received image.
void t4_rx_set_x_resolution (t4_state_t *s, int resolution)
 Set the column-to-column (x) resolution to expect for a received image.
void t4_rx_set_dcs (t4_state_t *s, const char *dcs)
 Set the DCS information of the fax, for inclusion in the file.
void t4_rx_set_sub_address (t4_state_t *s, const char *sub_address)
 Set the sub-address of the fax, for inclusion in the file.
void t4_rx_set_far_ident (t4_state_t *s, const char *ident)
 Set the identity of the remote machine, for inclusion in the file.
void t4_rx_set_vendor (t4_state_t *s, const char *vendor)
 Set the vendor of the remote machine, for inclusion in the file.
void t4_rx_set_model (t4_state_t *s, const char *model)
 Set the model of the remote machine, for inclusion in the file.
void t4_rx_get_transfer_statistics (t4_state_t *s, t4_stats_t *t)
 Get the current transfer statistics.
const char * t4_encoding_to_str (int encoding)
 Get the short text name of an encoding format.

Detailed Description


Define Documentation

#define CM_PER_INCH   2.54f

The number of centimetres in one inch

#define EOLS_TO_END_ANY_RX_PAGE   6

The number of EOLs to expect at the end of a T.4 page

Referenced by t4_rx_end_page().

#define EOLS_TO_END_T4_RX_PAGE   5

The number of EOLs to check at the end of a T.4 page

#define EOLS_TO_END_T6_RX_PAGE   2

The number of EOLs to check at the end of a T.6 page


Function Documentation

const char* t4_encoding_to_str ( int  encoding  ) 

Get the short text name of an encoding format.

Get the short text name of an encoding format.

Parameters:
encoding The encoding type.
Returns:
A pointer to the string.

References T4_COMPRESSION_ITU_SYCC_T42, T4_COMPRESSION_ITU_T42, T4_COMPRESSION_ITU_T43, T4_COMPRESSION_ITU_T45, T4_COMPRESSION_ITU_T4_1D, T4_COMPRESSION_ITU_T4_2D, T4_COMPRESSION_ITU_T6, T4_COMPRESSION_ITU_T85, T4_COMPRESSION_ITU_T85_L0, and T4_COMPRESSION_NONE.

int t4_rx_end_page ( t4_state_t s  ) 

Complete the reception of a page.

Parameters:
s The T.4 receive context.
Returns:
0 for success, otherwise -1.

References EOLS_TO_END_ANY_RX_PAGE, span_log(), T4_COMPRESSION_ITU_T6, and t4_rx_put_bit().

int t4_rx_free ( t4_state_t s  ) 

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

Parameters:
s The T.4 receive context.
Returns:
0 for success, otherwise -1.

References t4_rx_release().

void t4_rx_get_transfer_statistics ( t4_state_t s,
t4_stats_t t 
)

Get the current transfer statistics.

Get the current image transfer statistics.

Parameters:
s The T.4 context.
t A pointer to a statistics structure.

Referenced by t30_get_transfer_statistics().

t4_state_t* t4_rx_init ( t4_state_t s,
const char *  file,
int  output_encoding 
)

Prepare for reception of a document.

Parameters:
s The T.4 context.
file The name of the file to be received.
output_encoding The output encoding.
Returns:
A pointer to the context, or NULL if there was a problem.

References span_log(), T4_COMPRESSION_ITU_T4_1D, T4_COMPRESSION_ITU_T4_2D, and T4_COMPRESSION_ITU_T6.

int t4_rx_put_bit ( t4_state_t s,
int  bit 
)

Put a bit of the current document page.

Parameters:
s The T.4 context.
bit The data bit.
Returns:
TRUE when the bit ends the document page, otherwise FALSE.

Referenced by t4_rx_end_page().

int t4_rx_put_byte ( t4_state_t s,
uint8_t  byte 
)

Put a byte of the current document page.

Parameters:
s The T.4 context.
byte The data byte.
Returns:
TRUE when the byte ends the document page, otherwise FALSE.

Referenced by t30_non_ecm_put_byte().

int t4_rx_put_chunk ( t4_state_t s,
const uint8_t  buf[],
int  len 
)

Put a byte of the current document page.

Parameters:
s The T.4 context.
buf The buffer containing the chunk.
len The length of the chunk.
Returns:
TRUE when the byte ends the document page, otherwise FALSE.

Referenced by t30_non_ecm_put_chunk().

int t4_rx_release ( t4_state_t s  ) 

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

Parameters:
s The T.4 receive context.
Returns:
0 for success, otherwise -1.

Referenced by t4_rx_free().

void t4_rx_set_dcs ( t4_state_t s,
const char *  dcs 
)

Set the DCS information of the fax, for inclusion in the file.

Parameters:
s The T.4 context.
dcs The DCS information, formatted as an ASCII string.
void t4_rx_set_far_ident ( t4_state_t s,
const char *  ident 
)

Set the identity of the remote machine, for inclusion in the file.

Parameters:
s The T.4 context.
ident The identity string.
void t4_rx_set_image_width ( t4_state_t s,
int  width 
)

Set the expected width of the received image, in pixel columns.

Parameters:
s The T.4 context.
width The number of pixels across the image.
void t4_rx_set_model ( t4_state_t s,
const char *  model 
)

Set the model of the remote machine, for inclusion in the file.

Parameters:
s The T.4 context.
model The model string, or NULL.
int t4_rx_set_row_write_handler ( t4_state_t s,
t4_row_write_handler_t  handler,
void *  user_data 
)

Set the row write handler for a T.4 receive context.

Parameters:
s The T.4 receive context.
handler A pointer to the handler routine.
user_data An opaque pointer passed to the handler routine.
Returns:
0 for success, otherwise -1.
void t4_rx_set_rx_encoding ( t4_state_t s,
int  encoding 
)

Set the encoding for the received data.

Parameters:
s The T.4 context.
encoding The encoding.
void t4_rx_set_sub_address ( t4_state_t s,
const char *  sub_address 
)

Set the sub-address of the fax, for inclusion in the file.

Parameters:
s The T.4 context.
sub_address The sub-address string.
void t4_rx_set_vendor ( t4_state_t s,
const char *  vendor 
)

Set the vendor of the remote machine, for inclusion in the file.

Parameters:
s The T.4 context.
vendor The vendor string, or NULL.
void t4_rx_set_x_resolution ( t4_state_t s,
int  resolution 
)

Set the column-to-column (x) resolution to expect for a received image.

Parameters:
s The T.4 context.
resolution The resolution, in pixels per metre.
void t4_rx_set_y_resolution ( t4_state_t s,
int  resolution 
)

Set the row-to-row (y) resolution to expect for a received image.

Parameters:
s The T.4 context.
resolution The resolution, in pixels per metre.
int t4_rx_start_page ( t4_state_t s  ) 

Prepare to receive the next page of the current document.

Parameters:
s The T.4 context.
Returns:
zero for success, -1 for failure.

References span_log(), and T4_COMPRESSION_ITU_T6.


Generated on 18 Oct 2012 for spandsp by  doxygen 1.6.1