diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2016-05-25 16:38:44 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2016-05-25 21:02:07 +0200 |
| commit | 5fbb8b2645a085391b070162d8551aa960caab6a (patch) | |
| tree | b767e0784a94dd47850719e24c78189e3e7fdc6a /src/lib/openjp2/tcd.c | |
| parent | d4b7f03cfa4732132767188782683f3d957da912 (diff) | |
Use thread-pool for T1 decoding
Diffstat (limited to 'src/lib/openjp2/tcd.c')
| -rw-r--r-- | src/lib/openjp2/tcd.c | 20 |
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; } |
