spandsp  3.0.0
t85_encode.c File Reference
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "spandsp/stdbool.h"
#include "spandsp/telephony.h"
#include "spandsp/alloc.h"
#include "spandsp/logging.h"
#include "spandsp/async.h"
#include "spandsp/timezone.h"
#include "spandsp/t4_rx.h"
#include "spandsp/t4_tx.h"
#include "spandsp/t81_t82_arith_coding.h"
#include "spandsp/t85.h"
#include "spandsp/private/logging.h"
#include "spandsp/private/t81_t82_arith_coding.h"
#include "spandsp/private/t85.h"

Enumerations

enum  { NEWLEN_NONE = 0 , NEWLEN_PENDING = 1 , NEWLEN_HANDLED = 2 }
 

Functions

void t85_encode_set_options (t85_encode_state_t *s, uint32_t l0, int mx, int options)
 Set the T.85 options. More...
 
int t85_encode_set_image_width (t85_encode_state_t *s, uint32_t image_width)
 Set the image width. More...
 
int t85_encode_set_image_length (t85_encode_state_t *s, uint32_t image_length)
 Alter the length of a T.85 encoded image. The new length cannot be greater than the originally specified length. If the new length is less than the current length it will be silently adjusted to the current length. Therefore, adjust the length to 1 will make the currently encoded length the final length. More...
 
void t85_encode_abort (t85_encode_state_t *s)
 Stop image encoding prematurely. More...
 
void t85_encode_comment (t85_encode_state_t *s, const uint8_t comment[], size_t len)
 Insert a comment in the encoded file. More...
 
int t85_encode_image_complete (t85_encode_state_t *s)
 Check if we are at the end of the current document page. More...
 
int t85_encode_get (t85_encode_state_t *s, uint8_t buf[], size_t max_len)
 Get the next chunk of the current document page. The document will be padded for the current minimum scan line time. More...
 
uint32_t t85_encode_get_image_width (t85_encode_state_t *s)
 Get the width of the image. More...
 
uint32_t t85_encode_get_image_length (t85_encode_state_t *s)
 Get the length of the image. More...
 
int t85_encode_get_compressed_image_size (t85_encode_state_t *s)
 Get the size of the compressed image, in bits. More...
 
int t85_encode_set_row_read_handler (t85_encode_state_t *s, t4_row_read_handler_t handler, void *user_data)
 Set the row read handler for a T.85 encode context. More...
 
logging_state_tt85_encode_get_logging_state (t85_encode_state_t *s)
 Get the logging context associated with a T.85 encode context. More...
 
int t85_encode_restart (t85_encode_state_t *s, uint32_t image_width, uint32_t image_length)
 Restart a T.85 encode context. More...
 
t85_encode_state_tt85_encode_init (t85_encode_state_t *s, uint32_t image_width, uint32_t image_length, t4_row_read_handler_t handler, void *user_data)
 Prepare to encode an image in T.85 format. More...
 
int t85_encode_release (t85_encode_state_t *s)
 Release a T.85 encode context. More...
 
int t85_encode_free (t85_encode_state_t *s)
 Free a T.85 encode context. More...
 

Function Documentation

◆ t85_encode_abort()

void t85_encode_abort ( t85_encode_state_t s)

Stop image encoding prematurely.

Parameters
sThe T.85 context.

◆ t85_encode_comment()

void t85_encode_comment ( t85_encode_state_t s,
const uint8_t  comment[],
size_t  len 
)

Insert a comment in the encoded file.

Parameters
sThe T.85 context.
commentThe comment. Note that this is not a C string, and may contain any bytes.
lenThe length of the comment.

References t85_encode_state_s::comment, and t85_encode_state_s::comment_len.

◆ t85_encode_free()

int t85_encode_free ( t85_encode_state_t s)

Free a T.85 encode context.

Parameters
sThe T.85 encode context.
Returns
0 for OK, else -1.

References t85_encode_release().

◆ t85_encode_get()

int t85_encode_get ( t85_encode_state_t s,
uint8_t  buf[],
size_t  max_len 
)

Get the next chunk of the current document page. The document will be padded for the current minimum scan line time.

Parameters
sThe T.85 context.
bufThe buffer into which the chunk is to written.
max_lenThe maximum length of the chunk.
Returns
The actual length of the chunk. If this is less than max_len it indicates that the end of the document has been reached.

◆ t85_encode_get_compressed_image_size()

int t85_encode_get_compressed_image_size ( t85_encode_state_t s)

Get the size of the compressed image, in bits.

Parameters
sThe T.85 context.
Returns
The size of the compressed image, in bits.

References t85_encode_state_s::compressed_image_size.

Referenced by t4_tx_get_transfer_statistics().

