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_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.
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, int 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.
| SPAN_DECLARE_NONSTD (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_inject().

## Function Documentation

## SPAN_DECLARE_NONSTD()

SPAN_DECLARE_NONSTD | ( | int |  | ) |

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

Parameters

  user_data | The buffer context, cast to a void pointer.

Returns
  The next bit, or one of the values indicating a change of modem status.

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.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

Apply T.30 receive processing to a block of audio samples.

Parameters

  s | The FAX context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The FAX context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters

  s | The FAX 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.

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.

Process a block of received V.8 audio samples.

Fake processing of a missing block of received V.29 modem audio samples.

Fake processing of a missing block of received V.27ter modem audio samples.

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

Fake processing of a missing block of received V.22bis modem audio samples.

Process a block of received V.18 audio samples.

Fake processing of a missing block of received V.17 modem audio samples.

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a received T.38 IFP packet from a reliable stream (e.g. TCP).

Generate a block of T.31 modem audio samples.

Fake processing of a missing block of received T.31 modem 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.

Fake processing of a missing block of received FSK modem audio samples.

Process a block of received FSK modem audio samples.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

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.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The FAX context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters

  s | The FAX 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.

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.

Fake processing of a missing block of received FSK modem audio samples (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

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.

Fake processing of a missing block of received T.31 modem audio samples (e.g due to packet loss).

Parameters

  s | The T.31 modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Generate a block of T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number, used for logging purposes.

Returns
  The length of the packet processed, or -1 if there is an error in the packet, or too few bytes of data to complete it.

Apply fake processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The T.38 context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Generate a block of FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Fake processing of a missing block of received V.17 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

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.

Fake processing of a missing block of received V.22bis modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

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.

Fake processing of a missing block of received V.27ter modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received V.29 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

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.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

Apply T.30 receive processing to a block of audio samples.

Parameters

  s | The FAX context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The FAX context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters

  s | The FAX 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.

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.

Fake processing of a missing block of received FSK modem audio samples.

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.

Fake processing of a missing block of received FSK modem audio samples (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

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.

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 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.

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 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.

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 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.

Generate a block of T.31 modem audio samples.

Fake processing of a missing block of received T.31 modem audio samples.

Process a block of received T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received T.31 modem audio samples (e.g due to packet loss).

Parameters

  s | The T.31 modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Generate a block of T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

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.

Process a received T.38 IFP packet from a reliable stream (e.g. TCP).

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number.

Returns
  0 for OK, else -1.

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number, used for logging purposes.

Returns
  The length of the packet processed, or -1 if there is an error in the packet, or too few bytes of data to complete it.

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.

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a block of received FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Apply fake processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The T.38 context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Generate a block of FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

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.

Process a block of received V.8 audio samples.

Fake processing of a missing block of received V.29 modem audio samples.

Fake processing of a missing block of received V.27ter modem audio samples.

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

Fake processing of a missing block of received V.22bis modem audio samples.

Process a block of received V.18 audio samples.

Fake processing of a missing block of received V.17 modem audio samples.

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a received T.38 IFP packet from a reliable stream (e.g. TCP).

Generate a block of T.31 modem audio samples.

Fake processing of a missing block of received T.31 modem 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.

Fake processing of a missing block of received FSK modem audio samples.

Process a block of received FSK modem audio samples.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

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.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The FAX context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters

  s | The FAX 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.

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.

Fake processing of a missing block of received FSK modem audio samples (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

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.

Fake processing of a missing block of received T.31 modem audio samples (e.g due to packet loss).

Parameters

  s | The T.31 modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Generate a block of T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number, used for logging purposes.

Returns
  The length of the packet processed, or -1 if there is an error in the packet, or too few bytes of data to complete it.

Apply fake processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The T.38 context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Generate a block of FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

Fake processing of a missing block of received V.17 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

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.

Fake processing of a missing block of received V.22bis modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

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.

Fake processing of a missing block of received V.27ter modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received V.29 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

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.

Apply T.30 transmit processing to generate a block of audio samples.

Apply fake T.30 receive processing.

Apply T.30 receive processing to a block of audio samples.

Parameters

  s | The FAX context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply fake T.30 receive processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The FAX context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Apply T.30 transmit processing to generate a block of audio samples.

Parameters

  s | The FAX 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.

Get the next bit of a transmitted serial bit stream.

Fake processing of a missing block of received FSK modem audio samples.

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.

Fake processing of a missing block of received FSK modem audio samples (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

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.

Generate a block of T.31 modem audio samples.

Fake processing of a missing block of received T.31 modem audio samples.

Process a block of received T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Fake processing of a missing block of received T.31 modem audio samples (e.g due to packet loss).

Parameters

  s | The T.31 modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

Generate a block of T.31 modem audio samples.

Parameters

  s | The T.31 modem context.
  amp | The audio sample buffer.
  max_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 received T.38 IFP packet from a reliable stream (e.g. TCP).

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number.

Returns
  0 for OK, else -1.

Parameters

  s | The T.38 context.
  buf | The packet contents.
  len | The length of the packet contents.
  seq_no | The packet sequence number, used for logging purposes.

Returns
  The length of the packet processed, or -1 if there is an error in the packet, or too few bytes of data to complete it.

Get the next bit of a transmitted serial bit stream.

Generate a block of FAX audio samples.

Apply fake received audio processing.

Process a block of received FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  len | The number of samples in the buffer.

Returns
  The number of samples unprocessed.

Apply fake processing when a block of audio samples is missing (e.g due to packet loss).

Parameters

  s | The T.38 context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed. This should only be non-zero if the software has reached the end of the FAX call.

Generate a block of FAX audio samples.

Parameters

  s | The T.38 context.
  amp | The audio sample buffer.
  max_len | The number of samples to be generated.

Returns
  The number of samples actually generated.

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.

Fake processing of a missing block of received V.17 modem audio samples.

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.

Fake processing of a missing block of received V.17 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

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.

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 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.

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 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.

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

Fake processing of a missing block of received 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.

Fake processing of a missing block of received V.22bis modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

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 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.

Fake processing of a missing block of received V.27ter modem audio samples.

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.

Fake processing of a missing block of received V.27ter modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

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.

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 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.

Fake processing of a missing block of received V.29 modem audio samples.

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.

Fake processing of a missing block of received V.29 modem audio samples. (e.g due to packet loss).

Parameters

  s | The modem context.
  len | The number of samples to fake.

Returns
  The number of samples unprocessed.

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.

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 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.

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.

## 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

  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.

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()

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_buffer_state_s::bit_stream, t38_non_ecm_buffer_state_s::data, t38_non_ecm_buffer_state_s::flow_control_fill_octet, t38_non_ecm_buffer_state_s::in_octets, t38_non_ecm_buffer_state_s::in_ptr, t38_non_ecm_buffer_state_s::in_rows, t38_non_ecm_buffer_state_s::input_phase, t38_non_ecm_buffer_state_s::latest_eol_ptr, t38_non_ecm_buffer_state_s::min_bits_per_row, t38_non_ecm_buffer_state_s::min_row_bits_fill_octets, t38_non_ecm_buffer_state_s::row_bits, and T38_NON_ECM_TX_BUF_LEN.

## 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

  s | The 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

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

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

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