summaryrefslogtreecommitdiff
path: root/libopenjpeg/t2.c
diff options
context:
space:
mode:
authorAntonin Descampe <antonin@gmail.com>2005-01-26 09:59:31 +0000
committerAntonin Descampe <antonin@gmail.com>2005-01-26 09:59:31 +0000
commitc83ae7397d31444e8280ddd73959e10d1dd4fb84 (patch)
treed29b6c20271acae6c98512b31df615a186450c7d /libopenjpeg/t2.c
parent3b1bee0eec81ae97bdb345103074e98ad1d29ab8 (diff)
Added layer option '-l' to the command line. This option allows user to
specify a maximum number of quality layers to be decoded.
Diffstat (limited to 'libopenjpeg/t2.c')
-rw-r--r--libopenjpeg/t2.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/libopenjpeg/t2.c b/libopenjpeg/t2.c
index 092b509c..d3f1e4fc 100644
--- a/libopenjpeg/t2.c
+++ b/libopenjpeg/t2.c
@@ -666,23 +666,29 @@ int t2_decode_packets(unsigned char *src, int len, j2k_image_t * img,
for (pino = 0; pino <= cp->tcps[tileno].numpocs; pino++) {
while (pi_next(&pi[pino])) {
- e = t2_decode_packet(c, src + len - c, tile, cp,
- &cp->tcps[tileno], pi[pino].compno,
- pi[pino].resno, pi[pino].precno,
- pi[pino].layno);
-
+
+ if ((cp->layer==0) || (cp->layer>=((pi[pino].layno)+1))) {
+ e = t2_decode_packet(c, src + len - c, tile, cp,
+ &cp->tcps[tileno], pi[pino].compno,
+ pi[pino].resno, pi[pino].precno,
+ pi[pino].layno);
+ } else {
+ e = 0;
+ }
+
/* progression in resolution */
img->comps[pi[pino].compno].resno_decoded =
e > 0 ? int_max(pi[pino].resno,
- img->comps[pi[pino].compno].
- resno_decoded) : img->comps[pi[pino].
- compno].resno_decoded;
+ img->comps[pi[pino].compno].
+ resno_decoded) : img->comps[pi[pino].
+ compno].resno_decoded;
n++;
-
+
if (e == -999) { /* ADD */
break;
- } else
+ } else {
c += e;
+ }
}
/* FREE space memory taken by pi */