remove deprecated v1 style function j2k_read_cod
[openjpeg.git] / libopenjpeg / tcd.h
index 30921233e262be7bbfca694dbb79fa43f52873f6..bd2fe69efcd42d2175a19fcb1e3606d2d6491ce9 100644 (file)
@@ -34,8 +34,8 @@
 @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 */
@@ -44,15 +44,15 @@ each other. The functions in TCD.C are used by some function in J2K.C.
 /**
 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
@@ -126,7 +126,7 @@ typedef struct opj_tcd_cblk_enc_v2 {
 
 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;
@@ -138,7 +138,7 @@ typedef struct opj_tcd_cblk_dec {
 
 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;
@@ -154,8 +154,8 @@ FIXME: documentation
 */
 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;
@@ -166,14 +166,14 @@ typedef struct opj_tcd_precinct {
 
 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;
 
 /**
@@ -266,7 +266,7 @@ typedef struct opj_tcd_tile_v2 {
 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;
 
@@ -331,7 +331,7 @@ typedef struct opj_tcd_v2
        /** 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 */
@@ -371,19 +371,15 @@ Destroy a previously created TCD handle
 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
                                        );
 
@@ -391,13 +387,10 @@ opj_bool tcd_init_v2(
  * 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,
@@ -438,10 +431,28 @@ Initialize the tile decoder
 */
 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
@@ -476,6 +487,24 @@ OPJ_UINT32 tcd_get_decoded_tile_size (
                                                 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
@@ -493,11 +522,33 @@ opj_bool tcd_decode_tile_v2(opj_tcd_v2_t *tcd,
 /**
  * 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 );
 
 /* ----------------------------------------------------------------------- */
 /*@}*/