@file tcd.h
@brief Implementation of a tile coder/decoder (TCD)
-The functions in TCD.C have for goal to encode or decode each tile independently from
-each other. The functions in TCD.C are used by some function in J2K.C.
+The functions in TCD.C encode or decode each tile independently from
+each other. The functions in TCD.C are used by other functions in J2K.C.
*/
/** @defgroup TCD TCD - Implementation of a tile coder/decoder */
/**
FIXME: documentation
*/
-//typedef struct opj_tcd_seg {
-// unsigned char** data;
-// int dataindex;
-// int numpasses;
-// int len;
-// int maxpasses;
-// int numnewpasses;
-// int newlen;
-//} opj_tcd_seg_t;
+/*typedef struct opj_tcd_seg { */
+/* unsigned char** data; */
+/* int dataindex; */
+/* int numpasses; */
+/* int len; */
+/* int maxpasses; */
+/* int numnewpasses; */
+/* int newlen; */
+/*} opj_tcd_seg_t; */
/**
FIXME: documentation
typedef struct opj_tcd_cblk_dec {
unsigned char* data; /* Data */
- opj_tcd_seg_t* segs; /* segments informations */
+ opj_tcd_seg_t* segs; /* segments information */
int x0, y0, x1, y1; /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
int numbps;
int numlenbits;
typedef struct opj_tcd_cblk_dec_v2 {
OPJ_BYTE * data; /* Data */
- opj_tcd_seg_t* segs; /* segments informations */
+ opj_tcd_seg_t* segs; /* segments information */
OPJ_INT32 x0, y0, x1, y1; /* dimension of the code-blocks : left upper corner (x0, y0) right low corner (x1,y1) */
OPJ_UINT32 numbps;
OPJ_UINT32 numlenbits;
*/
typedef struct opj_tcd_precinct {
int x0, y0, x1, y1; /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
- int cw, ch; /* number of precinct in width and heigth */
- union{ /* code-blocks informations */
+ int cw, ch; /* number of precinct in width and height */
+ union{ /* code-blocks information */
opj_tcd_cblk_enc_t* enc;
opj_tcd_cblk_dec_t* dec;
} cblks;
typedef struct opj_tcd_precinct_v2 {
OPJ_INT32 x0, y0, x1, y1; /* dimension of the precinct : left upper corner (x0, y0) right low corner (x1,y1) */
- OPJ_UINT32 cw, ch; /* number of precinct in width and heigth */
- union{ /* code-blocks informations */
+ OPJ_UINT32 cw, ch; /* number of precinct in width and height */
+ union{ /* code-blocks information */
opj_tcd_cblk_enc_v2_t* enc;
opj_tcd_cblk_dec_v2_t* dec;
} cblks;
OPJ_UINT32 block_size; /* size taken by cblks (in bytes) */
- struct opj_tgt_tree *incltree; /* inclusion tree */
- struct opj_tgt_tree *imsbtree; /* IMSB tree */
+ opj_tgt_tree_t *incltree; /* inclusion tree */
+ opj_tgt_tree_t *imsbtree; /* IMSB tree */
} opj_tcd_precinct_v2_t;
/**
FIXME: documentation
*/
typedef struct opj_tcd_image {
- int tw, th; /* number of tiles in width and heigth */
+ int tw, th; /* number of tiles in width and height */
opj_tcd_tile_t *tiles; /* Tiles information */
} opj_tcd_image_t;
/** info on each image tile */
opj_tcd_image_v2_t *tcd_image;
/** image header */
- struct opj_image_header *image_header;
+ opj_image_t *image;
/** coding parameters */
struct opj_cp_v2 *cp;
/** coding/decoding parameters common to all tiles */
void tcd_destroy_v2(opj_tcd_v2_t *tcd);
/**
- * Initialize the tile coder and may reuse some meory.
+ * Initialize the tile coder and may reuse some memory.
* @param p_tcd TCD handle.
* @param p_image raw image.
* @param p_cp coding parameters.
- * @param p_tile_no current tile index to encode.
*
* @return true if the encoding values could be set (false otherwise).
*/
-opj_bool tcd_init_v2(
- opj_tcd_v2_t *p_tcd,
- //struct opj_image * p_image,
- opj_image_header_t * p_image_header,
- //struct opj_cp * p_cp
+opj_bool tcd_init_v2( opj_tcd_v2_t *p_tcd,
+ opj_image_t * p_image,
opj_cp_v2_t * p_cp
);
* Allocates memory for decoding a specific tile.
*
* @param p_tcd the tile decoder.
- * @param p_image the image to decode.
- * @param p_cp the decoding parameters.
- * @param p_tile_no the index of the tile received in sequence. This not necesseraly lead to the
+ * @param p_tile_no the index of the tile received in sequence. This not necessarily lead to the
* tile at index p_tile_no.
- * @param p_cstr_info codestream info (if any).
*
- * @return true if the remaining data is sufficient.s
+ * @return true if the remaining data is sufficient.
*/
opj_bool tcd_init_decode_tile(
opj_tcd_v2_t *p_tcd,
*/
void tcd_malloc_decode(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp);
void tcd_malloc_decode_tile(opj_tcd_t *tcd, opj_image_t * image, opj_cp_t * cp, int tileno, opj_codestream_info_t *cstr_info);
+
void tcd_makelayer_fixed(opj_tcd_t *tcd, int layno, int final);
+void tcd_makelayer_fixed_v2(opj_tcd_v2_t *tcd, OPJ_UINT32 layno, OPJ_UINT32 final);
+
void tcd_rateallocate_fixed(opj_tcd_t *tcd);
+void tcd_rateallocate_fixed_v2(opj_tcd_v2_t *tcd);
+
void tcd_makelayer(opj_tcd_t *tcd, int layno, double thresh, int final);
+
+void tcd_makelayer_v2( opj_tcd_v2_t *tcd,
+ OPJ_UINT32 layno,
+ OPJ_FLOAT64 thresh,
+ OPJ_UINT32 final);
+
opj_bool tcd_rateallocate(opj_tcd_t *tcd, unsigned char *dest, int len, opj_codestream_info_t *cstr_info);
+
+opj_bool tcd_rateallocate_v2( opj_tcd_v2_t *tcd,
+ OPJ_BYTE *dest,
+ OPJ_UINT32 * p_data_written,
+ OPJ_UINT32 len,
+ opj_codestream_info_t *cstr_info);
+
/**
Encode a tile from the raw image into a buffer
@param tcd TCD handle
opj_tcd_v2_t *p_tcd
);
+/**
+ * Encodes a tile from the raw image into the given buffer.
+ * @param p_tcd Tile Coder handle
+ * @param p_tile_no Index of the tile to encode.
+ * @param p_dest Destination buffer
+ * @param p_data_written pointer to an int that is incremented by the number of bytes really written on p_dest
+ * @param p_len Maximum length of the destination buffer
+ * @param p_cstr_info Codestream information structure
+ * @return true if the coding is successfull.
+*/
+opj_bool tcd_encode_tile_v2(opj_tcd_v2_t *p_tcd,
+ OPJ_UINT32 p_tile_no,
+ OPJ_BYTE *p_dest,
+ OPJ_UINT32 * p_data_written,
+ OPJ_UINT32 p_len,
+ struct opj_codestream_info *p_cstr_info);
+
+
/**
Decode a tile from a buffer into a raw image
@param tcd TCD handle
/**
* Copies tile data from the system onto the given memory block.
*/
-opj_bool tcd_update_tile_data (
- opj_tcd_v2_t *p_tcd,
- OPJ_BYTE * p_dest,
- OPJ_UINT32 p_dest_length
- );
+opj_bool tcd_update_tile_data ( opj_tcd_v2_t *p_tcd,
+ OPJ_BYTE * p_dest,
+ OPJ_UINT32 p_dest_length );
+
+/**
+ *
+ */
+OPJ_UINT32 tcd_get_encoded_tile_size ( opj_tcd_v2_t *p_tcd );
+
+/**
+ * Initialize the tile coder and may reuse some meory.
+ * @param p_tcd TCD handle.
+ * @param p_image raw image.
+ * @param p_cp coding parameters.
+ * @param p_tile_no current tile index to encode.
+ *
+ * @return true if the encoding values could be set (false otherwise).
+*/
+opj_bool tcd_init_encode_tile ( opj_tcd_v2_t *p_tcd,
+ OPJ_UINT32 p_tile_no );
+
+/**
+ * Copies tile data from the given memory block onto the system.
+ */
+opj_bool tcd_copy_tile_data (opj_tcd_v2_t *p_tcd,
+ OPJ_BYTE * p_src,
+ OPJ_UINT32 p_src_length );
/* ----------------------------------------------------------------------- */
/*@}*/