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 <tgmath.h>
#include <math.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

 SPAN_DECLARE_NONSTD (int)
 Get the next bit of a transmitted serial bit stream.
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_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_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.
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.
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.
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)

Detailed Description


Function Documentation

SPAN_DECLARE_NONSTD ( int   ) 

Get the next bit of a transmitted serial bit stream.

Get the next bit of data from a T.38 rate adapting non-ECM buffer context.

Get a bit of received non-ECM image data.

Get the next bit of a transmitted serial bit stream.

Parameters:
user_data An opaque point which must point to a transmitter context.
Returns:
the next bit, or PUTBIT_END_OF_DATA to indicate the data stream has ended.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.8 audio samples.

Generate a block of V.22bis modem audio samples.

Process a block of received V.18 audio samples.

Dummy receive fillin callback.

Dummy receive callback.

Process a block of samples through an instance of the modem connect tones detector.

Get the next sequence of bytes for transmission.

Get the next byte for transmission.

Process a block of received FSK modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples in the buffer.
Returns:
The number of samples unprocessed.
Parameters:
s A pointer to an HDLC transmitter context.
Returns:
The next byte for transmission.
Parameters:
s A pointer to an HDLC transmitter context.
buf The buffer for the data.
max_len The number of bytes to get.
Returns:
The number of bytes actually got.
Parameters:
s The context.
amp An array of signal samples.
len The number of samples in the array.
Returns:
The number of unprocessed samples.

A dummy routine to use as a receive callback, when we aren't really trying to process what is received. It just absorbs and ignores the data.

Parameters:
user_data The context.
amp The signal.buffer
len The length of the signal buffer
Returns:
0.

A dummy routine to use as a receive fillin callback, when we aren't really trying to process what is received. It just absorbs and ignores the request.

Parameters:
user_data The context.
len The length of the signal buffer
Returns:
0.

Process a block of received V.18 audio samples.

Parameters:
s The V.18 context.
amp The audio sample buffer.
len The number of samples in the buffer.

Generate a block of V.22bis modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples to be generated.
Returns:
The number of samples actually generated.

Process a block of received V.8 audio samples.

Parameters:
s The V.8 context.
amp The audio sample buffer.
len The number of samples in the buffer.

Get the next bit of a transmitted serial bit stream.

Process a block of received FSK modem audio samples.

Generate a block of FSK modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples to be generated.
Returns:
The number of samples actually generated.

Process a block of received FSK modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples in the buffer.
Returns:
The number of samples unprocessed.

Get the next bit of a transmitted serial bit stream.

Get the next sequence of bytes for transmission.

Get the next byte for transmission.

Parameters:
s A pointer to an HDLC transmitter context.
Returns:
The next bit for transmission.
Parameters:
s A pointer to an HDLC transmitter context.
Returns:
The next byte for transmission.
Parameters:
s A pointer to an HDLC transmitter context.
buf The buffer for the data.
max_len The number of bytes to get.
Returns:
The number of bytes actually got.

Get the next bit of a transmitted serial bit stream.

Process a block of samples through an instance of the modem connect tones detector.

Parameters:
s The context.
amp An array of signal samples.
len The number of samples to generate.
Returns:
The number of samples generated.
Parameters:
s The context.
amp An array of signal samples.
len The number of samples in the array.
Returns:
The number of unprocessed samples.

Get the next bit of a transmitted serial bit stream.

Dummy receive fillin callback.

Dummy receive callback.

Generate a block of silent audio samples.

Parameters:
s The silence generator context.
amp The audio sample buffer.
max_len The number of samples to be generated.
Returns:
The number of samples actually generated. This will be zero when there is nothing to send.

A dummy routine to use as a receive callback, when we aren't really trying to process what is received. It just absorbs and ignores the data.

Parameters:
user_data The context.
amp The signal.buffer
len The length of the signal buffer
Returns:
0.

A dummy routine to use as a receive fillin callback, when we aren't really trying to process what is received. It just absorbs and ignores the request.

Parameters:
user_data The context.
len The length of the signal buffer
Returns:
0.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.17 modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples in the buffer.
Returns:
The number of samples unprocessed.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.17 modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples to be generated.
Returns:
The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.18 audio samples.

Generate a block of V.18 audio samples.

Parameters:
s The V.18 context.
amp The audio sample buffer.
max_len The number of samples to be generated.
Returns:
The number of samples actually generated.

Process a block of received V.18 audio samples.

Parameters:
s The V.18 context.
amp The audio sample buffer.
len The number of samples in the buffer.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.22bis modem audio samples.

Process a block of received V.22bis modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples in the buffer.
Returns:
The number of samples unprocessed.

Generate a block of V.22bis modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples to be generated.
Returns:
The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.27ter modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples in the buffer.
Returns:
The number of samples unprocessed.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.27ter modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples to be generated.
Returns:
The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.29 modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples in the buffer.
Returns:
The number of samples unprocessed.

Get the next bit of a transmitted serial bit stream.

Generate a block of V.29 modem audio samples.

Parameters:
s The modem context.
amp The audio sample buffer.
len The number of samples to be generated.
Returns:
The number of samples actually generated.

Get the next bit of a transmitted serial bit stream.

Process a block of received V.8 audio samples.

Generate a block of V.8 audio samples.

Parameters:
s The V.8 context.
amp The audio sample buffer.
max_len The number of samples to be generated.
Returns:
The number of samples actually generated.

Process a block of received V.8 audio samples.

Parameters:
s The V.8 context.
amp The audio sample buffer.
len The number of samples in the buffer.

References t38_non_ecm_buffer_state_s::bit_no, t38_non_ecm_buffer_state_s::data, t38_non_ecm_buffer_state_s::data_finished, t38_non_ecm_buffer_state_s::flow_control_fill_octet, t38_non_ecm_buffer_state_s::flow_control_fill_octets, t38_non_ecm_buffer_state_s::latest_eol_ptr, t38_non_ecm_buffer_state_s::octet, t38_non_ecm_buffer_state_s::out_octets, t38_non_ecm_buffer_state_s::out_ptr, SIG_STATUS_END_OF_DATA, and T38_NON_ECM_TX_BUF_LEN.

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:
s The buffer context.
mode TRUE for image data mode, or FALSE for TCF mode.
bits The minimum number of bits per FAX image row.
Returns:
A pointer to the buffer context, or NULL if there was a problem.

Referenced by t38_gateway_init().

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:
s The buffer context.
buf The data buffer to be injected.
len The length of the data to be injected.

References T38_NON_ECM_TX_BUF_LEN.

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:
s The buffer context.
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:
s The buffer context.
logging The logging context.

References span_log().

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:
s The buffer context.
logging The logging context.

References span_log().

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:
s The buffer context.
mode TRUE for image data mode, or FALSE for TCF mode.
bits The minimum number of bits per FAX image row.

Generated on 14 Jul 2011 for spandsp by  doxygen 1.6.1