diff options
| author | Mickael Savinaud <savmickael@users.noreply.github.com> | 2011-11-08 13:21:17 +0000 |
|---|---|---|
| committer | Mickael Savinaud <savmickael@users.noreply.github.com> | 2011-11-08 13:21:17 +0000 |
| commit | bd8bca87b225e612f0af38c1151cab561f21b7ab (patch) | |
| tree | 3401975cce5fa433bed7d5753b5076acfba3883a /libopenjpeg/openjpeg.c | |
| parent | 9110aa09a48bf0bd485a672fcaabc669fd39d0c5 (diff) | |
[trunk] WIP: add get_decoded_tile functionality
Diffstat (limited to 'libopenjpeg/openjpeg.c')
| -rw-r--r-- | libopenjpeg/openjpeg.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/libopenjpeg/openjpeg.c b/libopenjpeg/openjpeg.c index b1795f8f..aa77a5e1 100644 --- a/libopenjpeg/openjpeg.c +++ b/libopenjpeg/openjpeg.c @@ -78,6 +78,13 @@ typedef struct opj_decompression OPJ_INT32 p_start_x, OPJ_INT32 p_end_x, OPJ_INT32 p_start_y, OPJ_INT32 p_end_y, struct opj_event_mgr * p_manager); + + /** Get tile function */ + opj_bool (*opj_get_decoded_tile) ( void *p_codec, + opj_stream_private_t *p_cio, + opj_image_t *p_image, + struct opj_event_mgr * p_manager, + OPJ_UINT32 tile_index); }opj_decompression_t; /** @@ -286,6 +293,12 @@ opj_codec_t* OPJ_CALLCONV opj_create_decompress_v2(OPJ_CODEC_FORMAT p_format) l_info->m_codec_data.m_decompression.opj_set_decode_area = (opj_bool (*) (void *, opj_image_t*, OPJ_INT32, OPJ_INT32, OPJ_INT32, OPJ_INT32, struct opj_event_mgr *)) j2k_set_decode_area; + l_info->m_codec_data.m_decompression.opj_get_decoded_tile = (opj_bool (*) ( void *p_codec, + opj_stream_private_t *p_cio, + opj_image_t *p_image, + struct opj_event_mgr * p_manager, + OPJ_UINT32 tile_index)) j2k_get_tile; + l_info->m_codec = j2k_create_decompress_v2(); if (! l_info->m_codec) { @@ -338,6 +351,12 @@ opj_codec_t* OPJ_CALLCONV opj_create_decompress_v2(OPJ_CODEC_FORMAT p_format) l_info->m_codec_data.m_decompression.opj_set_decode_area = (opj_bool (*) (void *,opj_image_t*, OPJ_INT32,OPJ_INT32,OPJ_INT32,OPJ_INT32, struct opj_event_mgr * )) jp2_set_decode_area; + l_info->m_codec_data.m_decompression.opj_get_decoded_tile = (opj_bool (*) ( void *p_codec, + opj_stream_private_t *p_cio, + opj_image_t *p_image, + struct opj_event_mgr * p_manager, + OPJ_UINT32 tile_index)) jp2_get_tile; + l_info->m_codec = jp2_create(OPJ_TRUE); if (! l_info->m_codec) { @@ -937,6 +956,10 @@ opj_bool OPJ_CALLCONV opj_decode_v2(opj_codec_t *p_info, 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) { @@ -953,3 +976,29 @@ opj_bool OPJ_CALLCONV opj_end_decompress (opj_codec_t *p_codec,opj_stream_t *p_c return OPJ_FALSE; } + +/* + * + * + */ +opj_bool OPJ_CALLCONV opj_get_decoded_tile( opj_codec_t *p_codec, + opj_stream_t *p_cio, + opj_image_t *p_image, + OPJ_UINT32 tile_index) +{ + if (p_codec && p_cio) { + opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec; + opj_stream_private_t * l_stream = (opj_stream_private_t *) p_cio; + + if (! l_codec->is_decompressor) { + return OPJ_FALSE; + } + return l_codec->m_codec_data.m_decompression.opj_get_decoded_tile( l_codec->m_codec, + l_stream, + p_image, + l_codec->m_event_mgr, + tile_index); + } + + return OPJ_FALSE; +} |
