[trunk] fix 'distcheck' rule
[openjpeg.git] / libopenjpeg / openjpeg.c
index be69b3e8989dfc57f2370166189f0eb4b448d933..bec5f225a342af205867c2ff3fb07677ff2565da 100644 (file)
@@ -40,12 +40,13 @@ typedef struct opj_decompression
        /** Main header reading function handler*/
        opj_bool (* opj_read_header) (  struct opj_stream_private * cio,
                                                                        void * p_codec,
-                                                                       opj_image_header_t *p_img_header,
+                                                                       opj_image_t *p_image,
                                                                        struct opj_event_mgr * p_manager);
        /** FIXME DOC */
-       opj_image_t* (* opj_decode) (   void * p_codec,
-                                                                       struct opj_stream_private *p_cio,
-                                                                       struct opj_event_mgr * p_manager);
+       opj_bool (* opj_decode) (       void * p_codec,
+                                                               struct opj_stream_private *p_cio,
+                                                               opj_image_t *p_image,
+                                                               struct opj_event_mgr * p_manager);
        /** FIXME DOC */
        opj_bool (*opj_read_tile_header)(       void * p_codec,
                                                                                OPJ_UINT32 * p_tile_index,
@@ -108,7 +109,7 @@ typedef struct opj_codec_private
        opj_event_mgr_t* m_event_mgr;
        /** Flag to indicate if the codec is used to decode or encode*/
        opj_bool is_decompressor;
-       opj_bool (*opj_dump_codec) (void * p_codec, OPJ_INT32 info_flag, FILE* output_stream);
+       void (*opj_dump_codec) (void * p_codec, OPJ_INT32 info_flag, FILE* output_stream);
        opj_codestream_info_v2_t* (*opj_get_codec_info)(void* p_codec);
        opj_codestream_index_t* (*opj_get_codec_index)(void* p_codec);
 }
