summaryrefslogtreecommitdiff
path: root/src/lib/openjp2/jp2.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/openjp2/jp2.c')
-rw-r--r--src/lib/openjp2/jp2.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/lib/openjp2/jp2.c b/src/lib/openjp2/jp2.c
index 75fd37c5..c79ea731 100644
--- a/src/lib/openjp2/jp2.c
+++ b/src/lib/openjp2/jp2.c
@@ -1607,6 +1607,11 @@ OPJ_BOOL opj_jp2_decode(opj_jp2_t *jp2,
return OPJ_FALSE;
}
+ if (jp2->j2k->m_specific_param.m_decoder.m_numcomps_to_decode) {
+ /* Bypass all JP2 component transforms */
+ return OPJ_TRUE;
+ }
+
if (!jp2->ignore_pclr_cmap_cdef) {
if (!opj_jp2_check_color(p_image, &(jp2->color), p_manager)) {
return OPJ_FALSE;
@@ -3069,6 +3074,16 @@ void opj_jp2_destroy(opj_jp2_t *jp2)
}
}
+OPJ_BOOL opj_jp2_set_decoded_components(opj_jp2_t *p_jp2,
+ OPJ_UINT32 numcomps,
+ const OPJ_UINT32* comps_indices,
+ opj_event_mgr_t * p_manager)
+{
+ return opj_j2k_set_decoded_components(p_jp2->j2k,
+ numcomps, comps_indices,
+ p_manager);
+}
+
OPJ_BOOL opj_jp2_set_decode_area(opj_jp2_t *p_jp2,
opj_image_t* p_image,
OPJ_INT32 p_start_x, OPJ_INT32 p_start_y,
@@ -3100,6 +3115,11 @@ OPJ_BOOL opj_jp2_get_tile(opj_jp2_t *p_jp2,
return OPJ_FALSE;
}
+ if (p_jp2->j2k->m_specific_param.m_decoder.m_numcomps_to_decode) {
+ /* Bypass all JP2 component transforms */
+ return OPJ_TRUE;
+ }
+
if (!opj_jp2_check_color(p_image, &(p_jp2->color), p_manager)) {
return OPJ_FALSE;
}