*
* 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
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
*/
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
*
*/
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
*/
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
*/
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_ */