@@ -228,27 +229,33 @@ opj_codec_t* OPJ_CALLCONV opj_create_decompress_v2(OPJ_CODEC_FORMAT p_format)
 
        switch (p_format) {
                case CODEC_J2K:
-                       l_info->opj_dump_codec = (opj_bool (*) (void*, OPJ_INT32, FILE*)) j2k_dump;
+                       l_info->opj_dump_codec = (void (*) (void*, OPJ_INT32, FILE*)) j2k_dump;
 
                        l_info->opj_get_codec_info = (opj_codestream_info_v2_t* (*) (void*) ) j2k_get_cstr_info;
 
                        l_info->opj_get_codec_index = (opj_codestream_index_t* (*) (void*) ) j2k_get_cstr_index;
 
                        l_info->m_codec_data.m_decompression.opj_decode =
-                                       (opj_image_t* (*) (void *, struct opj_stream_private *, struct opj_event_mgr * ))j2k_decode; // TODO MSD
+                                       (opj_bool (*) ( void *,
+                                                                       struct opj_stream_private *,
+                                                                       opj_image_t*, struct opj_event_mgr * )) j2k_decode_v2;
 
                        l_info->m_codec_data.m_decompression.opj_end_decompress =
-                                       (opj_bool (*) (void *, struct opj_stream_private *, struct opj_event_mgr *))j2k_end_decompress;
+                                       (opj_bool (*) ( void *,
+                                                                       struct opj_stream_private *,
+                                                                       struct opj_event_mgr *)) j2k_end_decompress;
 
                        l_info->m_codec_data.m_decompression.opj_read_header =
                                        (opj_bool (*) ( struct opj_stream_private *,
                                                                        void *,
-                                                                       opj_image_header_t *,
+                                                                       opj_image_t *,
                                                                        struct opj_event_mgr * )) j2k_read_header;
 
-                       l_info->m_codec_data.m_decompression.opj_destroy = (void (*) (void *))j2k_destroy;
+                       l_info->m_codec_data.m_decompression.opj_destroy =
+                                       (void (*) (void *))j2k_destroy;
 
-                       l_info->m_codec_data.m_decompression.opj_setup_decoder = (void (*) (void * , opj_dparameters_t * )) j2k_setup_decoder_v2;
+                       l_info->m_codec_data.m_decompression.opj_setup_decoder =
+                                       (void (*) (void * , opj_dparameters_t * )) j2k_setup_decoder_v2;
 
                        l_info->m_codec_data.m_decompression.opj_read_tile_header =
                                        (opj_bool (*) ( void *,
@@ -278,14 +285,24 @@ opj_codec_t* OPJ_CALLCONV opj_create_decompress_v2(OPJ_CODEC_FORMAT p_format)
 
                case CODEC_JP2:
                        /* get a JP2 decoder handle */
-                       l_info->m_codec_data.m_decompression.opj_decode = (opj_image_t* (*) (void *, struct opj_stream_private *, struct opj_event_mgr * ))opj_jp2_decode; // TODO MSD
+                       l_info->opj_dump_codec = (void (*) (void*, OPJ_INT32, FILE*)) jp2_dump;
+
+                       l_info->opj_get_codec_info = (opj_codestream_info_v2_t* (*) (void*) ) jp2_get_cstr_info;
+
+                       l_info->opj_get_codec_index = (opj_codestream_index_t* (*) (void*) ) jp2_get_cstr_index;
+
+                       l_info->m_codec_data.m_decompression.opj_decode =
+                                       (opj_bool (*) ( void *,
+                                                                       struct opj_stream_private *,
+                                                                       opj_image_t*,
+                                                                       struct opj_event_mgr * )) opj_jp2_decode_v2;
 
                        l_info->m_codec_data.m_decompression.opj_end_decompress =  (opj_bool (*) (void *,struct opj_stream_private *,struct opj_event_mgr *)) jp2_end_decompress;
 
                        l_info->m_codec_data.m_decompression.opj_read_header =  (opj_bool (*) (
                                        struct opj_stream_private *,
                                        void *,
-                                       opj_image_header_t *,
+                                       opj_image_t *,
                                        struct opj_event_mgr * )) jp2_read_header;
 
                        l_info->m_codec_data.m_decompression.opj_read_tile_header = ( opj_bool (*) (
@@ -695,7 +712,7 @@ opj_bool OPJ_CALLCONV opj_read_header (
 
 opj_bool OPJ_CALLCONV opj_read_header (        opj_stream_t *p_cio,
                                                                                opj_codec_t *p_codec,
-                                                                               opj_image_header_t *p_img_header )
+                                                                               opj_image_t *p_image )
 {
        if (p_codec && p_cio) {
                opj_codec_private_t* l_info = (opj_codec_private_t*) p_codec;
@@ -709,7 +726,7 @@ opj_bool OPJ_CALLCONV opj_read_header (     opj_stream_t *p_cio,
                return l_info->m_codec_data.m_decompression.opj_read_header(
                                        l_cio,
                                        l_info->m_codec,
-                                       p_img_header,
+                                       p_image,
                                        l_info->m_event_mgr);
        }
 
@@ -872,9 +889,11 @@ void OPJ_CALLCONV opj_dump_codec(  opj_codec_t *p_codec,
                opj_codec_private_t* l_codec = (opj_codec_private_t*) p_codec;
 
                l_codec->opj_dump_codec(l_codec->m_codec, info_flag, output_stream);
+               return;
        }
 
        fprintf(stderr, "[ERROR] Input parameter of the dump_codec function are incorrect.\n");
+       return;
 }
 
 /*
@@ -906,3 +925,41 @@ opj_codestream_index_t * OPJ_CALLCONV opj_get_cstr_index(opj_codec_t *p_codec)
 
        return NULL;
 }
+
+opj_bool OPJ_CALLCONV opj_decode_v2(opj_codec_t *p_info,
+                                                                       opj_stream_t *cio,
+                                                                       opj_image_t* p_image)
+{
+       if (p_info && cio) {
+               opj_codec_private_t * l_info = (opj_codec_private_t *) p_info;
+               opj_stream_private_t * l_cio = (opj_stream_private_t *) cio;
+
+               if (! l_info->is_decompressor) {
+                       return OPJ_FALSE;
+               }
+
+               return l_info->m_codec_data.m_decompression.opj_decode( l_info->m_codec,
+                                                                                                                               l_cio,
+                                                                                                                               p_image,
+                                                                                                                               l_info->m_event_mgr);
+       }
+
+       return OPJ_FALSE;
+}
+
+opj_bool OPJ_CALLCONV opj_end_decompress (opj_codec_t *p_codec,opj_stream_t *p_cio)
+{
+       if (p_codec && p_cio) {
+               opj_codec_private_t * l_info = (opj_codec_private_t *) p_codec;
+               opj_stream_private_t * l_cio = (opj_stream_private_t *) p_cio;
+
+               if (! l_info->is_decompressor) {
+                       return OPJ_FALSE;
+               }
+               return l_info->m_codec_data.m_decompression.opj_end_decompress( l_info->m_codec,
+                                                                                                                                               l_cio,
+                                                                                                                                               l_info->m_event_mgr);
+       }
+
+       return OPJ_FALSE;
+}