spandsp 3.0.0
t38_non_ecm_buffer.h File Reference

Go to the source code of this file.

Macros

#define T38_NON_ECM_TX_BUF_LEN   16384
 

Typedefs

typedef struct t38_non_ecm_buffer_state_s t38_non_ecm_buffer_state_t
 A flow controlled non-ECM image data buffer, for buffering T.38 to analogue modem data.
 

Functions

t38_non_ecm_buffer_state_tt38_non_ecm_buffer_init (t38_non_ecm_buffer_state_t *s, bool image_mode, int min_row_bits)
 Initialise a T.38 rate adapting non-ECM buffer context.
 
int t38_non_ecm_buffer_release (t38_non_ecm_buffer_state_t *s)
 
int t38_non_ecm_buffer_free (t38_non_ecm_buffer_state_t *s)
 
void t38_non_ecm_buffer_set_mode (t38_non_ecm_buffer_state_t *s, bool image_mode, int min_row_bits)
 Set the mode of a T.38 rate adapting non-ECM buffer context.
 
void t38_non_ecm_buffer_inject (t38_non_ecm_buffer_state_t *s, const uint8_t *buf, int len)
 Inject data to T.38 rate adapting non-ECM buffer context.
 
void t38_non_ecm_buffer_push (t38_non_ecm_buffer_state_t *s)
 Inform a T.38 rate adapting non-ECM buffer context that the incoming data has finished, and the contents of the buffer should be played out as quickly as possible.
 
void t38_non_ecm_buffer_report_input_status (t38_non_ecm_buffer_state_t *s, logging_state_t *logging)
 Report the input status of a T.38 rate adapting non-ECM buffer context to the specified logging context.
 
void t38_non_ecm_buffer_report_output_status (t38_non_ecm_buffer_state_t *s, logging_state_t *logging)
 Report the output status of a T.38 rate adapting non-ECM buffer context to the specified logging context.
 
int t38_non_ecm_buffer_get_bit (void *user_data)
 Get the next bit of data from a T.38 rate adapting non-ECM buffer context.
 

Macro Definition Documentation

◆ T38_NON_ECM_TX_BUF_LEN

#define T38_NON_ECM_TX_BUF_LEN   16384

The buffer length much be a power of two. The chosen length is big enough for over 9s of data at the V.17 14,400bps rate.

Referenced by t38_non_ecm_buffer_get_bit(), and t38_non_ecm_buffer_inject().

Function Documentation

◆ t38_non_ecm_buffer_get_bit()

int t38_non_ecm_buffer_get_bit ( void * user_data)

◆ t38_non_ecm_buffer_init()

t38_non_ecm_buffer_state_t * t38_non_ecm_buffer_init ( t38_non_ecm_buffer_state_t * s,
bool image_mode,
int min_row_bits )

Initialise a T.38 rate adapting non-ECM buffer context.

Parameters
sThe buffer context.
image_modeTrue for image data mode, or false for TCF mode.
bitsThe minimum number of bits per FAX image row.
Returns
A pointer to the buffer context, or NULL if there was a problem.

References t38_non_ecm_buffer_state_s::image_data_mode, and t38_non_ecm_buffer_state_s::min_bits_per_row.

Referenced by t38_gateway_init().

◆ t38_non_ecm_buffer_inject()

◆ t38_non_ecm_buffer_push()

void t38_non_ecm_buffer_push ( t38_non_ecm_buffer_state_t * s)

Inform a T.38 rate adapting non-ECM buffer context that the incoming data has finished, and the contents of the buffer should be played out as quickly as possible.

Parameters
sThe buffer context.

References t38_non_ecm_buffer_state_s::data_finished, t38_non_ecm_buffer_state_s::in_ptr, and t38_non_ecm_buffer_state_s::latest_eol_ptr.

◆ t38_non_ecm_buffer_report_input_status()

void t38_non_ecm_buffer_report_input_status ( t38_non_ecm_buffer_state_t * s,
logging_state_t * logging )

Report the input status of a T.38 rate adapting non-ECM buffer context to the specified logging context.

Parameters
sThe buffer context.
loggingThe logging context.

References t38_non_ecm_buffer_state_s::in_octets, t38_non_ecm_buffer_state_s::in_rows, t38_non_ecm_buffer_state_s::min_row_bits_fill_octets, and span_log().

◆ t38_non_ecm_buffer_report_output_status()

void t38_non_ecm_buffer_report_output_status ( t38_non_ecm_buffer_state_t * s,
logging_state_t * logging )

Report the output status of a T.38 rate adapting non-ECM buffer context to the specified logging context.

Parameters
sThe buffer context.
loggingThe logging context.

References t38_non_ecm_buffer_state_s::flow_control_fill_octets, t38_non_ecm_buffer_state_s::out_octets, t38_non_ecm_buffer_state_s::out_rows, and span_log().

◆ t38_non_ecm_buffer_set_mode()

void t38_non_ecm_buffer_set_mode ( t38_non_ecm_buffer_state_t * s,
bool image_mode,
int min_row_bits )

Set the mode of a T.38 rate adapting non-ECM buffer context.

Parameters
sThe buffer context.
modeTrue for image data mode, or false for TCF mode.
bitsThe minimum number of bits per FAX image row.

References t38_non_ecm_buffer_state_s::image_data_mode, and t38_non_ecm_buffer_state_s::min_bits_per_row.