summaryrefslogtreecommitdiff
path: root/libopenjpeg/openjpeg.c
diff options
context:
space:
mode:
authorMickael Savinaud <savmickael@users.noreply.github.com>2011-11-08 13:21:17 +0000
committerMickael Savinaud <savmickael@users.noreply.github.com>2011-11-08 13:21:17 +0000
commitbd8bca87b225e612f0af38c1151cab561f21b7ab (patch)
tree3401975cce5fa433bed7d5753b5076acfba3883a /libopenjpeg/openjpeg.c
parent9110aa09a48bf0bd485a672fcaabc669fd39d0c5 (diff)
[trunk] WIP: add get_decoded_tile functionality
Diffstat (limited to 'libopenjpeg/openjpeg.c')
-rw-r--r--libopenjpeg/openjpeg.c49
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;
+}