* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef __J2K_H
-#define __J2K_H
+#ifndef OPJ_J2K_H
+#define OPJ_J2K_H
/**
@file j2k.h
@brief The JPEG-2000 Codestream Reader/Writer (J2K)
#endif /* USE_JPSEC */
/* <<UniPG */
+#define J2K_MAX_POCS 32 /**< Maximum number of POCs */
+
/* ----------------------------------------------------------------------- */
/**
J2K_STATE_TPH = 0x0010, /**< the decoding process is in a tile part header */
J2K_STATE_MT = 0x0020, /**< the EOC marker has just been read */
J2K_STATE_NEOC = 0x0040, /**< the decoding process must not expect a EOC marker because the codestream is truncated */
+ J2K_STATE_DATA = 0x0080, /**< a tile header has been successfully read and codestream is expected */
J2K_STATE_EOC = 0x0100, /**< the decoding process has encountered the EOC marker */
J2K_STATE_ERR = 0x8000 /**< the decoding process has encountered an error (FIXME warning V1 = 0x0080)*/
/** number of progression order changes */
OPJ_UINT32 numpocs;
/** progression order changes */
- opj_poc_t pocs[32];
+ opj_poc_t pocs[J2K_MAX_POCS];
/** number of ppt markers (reserved size) */
OPJ_UINT32 ppt_markers_count;
OPJ_BITFIELD ppm : 1;
/** tells if the parameter is a coding or decoding one */
OPJ_BITFIELD m_is_decoder : 1;
+ /** whether different bit depth or sign per component is allowed. Decoder only for ow */
+ OPJ_BITFIELD allow_different_bit_depth_sign : 1;
/* <<UniPG */
} opj_cp_t;
* SOD reader function. FIXME NOT USED for the moment
*/
OPJ_BOOL m_last_tile_part;
+
+ OPJ_UINT32 m_numcomps_to_decode;
+ OPJ_UINT32 *m_comps_indices_to_decode;
+
/** to tell that a tile can be decoded. */
OPJ_BITFIELD m_can_decode : 1;
OPJ_BITFIELD m_discard_tiles : 1;
/** the current tile coder/decoder **/
struct opj_tcd * m_tcd;
- /** Number of threads to use */
- int m_num_threads;
-
/** Thread pool */
opj_thread_pool_t* m_tp;
+
+ /** Image width coming from JP2 IHDR box. 0 from a pure codestream */
+ OPJ_UINT32 ihdr_w;
+
+ /** Image height coming from JP2 IHDR box. 0 from a pure codestream */
+ OPJ_UINT32 ihdr_h;
+
+ /** Set to 1 by the decoder initialization if OPJ_DPARAMETERS_DUMP_FLAG is set */
+ unsigned int dump_state;
}
opj_j2k_t;
/**
Converts an enum type progression order to string type
*/
-char *opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order);
+const char *opj_j2k_convert_progression_order(OPJ_PROG_ORDER prg_order);
/* ----------------------------------------------------------------------- */
/*@}*/
opj_event_mgr_t * p_manager);
+/** Sets the indices of the components to decode.
+ *
+ * @param p_j2k the jpeg2000 codec.
+ * @param numcomps Number of components to decode.
+ * @param comps_indices Array of num_compts indices (numbering starting at 0)
+ * corresponding to the components to decode.
+ * @param p_manager Event manager
+ *
+ * @return OPJ_TRUE in case of success.
+ */
+OPJ_BOOL opj_j2k_set_decoded_components(opj_j2k_t *p_j2k,
+ OPJ_UINT32 numcomps,
+ const OPJ_UINT32* comps_indices,
+ opj_event_mgr_t * p_manager);
+
/**
* Sets the given area to be decoded. This function should be called right after opj_read_header and before any tile header reading.
*
OPJ_BOOL opj_j2k_setup_mct_encoding(opj_tcp_t * p_tcp, opj_image_t * p_image);
-#endif /* __J2K_H */
+#endif /* OPJ_J2K_H */