[1.5][JPIP] new feature to target JP2 files from www (libcurl required)
[openjpeg.git] / applications / jpip / libopenjpip / msgqueue_manager.h
index 469194abbffbaf145a59d5308fa995952bebf8e0..7236d89c607c39ab7eb0d9842bbafc98f18afb9e 100644 (file)
@@ -3,7 +3,8 @@
  *
  * Copyright (c) 2002-2011, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
  * Copyright (c) 2002-2011, Professor Benoit Macq
- * Copyright (c) 2010-2011, Kaori Hagihara
+ * Copyright (c) 2010-2011, Kaori Hagihara 
+ * Copyright (c) 2011,      Lucian Corlaciu, GSoC
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #ifndef        MSGQUEUE_MANAGER_H_
 # define       MSGQUEUE_MANAGER_H_
 
-#include <stdio.h>
 #include "bool.h"
 #include "byte_manager.h"
-#include "target_manager.h"
+#include "cachemodel_manager.h"
 #include "placeholder_manager.h"
 
+#define PRECINCT_MSG 0
+#define EXT_PRECINCT_MSG 1
+#define TILE_HEADER_MSG 2
+#define TILE_MSG 4
+#define EXT_TILE_MSG 5
+#define MAINHEADER_MSG 6
+#define METADATA_MSG 8
+
 //! message parameters
 typedef struct message_param{
   bool    last_byte;          //!< if message contains the last byte of the data-bin
@@ -56,17 +64,17 @@ typedef struct msgqueue_param{
   message_param_t *first; //!< first message pointer of the list
   message_param_t *last;  //!< last  message pointer of the list
   bool stateless;         //!< if this is a stateless message queue
-  target_param_t *target; //!< reference target pointer
+  cachemodel_param_t *cachemodel; //!< reference cachemodel pointer
 } msgqueue_param_t;
 
 /**
  * generate message queue
  *
- * @param[in] stateless if this is a stateless message queue
- * @param[in] target    reference target pointer
- * @return generated message queue pointer
+ * @param[in] stateless   if this is a stateless message queue
+ * @param[in] cachemodel  cachemodel pointer
+ * @return                generated message queue pointer
  */
-msgqueue_param_t * gene_msgqueue( bool stateless, target_param_t *target);
+msgqueue_param_t * gene_msgqueue( bool stateless, cachemodel_param_t *cachemodel);
 
 /**
  * delete message queue
@@ -75,6 +83,14 @@ msgqueue_param_t * gene_msgqueue( bool stateless, target_param_t *target);
  */
 void delete_msgqueue( msgqueue_param_t **msgqueue);
 
+/**
+ * delete a message in msgqueue
+ *
+ * @param[in] message  address of the deleting message pointer
+ * @param[in] msgqueue message queue pointer
+ */
+void delete_message_in_msgqueue( message_param_t **message, msgqueue_param_t *msgqueue);
+
 /**
  * print message queue
  *
@@ -90,6 +106,13 @@ void print_msgqueue( msgqueue_param_t *msgqueue);
  */
 void enqueue_mainheader( msgqueue_param_t *msgqueue);
 
+/**
+ * enqueue tile headers data-bin into message queue
+ *
+ * @param[in]     tile_id  tile id starting from 0
+ * @param[in,out] msgqueue message queue pointer
+ */
+void enqueue_tileheader( int tile_id, msgqueue_param_t *msgqueue);
 
 /**
  * enqueue tile data-bin into message queue
@@ -100,6 +123,17 @@ void enqueue_mainheader( msgqueue_param_t *msgqueue);
  */
 void enqueue_tile( int tile_id, int level, msgqueue_param_t *msgqueue);
 
+/**
+ * enqueue precinct data-bin into message queue
+ *
+ * @param[in]     seq_id   precinct sequence number within its tile
+ * @param[in]     tile_id  tile index
+ * @param[in]     comp_id  component number
+ * @param[in]     layers   num of layers
+ * @param[in,out] msgqueue message queue
+ */
+void enqueue_precinct( int seq_id, int tile_id, int comp_id, int layers, msgqueue_param_t *msgqueue);
+
 
 /**
  * enqueue Metadata-bin into message queue
@@ -138,30 +172,16 @@ void parse_JPIPstream( Byte_t *JPIPstream, Byte8_t streamlen, Byte8_t offset, ms
  */
 void parse_metamsg( msgqueue_param_t *msgqueue, Byte_t *stream, Byte8_t streamlen, metadatalist_param_t *metadatalist);
 
-
 /**
- * reconstruct j2k codestream from message queue
- *
- * @param[in]  msgqueue   message queue pointer
- * @param[in]  jpipstream original jpt- jpp- stream
- * @param[in]  csn        codestream number
- * @param[in]  minlev     minimum decomposition level
- * @param[out] j2klen     pointer to the j2k codestream length
- * @return     generated  reconstructed j2k codestream
- */
-Byte_t * recons_j2k( msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, int minlev, Byte8_t *j2klen);
-
-
-/**
- * reconstruct jp2 file codestream from message queue
+ * compute precinct ID A.3.2.1
  *
- * @param[in]  msgqueue   message queue pointer
- * @param[in]  jpipstream original jpt- jpp- stream
- * @param[in]  csn        codestream number
- * @param[out] jp2len     pointer to the jp2 codestream length
- * @return     generated  reconstructed jp2 codestream
+ * @param[in]  t                 tile index
+ * @param[in]  c                 component index
+ * @param[in]  s                 sequence number
+ * @param[in]  num_components    total number of components
+ * @param[in]  num_tiles         total number of tiles
+ * @return                       precicnt id
  */
-Byte_t * recons_jp2( msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn, Byte8_t *jp2len);
-
+Byte8_t comp_precinct_id( int t, int c, int s, int num_components, int num_tiles);
 
 #endif             /* !MSGQUEUE_MANAGER_H_ */