summaryrefslogtreecommitdiff
path: root/src/lib/openjp2/tcd.c
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2016-05-25 16:38:44 +0200
committerEven Rouault <even.rouault@spatialys.com>2016-05-25 21:02:07 +0200
commit5fbb8b2645a085391b070162d8551aa960caab6a (patch)
treeb767e0784a94dd47850719e24c78189e3e7fdc6a /src/lib/openjp2/tcd.c
parentd4b7f03cfa4732132767188782683f3d957da912 (diff)
Use thread-pool for T1 decoding
Diffstat (limited to 'src/lib/openjp2/tcd.c')
-rw-r--r--src/lib/openjp2/tcd.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/lib/openjp2/tcd.c b/src/lib/openjp2/tcd.c
index d76a3f9d..a34fa18c 100644
--- a/src/lib/openjp2/tcd.c
+++ b/src/lib/openjp2/tcd.c
@@ -1568,30 +1568,22 @@ static OPJ_BOOL opj_tcd_t2_decode (opj_tcd_t *p_tcd,
static OPJ_BOOL opj_tcd_t1_decode ( opj_tcd_t *p_tcd )
{
OPJ_UINT32 compno;
- opj_t1_t * l_t1;
opj_tcd_tile_t * l_tile = p_tcd->tcd_image->tiles;
opj_tcd_tilecomp_t* l_tile_comp = l_tile->comps;
opj_tccp_t * l_tccp = p_tcd->tcp->tccps;
-
-
- l_t1 = opj_t1_create(OPJ_FALSE);
- if (l_t1 == 00) {
- return OPJ_FALSE;
- }
+ volatile OPJ_BOOL ret = OPJ_TRUE;
for (compno = 0; compno < l_tile->numcomps; ++compno) {
- /* The +3 is headroom required by the vectorized DWT */
- if (OPJ_FALSE == opj_t1_decode_cblks(l_t1, l_tile_comp, l_tccp)) {
- opj_t1_destroy(l_t1);
- return OPJ_FALSE;
- }
+ opj_t1_decode_cblks(p_tcd->thread_pool, &ret, l_tile_comp, l_tccp);
+ if( !ret )
+ break;
++l_tile_comp;
++l_tccp;
}
- opj_t1_destroy(l_t1);
+ opj_thread_pool_wait_completion(p_tcd->thread_pool, 0);
- return OPJ_TRUE;
+ return ret;
}