◆ t85_encode_get_image_length()

uint32_t t85_encode_get_image_length ( t85_encode_state_t s)

Get the length of the image.

Parameters
sThe T.85 context.
Returns
The length of the image, in pixels.

References t85_encode_state_s::yd.

Referenced by t4_tx_get_transfer_statistics().

◆ t85_encode_get_image_width()

uint32_t t85_encode_get_image_width ( t85_encode_state_t s)

Get the width of the image.

Parameters
sThe T.85 context.
Returns
The width of the image, in pixels.

References t85_encode_state_s::xd.

Referenced by t4_tx_get_transfer_statistics().

◆ t85_encode_get_logging_state()

logging_state_t* t85_encode_get_logging_state ( t85_encode_state_t s)

Get the logging context associated with a T.85 encode context.

Get the logging context associated with a T.85 encode context.

Parameters
sThe T.85 encode context.
Returns
A pointer to the logging context

References t85_encode_state_s::logging.

◆ t85_encode_image_complete()

int t85_encode_image_complete ( t85_encode_state_t s)

Check if we are at the end of the current document page.

Parameters
sThe T.85 context.
Returns
0 for more data to come. SIG_STATUS_END_OF_DATA for no more data.

References SIG_STATUS_END_OF_DATA, t85_encode_state_s::y, and t85_encode_state_s::yd.

Referenced by t4_tx_image_complete().

◆ t85_encode_init()

t85_encode_state_t* t85_encode_init ( t85_encode_state_t s,
uint32_t  image_width,
uint32_t  image_length,
t4_row_read_handler_t  handler,
void *  user_data 
)

Prepare to encode an image in T.85 format.

Parameters
sThe T.85 context.
image_widthThe image width, in pixels.
image_lengthThe image length, in pixels.
handlerA callback routine to handle encoded image rows.
user_dataAn opaque pointer passed to handler.
Returns
A pointer to the context, or NULL if there was a problem.

◆ t85_encode_release()

int t85_encode_release ( t85_encode_state_t s)

Release a T.85 encode context.

Parameters
sThe T.85 encode context.
Returns
0 for OK, else -1.

References t85_encode_state_s::row_buf.

Referenced by t43_encode_free(), t43_encode_release(), and t85_encode_free().

◆ t85_encode_restart()

int t85_encode_restart ( t85_encode_state_t s,
uint32_t  image_width,
uint32_t  image_length 
)

Restart a T.85 encode context.

Parameters
sThe T.85 context.
image_widthThe image width, in pixels.
image_lengthThe image length, in pixels.
Returns
0 for success, otherwise -1.

References t85_encode_state_s::comment, t85_encode_state_s::row_buf, t85_encode_set_image_width(), t85_encode_state_s::xd, and t85_encode_state_s::yd.

◆ t85_encode_set_image_length()

int t85_encode_set_image_length ( t85_encode_state_t s,
uint32_t  image_length 
)

Alter the length of a T.85 encoded image. The new length cannot be greater than the originally specified length. If the new length is less than the current length it will be silently adjusted to the current length. Therefore, adjust the length to 1 will make the currently encoded length the final length.

Parameters
sThe T.85 context.
image_lengthThe new image length, in pixels.
Returns
0 if OK, or -1 if the request was not valid.

References t85_encode_state_s::newlen, t85_encode_state_s::options, and T85_VLENGTH.

◆ t85_encode_set_image_width()

int t85_encode_set_image_width ( t85_encode_state_t s,
uint32_t  image_width 
)

Set the image width.

Parameters
sThe T.85 context.
image_widthThe width of the image.
Returns
0 for success, otherwise -1.

References t85_encode_state_s::xd, and t85_encode_state_s::y.

Referenced by t85_encode_restart().

◆ t85_encode_set_options()

void t85_encode_set_options ( t85_encode_state_t s,
uint32_t  l0,
int  mx,
int  options 
)

Set the T.85 options.

Parameters
sThe T.85 context.

l0 ???

mx ???

options ???.

References t85_encode_state_s::l0, t85_encode_state_s::mx, t85_encode_state_s::options, T85_LRLTWO, T85_TPBON, T85_VLENGTH, and t85_encode_state_s::y.

◆ t85_encode_set_row_read_handler()

int t85_encode_set_row_read_handler ( t85_encode_state_t s,
t4_row_read_handler_t  handler,
void *  user_data 
)

Set the row read handler for a T.85 encode context.

Parameters
sThe T.85 context.
handlerA pointer to the handler routine.
user_dataAn opaque pointer passed to the handler routine.
Returns
0 for success, otherwise -1.

References t85_encode_state_s::row_read_handler, and t85_encode_state_s::row_read_user_data.