00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef __OPJ_CODEC_H
00033 #define __OPJ_CODEC_H
00034
00042 typedef struct opj_codec_private
00043 {
00045 union
00046 {
00050 struct opj_decompression
00051 {
00053 OPJ_BOOL (*opj_read_header) ( struct opj_stream_private * cio,
00054 void * p_codec,
00055 opj_image_t **p_image,
00056 struct opj_event_mgr * p_manager);
00057
00059 OPJ_BOOL (*opj_decode) ( void * p_codec,
00060 struct opj_stream_private * p_cio,
00061 opj_image_t * p_image,
00062 struct opj_event_mgr * p_manager);
00063
00065 OPJ_BOOL (*opj_read_tile_header)( void * p_codec,
00066 OPJ_UINT32 * p_tile_index,
00067 OPJ_UINT32 * p_data_size,
00068 OPJ_INT32 * p_tile_x0,
00069 OPJ_INT32 * p_tile_y0,
00070 OPJ_INT32 * p_tile_x1,
00071 OPJ_INT32 * p_tile_y1,
00072 OPJ_UINT32 * p_nb_comps,
00073 OPJ_BOOL * p_should_go_on,
00074 struct opj_stream_private * p_cio,
00075 struct opj_event_mgr * p_manager);
00076
00078 OPJ_BOOL (*opj_decode_tile_data)( void * p_codec,
00079 OPJ_UINT32 p_tile_index,
00080 OPJ_BYTE * p_data,
00081 OPJ_UINT32 p_data_size,
00082 struct opj_stream_private * p_cio,
00083 struct opj_event_mgr * p_manager);
00084
00086 OPJ_BOOL (* opj_end_decompress) ( void *p_codec,
00087 struct opj_stream_private * cio,
00088 struct opj_event_mgr * p_manager);
00089
00091 void (*opj_destroy) (void * p_codec);
00092
00094 void (*opj_setup_decoder) ( void * p_codec, opj_dparameters_t * p_param);
00095
00097 OPJ_BOOL (*opj_set_decode_area) ( void * p_codec,
00098 opj_image_t * p_image,
00099 OPJ_INT32 p_start_x,
00100 OPJ_INT32 p_end_x,
00101 OPJ_INT32 p_start_y,
00102 OPJ_INT32 p_end_y,
00103 struct opj_event_mgr * p_manager);
00104
00106 OPJ_BOOL (*opj_get_decoded_tile) ( void *p_codec,
00107 opj_stream_private_t * p_cio,
00108 opj_image_t *p_image,
00109 struct opj_event_mgr * p_manager,
00110 OPJ_UINT32 tile_index);
00111
00113 OPJ_BOOL (*opj_set_decoded_resolution_factor) ( void * p_codec,
00114 OPJ_UINT32 res_factor,
00115 opj_event_mgr_t * p_manager);
00116 } m_decompression;
00117
00121 struct opj_compression
00122 {
00123 OPJ_BOOL (* opj_start_compress) ( void *p_codec,
00124 struct opj_stream_private * cio,
00125 struct opj_image * p_image,
00126 struct opj_event_mgr * p_manager);
00127
00128 OPJ_BOOL (* opj_encode) ( void * p_codec,
00129 struct opj_stream_private *p_cio,
00130 struct opj_event_mgr * p_manager);
00131
00132 OPJ_BOOL (* opj_write_tile) ( void * p_codec,
00133 OPJ_UINT32 p_tile_index,
00134 OPJ_BYTE * p_data,
00135 OPJ_UINT32 p_data_size,
00136 struct opj_stream_private * p_cio,
00137 struct opj_event_mgr * p_manager);
00138
00139 OPJ_BOOL (* opj_end_compress) ( void * p_codec,
00140 struct opj_stream_private * p_cio,
00141 struct opj_event_mgr * p_manager);
00142
00143 void (* opj_destroy) (void * p_codec);
00144
00145 void (* opj_setup_encoder) ( void * p_codec,
00146 opj_cparameters_t * p_param,
00147 struct opj_image * p_image,
00148 struct opj_event_mgr * p_manager);
00149 } m_compression;
00150 } m_codec_data;
00152 void * m_codec;
00154 opj_event_mgr_t m_event_mgr;
00156 OPJ_BOOL is_decompressor;
00157 void (*opj_dump_codec) (void * p_codec, OPJ_INT32 info_flag, FILE* output_stream);
00158 opj_codestream_info_v2_t* (*opj_get_codec_info)(void* p_codec);
00159 opj_codestream_index_t* (*opj_get_codec_index)(void* p_codec);
00160 }
00161 opj_codec_private_t;
00162
00163
00164 #endif
00165