spandsp 0.0.6
t38_non_ecm_buffer.c File Reference
#include <inttypes.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <time.h>
#include <string.h>
#include "floating_fudge.h"
#include <assert.h>
#include "spandsp/telephony.h"
#include "spandsp/logging.h"
#include "spandsp/queue.h"
#include "spandsp/dc_restore.h"
#include "spandsp/bit_operations.h"
#include "spandsp/async.h"
#include "spandsp/t38_non_ecm_buffer.h"
#include "spandsp/private/t38_non_ecm_buffer.h"

Enumerations

enum  { TCF_AT_INITIAL_ALL_ONES = 0 , TCF_AT_ALL_ZEROS = 1 , IMAGE_WAITING_FOR_FIRST_EOL = 2 , IMAGE_IN_PROGRESS = 3 }
 

Functions

int t38_non_ecm_buffer_get_bit (void *user_data)
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
void t38_non_ecm_buffer_set_mode (t38_non_ecm_buffer_state_t *s, int mode, int min_bits_per_row)
 Set the mode of a T.38 rate adapting non-ECM buffer context. More...
 
t38_non_ecm_buffer_state_tt38_non_ecm_buffer_init (t38_non_ecm_buffer_state_t *s, int mode, int min_bits_per_row)
 Initialise a T.38 rate adapting non-ECM buffer context. More...
 
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)
 

Function Documentation

◆ t38_non_ecm_buffer_init()

t38_non_ecm_buffer_state_t * t38_non_ecm_buffer_init ( t38_non_ecm_buffer_state_t s,
int  mode,
int  min_row_bits 
)

Initialise 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.
Returns
A pointer to the buffer context, or NULL if there was a problem.

◆ t38_non_ecm_buffer_inject()

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.

Parameters
sThe buffer context.
bufThe data buffer to be injected.
lenThe length of the data to be injected.

◆ 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::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, and span_log().

◆ t38_non_ecm_buffer_set_mode()

void t38_non_ecm_buffer_set_mode ( t38_non_ecm_buffer_state_t s,
int  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.