Aligning with WRF
[WPS.git] / external / jasper-1.900.29 / test / bin / jpenc
blob72516c7839235d93f3da2f1ad493d37e7b7e9998
1 #! /bin/bash
2 # Copyright (c) 2016 Michael David Adams
4 cmd_dir=$(dirname "$0") || exit 1
5 source "$cmd_dir/utilities" || exit 1
6 source "$cmd_dir/jpcod" || exit 1
8 set_source_and_build_dirs || panic "cannot set source and build directories"
10 init
11 VERBOSE=0
13 export IMGINFO_COMMAND="$abs_top_builddir/src/appl/imginfo"
14 JASPER="$abs_top_builddir/src/appl/jasper"
16 ################################################################################
18 ################################################################################
20 setdefcodingparms()
23 #DEBUG=10
24 #DEBUG=5
25 #DEBUG=1
26 DEBUG=0
28 FMT=jpc
30 INFILE=""
31 OUTFILE=""
33 SOFTWARE=""
35 IMGAREATLX=0
36 IMGAREATLY=0
37 TILEWIDTH=0
38 TILEHEIGHT=0
39 TILEGRDTLX=$IMGAREATLX
40 TILEGRDTLY=$IMGAREATLY
41 CBLKWIDTH=64
42 CBLKHEIGHT=64
43 PRCWIDTH=0
44 PRCHEIGHT=0
46 MODE=int
47 SOP=0
48 EPH=0
49 SEGSYM=0
50 LAZY=0
51 TERMALL=0
52 PTERM=0
53 PRG=lrcp
55 NUMGBITS=2
57 ALLOWMCT=1
58 VCAUSAL=0
59 RESETPROB=0
61 NUMRLVLS=6
63 RATE=0
64 ILYRRATES=""
65 MAXPAE=""
66 MINPSNR=""
67 MAXLYRS=0
68 ROIRECT=""
72 ################################################################################
74 ################################################################################
76 jasper_enc()
79 ENCOPTS=""
81 IMGNAME=`basename $INFILE`
83 if [ -n "$ROIRECT" ]; then
84 exit 2
87 if [ $DEBUG -ne 0 ]; then
88 ENCOPTS="$ENCOPTS -O debug=$DEBUG"
91 ENCOPTS="$ENCOPTS -T $FMT"
93 if [ $IMGAREATLX -ne 0 -o $IMGAREATLY -ne 0 ]; then
94 ENCOPTS="$ENCOPTS -O imgareatlx=$IMGAREATLX"
95 ENCOPTS="$ENCOPTS -O imgareatly=$IMGAREATLY"
97 if [ $TILEWIDTH -ne 0 -o $TILEHEIGHT -ne 0 ]; then
98 ENCOPTS="$ENCOPTS -O tilewidth=$TILEWIDTH"
99 ENCOPTS="$ENCOPTS -O tileheight=$TILEHEIGHT"
101 if [ $TILEGRDTLX -ne 0 -o $TILEGRDTLY -ne 0 ]; then
102 ENCOPTS="$ENCOPTS -O tilegrdtlx=$TILEGRDTLX"
103 ENCOPTS="$ENCOPTS -O tilegrdtly=$TILEGRDTLY"
105 if [ $PRCWIDTH -ne 0 -o $PRCHEIGHT -ne 0 ]; then
106 ENCOPTS="$ENCOPTS -O prcwidth=$PRCWIDTH"
107 ENCOPTS="$ENCOPTS -O prcheight=$PRCHEIGHT"
109 ENCOPTS="$ENCOPTS -O cblkwidth=$CBLKWIDTH"
110 ENCOPTS="$ENCOPTS -O cblkheight=$CBLKHEIGHT"
112 if [ $RATE = 0 ]; then
113 ENCOPTS="$ENCOPTS -O mode=int"
114 else
115 if [ $MODE = int ]; then
116 # Use the 5/3 wavelet transform for lossy coding.
117 ENCOPTS="$ENCOPTS -O mode=int"
118 else
119 # Do not use the 5/3 wavelet transform for lossy coding.
120 ENCOPTS="$ENCOPTS -O mode=real"
122 ENCOPTS="$ENCOPTS -O rate=$RATE"
124 if [ -n "$ILYRRATES" ]; then
125 ENCOPTS="$ENCOPTS -O ilyrrates=$ILYRRATES"
128 ENCOPTS="$ENCOPTS -O numrlvls=$NUMRLVLS"
129 ENCOPTS="$ENCOPTS -O numgbits=$NUMGBITS"
130 ENCOPTS="$ENCOPTS -O prg=$PRG"
132 if [ $ALLOWMCT -eq 0 ]; then
133 ENCOPTS="$ENCOPTS -O nomct"
136 if [ $LAZY -ne 0 ]; then
137 ENCOPTS="$ENCOPTS -O lazy"
139 if [ $TERMALL -ne 0 ]; then
140 ENCOPTS="$ENCOPTS -O termall"
142 if [ $PTERM -ne 0 ]; then
143 ENCOPTS="$ENCOPTS -O pterm"
145 if [ $SOP -ne 0 ]; then
146 ENCOPTS="$ENCOPTS -O sop"
148 if [ $EPH -ne 0 ]; then
149 ENCOPTS="$ENCOPTS -O eph"
151 if [ $SEGSYM -ne 0 ]; then
152 ENCOPTS="$ENCOPTS -O segsym"
154 if [ $VCAUSAL -ne 0 ]; then
155 ENCOPTS="$ENCOPTS -O vcausal"
157 if [ $RESETPROB -ne 0 ]; then
158 ENCOPTS="$ENCOPTS -O resetprob"
161 if [ $VERBOSE -ne 0 ]; then
162 echo "Running JasPer encoder"
163 echo "$JASPER $ENCOPTS < $INFILE > $OUTFILE"
165 $JASPER $ENCOPTS < $INFILE > $OUTFILE
169 ################################################################################
171 ################################################################################
173 jj2k_enc()
176 IMGFMT=$(image_info "$INFILE" format) || \
177 panic "cannot get image format"
178 INFILESUFFIX=`getsuffix $INFILE`
179 INFILEBASE=`stripsuffix $INFILE`
181 if [ $IMGFMT != pgx ]; then
182 if [ $IMGPREC -ne 8 -a $IMGPREC -ne 24 ]; then
183 # unsupported precision
184 exit 2
188 if [ $IMGFMT != pnm -a $IMGFMT != pgx ]; then
189 exit 2
192 echo suffix $INFILESUFFIX
193 if [ "$INFILESUFFIX" = pnm ]; then
194 if [ $IMGTYPE = rgb ]; then
195 TMPINFILE=$TMPDIR/tmp_image.ppm
196 else
197 TMPINFILE=$TMPDIR/tmp_image.pgm
199 ln -s $INFILE $TMPINFILE
200 INFILE=$TMPINFILE
203 if [ $IMGTYPE = rgb ]; then
204 PREC=24
205 else
206 PREC=8
209 if [ $RATE != "0" ]; then
210 BITRATE=`evalexpr "$RATE * $PREC"`
211 else
212 BITRATE=0
215 ENCOPTS=""
217 ENCOPTS="$ENCOPTS -verbose off"
219 if [ $FMT = jp2 ]; then
220 ENCOPTS="$ENCOPTS -file_format on"
223 if [ $IMGAREATLX -ne 0 -o $IMGAREATLY -ne 0 ]; then
224 ENCOPTS="$ENCOPTS -ref $IMGAREATLX $IMGAREATLY"
226 if [ $TILEWIDTH -ne 0 -o $TILEHEIGHT -ne 0 ]; then
227 ENCOPTS="$ENCOPTS -tiles $TILEWIDTH $TILEHEIGHT"
229 if [ $TILEGRDTLX -ne 0 -o $TILEGRDTLY -ne 0 ]; then
230 ENCOPTS="$ENCOPTS -tref $TILEGRDTLX $TILEGRDTLY"
232 if [ $PRCWIDTH -ne 0 -o $PRCHEIGHT -ne 0 ]; then
233 ENCOPTS="$ENCOPTS -Cpp $PRCWIDTH $PRCHEIGHT"
235 ENCOPTS="$ENCOPTS -Cblksiz $CBLKWIDTH $CBLKHEIGHT"
237 if [ $RATE = 0 ]; then
238 ENCOPTS="$ENCOPTS -lossless on"
239 else
240 if [ $MODE = int ]; then
241 # Use the 5/3 wavelet transform for lossy coding.
242 ENCOPTS="$ENCOPTS -Ffilters w5x3"
243 ENCOPTS="$ENCOPTS -Qtype reversible"
244 else
245 # Do not use the 5/3 wavelet transform for lossy coding.
246 ENCOPTS="$ENCOPTS -Ffilters w9x7"
248 ENCOPTS="$ENCOPTS -rate $BITRATE"
250 if [ -n "$ILYRRATES" ]; then
251 BUF=`echo "$ILYRRATES" | csltowsl | scalewsl $PREC`
252 ENCOPTS="$ENCOPTS -Alayers $BUF"
253 else
254 ENCOPTS="$ENCOPTS -Alayers 100 +1"
257 ENCOPTS="$ENCOPTS -Wlev $NUMDLVLS"
258 ENCOPTS="$ENCOPTS -Qguard_bits $NUMGBITS"
260 case $PRG in
261 lrcp)
262 ENCOPTS="$ENCOPTS -Aptype layer"
264 rlcp)
265 ENCOPTS="$ENCOPTS -Aptype res"
267 rpcl)
268 ENCOPTS="$ENCOPTS -Aptype res-pos"
270 pcrl)
271 ENCOPTS="$ENCOPTS -Aptype pos-comp"
273 cprl)
274 ENCOPTS="$ENCOPTS -Aptype comp-pos"
277 echo "ERROR: unknown progression"
278 exit 1
280 esac
282 if [ $IMGTYPE = rgb ]; then
283 if [ $ALLOWMCT -eq 0 ]; then
284 ENCOPTS="$ENCOPTS -Mct off"
285 else
286 ENCOPTS="$ENCOPTS -Mct on"
290 if [ $LAZY -ne 0 ]; then
291 ENCOPTS="$ENCOPTS -Cbypass"
293 if [ $TERMALL -ne 0 ]; then
294 #ENCOPTS="$ENCOPTS -Creg_term"
295 ENCOPTS="$ENCOPTS -Cterminate"
297 if [ $PTERM -ne 0 ]; then
298 ENCOPTS="$ENCOPTS -Cterm_type predict"
299 else
300 ENCOPTS="$ENCOPTS -Cterm_type near_opt"
302 if [ $SOP -ne 0 ]; then
303 ENCOPTS="$ENCOPTS -Psop"
305 if [ $EPH -ne 0 ]; then
306 ENCOPTS="$ENCOPTS -Peph"
308 if [ $SEGSYM -ne 0 ]; then
309 ENCOPTS="$ENCOPTS -Cseg_symbol"
311 if [ $VCAUSAL -ne 0 ]; then
312 ENCOPTS="$ENCOPTS -Ccausal"
314 if [ $RESETPROB -ne 0 ]; then
315 ENCOPTS="$ENCOPTS -CresetMQ"
317 if [ -n "$ROIRECT" ]; then
318 ROITLX=`echo $ROIRECT | csltowsl | awk '{print $1}' | scalewsl $IMGWIDTH | realtoint`
319 ROITLY=`echo $ROIRECT | csltowsl | awk '{print $2}' | scalewsl $IMGHEIGHT | realtoint`
320 ROIWIDTH=`echo $ROIRECT | csltowsl | awk '{print $3}' | scalewsl $IMGWIDTH | realtoint`
321 ROIHEIGHT=`echo $ROIRECT | csltowsl | awk '{print $4}' | scalewsl $IMGHEIGHT | realtoint`
322 ENCOPTS="$ENCOPTS -Rroi R $ROITLX $ROITLY $ROIWIDTH $ROIHEIGHT"
324 if [ $VERBOSE -ne 0 ]; then
325 echo "Running JJ2000 encoder"
326 echo "$JJCOD enc -i $INFILE -o $OUTFILE $ENCOPTS > $ERRFILE 2> $ERRFILE"
328 CLASSPATH=$JJ2KTOPDIR/jj2000-$JJ2KVER.jar
329 export CLASSPATH
330 $JAVA JJ2KEncoder \
331 -i $INFILE -o $OUTFILE $ENCOPTS > $ERRFILE 2> $ERRFILE
335 ################################################################################
337 ################################################################################
339 vm_enc()
342 if [ $FMT != jpc ]; then
343 echo "VM encoder cannot handle JP2 format"
344 exit 1
346 IMGFMT=$(image_info "$INFILE" format) || \
347 panic "cannot get image format"
348 if [ $IMGFMT != pnm -a $IMGFMT != pgx ]; then
349 exit 2
351 if [ -n "$ROIRECT" ]; then
352 exit 2
355 IMGNAME=`basename $INFILE`
357 if [ $IMGTYPE = rgb ]; then
358 PREC=24
359 else
360 PREC=8
362 if [ $RATE != "0" ]; then
363 BITRATE=`evalexpr "$RATE * $PREC"`
364 else
365 BITRATE=0
368 ENCOPTS=""
370 if [ $DEBUG -ne 0 ]; then
372 else
373 ENCOPTS="$ENCOPTS -quiet"
376 if [ $IMGAREATLX -ne 0 -o $IMGAREATLY -ne 0 ]; then
377 ENCOPTS="$ENCOPTS -Fref $IMGAREATLY $IMGAREATLX"
379 if [ $TILEWIDTH -ne 0 -o $TILEHEIGHT -ne 0 ]; then
380 ENCOPTS="$ENCOPTS -Ftiles $TILEHEIGHT $TILEWIDTH"
382 if [ $TILEGRDTLX -ne 0 -o $TILEGRDTLY -ne 0 ]; then
383 ENCOPTS="$ENCOPTS -Ftile_ref $TILEGRDTLY $TILEGRDTLX"
385 if [ $PRCWIDTH -ne 0 -o $PRCHEIGHT -ne 0 ]; then
386 ENCOPTS="$ENCOPTS -Cpp ${PRCWIDTH}x$PRCHEIGHT"
388 ENCOPTS="$ENCOPTS -Cblk ${CBLKHEIGHT}x$CBLKWIDTH"
390 ENCOPTS="$ENCOPTS -Flev $NUMDLVLS"
391 ENCOPTS="$ENCOPTS -Fguard_bits $NUMGBITS"
392 ENCOPTS="$ENCOPTS -Bcomment Generated_by_VM_9.0"
394 # if [ $DERIVEDSTEPSIZES -ne 0 ]; then
395 # ENCOPTS="$ENCOPTS -Fimplicit Y"
396 # fi
398 if [ $LAZY -ne 0 ]; then
399 ENCOPTS="$ENCOPTS -Clazy"
401 if [ $TERMALL -ne 0 ]; then
402 if [ $PTERM -eq 0 ]; then
403 echo "WARNING: VM cannot use both TERMALL and no PTERM"
405 ENCOPTS="$ENCOPTS -Cer_term Y"
406 else
407 ENCOPTS="$ENCOPTS -Cer_term N"
409 if [ $PTERM -ne 0 ]; then
410 if [ $TERMALL -eq 0 ]; then
411 echo "WARNING: VM cannot use PTERM without TERMALL"
414 if [ $SOP -ne 0 ]; then
415 ENCOPTS="$ENCOPTS -Bresync Y"
417 if [ $EPH -ne 0 ]; then
418 ENCOPTS="$ENCOPTS -Beph Y"
420 if [ $SEGSYM -ne 0 ]; then
421 ENCOPTS="$ENCOPTS -Csegmark Y"
423 if [ $VCAUSAL -ne 0 ]; then
424 ENCOPTS="$ENCOPTS -Ccausal Y"
426 if [ $RESETPROB -ne 0 ]; then
427 echo "warning: The VM has term all enabled!"
428 ENCOPTS="$ENCOPTS -Cparallel Y"
431 if [ $ALLOWMCT -ne 0 ]; then
432 if [ $IMGTYPE = rgb ]; then
433 ENCOPTS="$ENCOPTS -Mycc"
437 case $PRG in
438 lrcp)
439 ENCOPTS="$ENCOPTS -Corder L"
441 rlcp)
442 ENCOPTS="$ENCOPTS -Corder RL"
444 rpcl)
445 ENCOPTS="$ENCOPTS -Corder RP"
447 pcrl)
448 ENCOPTS="$ENCOPTS -Corder PC"
450 cprl)
451 ENCOPTS="$ENCOPTS -Corder CP"
454 echo "ERROR: unknown progression"
455 exit 1
457 esac
459 if [ $RATE = 0 ]; then
460 ENCOPTS="$ENCOPTS -Frev"
461 else
462 if [ $MODE = int ]; then
463 # Use the 5/3 wavelet transform for lossy coding.
464 ENCOPTS="$ENCOPTS -Frev"
465 else
466 # Do not use the 5/3 wavelet transform for lossy coding.
467 ENCOPTS="$ENCOPTS"
469 ENCOPTS="$ENCOPTS -rate $BITRATE"
472 ENCOPTS="-o $OUTFILE $ENCOPTS"
473 if [ $IMGTYPE = rgb ]; then
474 REDINFILE=$TMPDIR/vmenc_r.pgm
475 GRNINFILE=$TMPDIR/vmenc_g.pgm
476 BLUINFILE=$TMPDIR/vmenc_b.pgm
477 ppmtorgb $INFILE $REDINFILE $GRNINFILE $BLUINFILE
478 ENCOPTS="-i $REDINFILE $GRNINFILE $BLUINFILE $ENCOPTS"
479 else
480 ENCOPTS="-i $INFILE $ENCOPTS"
482 if [ $VERBOSE -ne 0 ]; then
483 echo "Running VM encoder"
484 echo "$VMENC $ENCOPTS > $ERRFILE 2> $ERRFILE"
486 $VMENC $ENCOPTS > $ERRFILE 2> $ERRFILE
490 ################################################################################
492 ################################################################################
494 kakadu_enc()
497 ENCOPTS=""
498 INFILESUFFIX=`getsuffix $INFILE`
499 INFILEBASE=`stripsuffix $INFILE`
501 if [ -n "$ROIRECT" ]; then
502 exit 2
505 if [ $IMGPREC -ne 8 -a $IMGPREC -ne 24 ]; then
506 # unsupported precision
507 exit 2
509 if [ $IMGTYPE = rgb ]; then
510 PREC=24
511 else
512 PREC=8
514 if [ $RATE = 0 ]; then
515 LOSSLESS=1
516 RATE=100
517 else
518 LOSSLESS=0
520 BITRATE=`evalexpr "$RATE * $PREC"`
522 echo suffix $INFILESUFFIX
523 if [ "$INFILESUFFIX" = pnm ]; then
524 if [ $IMGTYPE = rgb ]; then
525 TMPINFILE=$TMPDIR/tmp_image.ppm
526 else
527 TMPINFILE=$TMPDIR/tmp_image.pgm
529 ln -s $INFILE $TMPINFILE
530 INFILE=$TMPINFILE
533 ENCOPTS="$ENCOPTS -precise"
534 ENCOPTS="$ENCOPTS -full"
535 if [ $IMGAREATLX -ne 0 -o $IMGAREATLY -ne 0 ]; then
536 ENCOPTS="$ENCOPTS Sorigin={$IMGAREATLY,$IMGAREATLX}"
538 if [ $TILEWIDTH -ne 0 -o $TILEHEIGHT -ne 0 ]; then
539 ENCOPTS="$ENCOPTS Stiles={$TILEHEIGHT,$TILEWIDTH}"
541 if [ $TILEGRDTLX -ne 0 -o $TILEGRDTLY -ne 0 ]; then
542 ENCOPTS="$ENCOPTS Stile_origin={$TILEGRDTLY,$TILEGRDTLX}"
544 if [ $PRCWIDTH -ne 0 -o $PRCHEIGHT -ne 0 ]; then
545 ENCOPTS="$ENCOPTS Cprecincts={$PRCWIDTH,$PRCHEIGHT}"
547 ENCOPTS="$ENCOPTS Cblk={$CBLKHEIGHT,$CBLKWIDTH}"
549 if [ $MODE = int ]; then
550 ENCOPTS="$ENCOPTS Creversible=yes"
551 ENCOPTS="$ENCOPTS Ckernels=W5X3"
552 else
553 ENCOPTS="$ENCOPTS Creversible=no"
554 ENCOPTS="$ENCOPTS Ckernels=W9X7"
556 if [ -n "$ILYRRATES" ]; then
557 BUF=`echo "${ILYRRATES},$RATE" | csltowsl | scalewsl $PREC | wsltocsl`
558 ENCOPTS="$ENCOPTS -rate $BUF"
559 else
560 #if [ $LOSSLESS -eq 0 ]; then
561 ENCOPTS="$ENCOPTS -rate $BITRATE"
565 ENCOPTS="$ENCOPTS Clevels=$NUMDLVLS"
566 ENCOPTS="$ENCOPTS Qguard=$NUMGBITS"
568 case $PRG in
569 lrcp)
570 ENCOPTS="$ENCOPTS Corder=LRCP"
572 rlcp)
573 ENCOPTS="$ENCOPTS Corder=RLCP"
575 rpcl)
576 ENCOPTS="$ENCOPTS Corder=RPCL"
578 pcrl)
579 ENCOPTS="$ENCOPTS Corder=PCRL"
581 cprl)
582 ENCOPTS="$ENCOPTS Corder=CPRL"
585 echo "ERROR: unknown progression"
586 exit 1
588 esac
590 if [ $ALLOWMCT -eq 0 ]; then
591 ENCOPTS="$ENCOPTS Cycc=yes"
592 else
593 ENCOPTS="$ENCOPTS Cycc=no"
596 MODESEP=""
597 MODES=""
598 if [ $LAZY -ne 0 ]; then
599 MODES="$MODES${MODESEP}BYPASS"
600 MODESEP="|"
602 if [ $PTERM -ne 0 -o $TERMALL -ne 0 ]; then
603 MODES="$MODES${MODESEP}ERTERM"
604 MODESEP="|"
606 if [ $SEGSYM -ne 0 ]; then
607 MODES="$MODES${MODESEP}SEGMARK"
608 MODESEP="|"
610 if [ $VCAUSAL -ne 0 ]; then
611 MODES="$MODES${MODESEP}CAUSAL"
612 MODESEP="|"
614 if [ $RESETPROB -ne 0 ]; then
615 MODES="$MODES${MODESEP}RESET"
616 MODESEP="|"
618 if [ -n "$MODES" ]; then
619 ENCOPTS="$ENCOPTS Cmodes=$MODES"
622 if [ $SOP -ne 0 ]; then
623 ENCOPTS="$ENCOPTS Cuse_sop=yes"
625 if [ $EPH -ne 0 ]; then
626 ENCOPTS="$ENCOPTS Cuse_eph=yes"
628 if [ $VERBOSE -ne 0 ]; then
629 echo "Running Kakadu encoder"
630 echo "$KAKADUENC -quiet -i `pnutod $INFILE` -o `pnutod $OUTFILE` $ENCOPTS >> $ERRFILE 2>> $ERRFILE"
632 $KAKADUENC -quiet -i `pnutod $INFILE` -o `pnutod $OUTFILE` $ENCOPTS >> $ERRFILE 2>> $ERRFILE
636 ################################################################################
638 oj_enc()
640 local oj_encode_opts
641 oj_encode_opts=()
642 oj_encode_opts+=(-i "$INFILE")
643 oj_encode_opts+=(-o "$OUTFILE")
644 oj_encode_opts+=(-OutFor "$FMT")
646 if [ "$RATE" = 0 ]; then
647 RATE=1
648 LOSSLESS=1
649 else
650 LOSSLESS=0
653 if [ "$LOSSLESS" -eq 0 -a "$MODE" != int ]; then
654 oj_encode_opts+=(-I)
657 if [ -n "$ILYRRATES" ]; then
658 BUF=$(echo "${ILYRRATES},$RATE" | csltowsl | reciprocatewsl | wsltocsl) || panic
659 oj_encode_opts+=(-r "$BUF")
660 else
661 BUF=$(echo "$RATE" | reciprocatewsl) || panic
662 oj_encode_opts+=(-r "$BUF")
664 oj_encode_opts+=(-b "$CBLKHEIGHT,$CBLKWIDTH")
665 if [ $PRCWIDTH -ne 0 -o $PRCHEIGHT -ne 0 ]; then
666 oj_encode_opts+=(-c "[$PRCWIDTH,$PRCHEIGHT]")
668 if [ $TILEWIDTH -ne 0 -o $TILEHEIGHT -ne 0 ]; then
669 oj_encode_opts+=(-t "$TILEWIDTH,$TILEHEIGHT")
671 if [ $TILEWIDTH -ne 0 -o $TILEHEIGHT -ne 0 ]; then
672 oj_encode_opts+=(-T "$TILEWIDTH,$TILEHEIGHT")
674 if [ $IMGTYPE = rgb ]; then
675 if [ $ALLOWMCT -eq 0 ]; then
676 oj_encode_opts+=(-mct 0)
677 else
678 oj_encode_opts+=(-mct 1)
681 PRG=$(echo "$PRG" | to_upper) || panic
682 oj_encode_opts+=(-p "$PRG")
683 #oj_encode_opts+=()
684 echo "Running $oj_encode ${oj_encode_opts[@]}"
685 "$oj_encode" "${oj_encode_opts[@]}"
688 ################################################################################
690 ################################################################################
692 oj_encode="opj2_compress"
694 [ -d $TMPDIR ] || mkdir -p $TMPDIR
696 setdefcodingparms
698 echo "$@"
700 while [ $# -gt 0 ]; do
701 BUF=$1
702 TAG=`gettag $BUF`
703 VAL=`getval $BUF`
704 case $TAG in
705 software)
706 SOFTWARE=$VAL;;
707 imgareatlx)
708 IMGAREATLX=$VAL;;
709 imgareatly)
710 IMGAREATLY=$VAL;;
711 tilegrdtlx)
712 TILEGRDTLX=$VAL;;
713 tilegrdtly)
714 TILEGRDTLY=$VAL;;
715 tilewidth)
716 TILEWIDTH=$VAL;;
717 tileheight)
718 TILEHEIGHT=$VAL;;
719 cblkwidth)
720 CBLKWIDTH=$VAL;;
721 cblkheight)
722 CBLKHEIGHT=$VAL;;
723 numrlvls)
724 NUMRLVLS=$VAL;;
725 numgbits)
726 NUMGBITS=$VAL;;
727 ilyrrates)
728 ILYRRATES=$VAL;;
729 rate)
730 RATE=$VAL;;
731 prg)
732 PRG=$VAL;;
733 lazy)
734 LAZY=1;;
735 termall)
736 TERMALL=1;;
737 segsym)
738 SEGSYM=1;;
739 pterm)
740 PTERM=1;;
741 resetprob)
742 RESETPROB=1;;
743 vcausal)
744 VCAUSAL=1;;
745 nomct)
746 ALLOWMCT=0;;
747 input)
748 INFILE=$VAL;;
749 output)
750 OUTFILE=$VAL;;
751 mode)
752 MODE=$VAL;;
753 prcwidth)
754 PRCWIDTH=$VAL;;
755 prcheight)
756 PRCHEIGHT=$VAL;;
757 debug)
758 DEBUG=$VAL;;
759 sop)
760 SOP=1;;
761 eph)
762 EPH=1;;
763 roirect)
764 ROIRECT=$VAL;;
765 verbose)
766 VERBOSE=1;;
767 fmt)
768 FMT=$VAL;;
770 echo "unknown option $TAG"
771 exit 1
773 esac
774 shift
775 done
777 if [ $VERBOSE -ne 0 ]; then
778 ERRFILE=/dev/stderr
779 else
780 ERRFILE=/dev/null
782 ERRFILE=/dev/stderr
784 if [ -z "$SOFTWARE" ]; then
785 echo "ERROR: NO SOFTWARE SELECTED"
786 exit 1
788 if [ -z "$INFILE" ]; then
789 echo "ERROR: NO INPUT FILE SPECIFIED"
790 exit 1
792 if [ -z "$OUTFILE" ]; then
793 echo "ERROR: NO OUTPUT FILE SPECIFIED"
794 exit 1
797 if [ ! -f $INFILE ]; then
798 echo "ERROR: INPUT FILE DOES NOT EXIST"
799 exit 1
802 if [ $RATE = 0 -a $MODE = real ]; then
803 echo "ERROR: CANNOT USE REAL MODE FOR LOSSLESS CODING"
804 exit 1
807 if [ $RATE = 0 ]; then
808 MODE=int
811 NUMDLVLS=`expr $NUMRLVLS - 1`
813 IMGFMT=$(image_info "$INFILE" format) || panic "cannot get image format"
814 IMGTYPE=$(image_info "$INFILE" type) || panic "cannot get image type"
815 if [ -z "$IMGTYPE" ]; then
816 echo "ERROR: CANNOT DETERMINE IMAGE TYPE"
817 exit 1
819 IMGWIDTH=$(image_info "$INFILE" width) || panic "cannot get image width"
820 IMGHEIGHT=$(image_info "$INFILE" height) || panic "cannot get image height"
821 IMGPREC=$(image_info "$INFILE" depth) || panic "cannot get image depth"
823 rm -f $OUTFILE
825 case $SOFTWARE in
826 jasper)
827 jasper_enc;;
829 vm_enc;;
830 jj2k)
831 jj2k_enc;;
832 kakadu)
833 kakadu_enc;;
835 oj_enc;;
837 echo "ERROR: INVALID SOFTWARE SPECIFIER"
838 exit 1
840 esac
841 STATUS=$?
843 if [ ! -f $OUTFILE ]; then
844 if [ $STATUS -eq 0 ]; then
845 STATUS=1
847 else
848 OUTFILESIZE=`wc -c $OUTFILE | awk '{print $1}' -`
849 if [ $OUTFILESIZE -eq 0 ]; then
850 if [ $STATUS -eq 0 ]; then
851 STATUS=1
856 if [ $STATUS -ne 0 ]; then
857 if [ $STATUS -eq 2 ]; then
858 echo "WARNING: ENCODER FEATURE NOT SUPPORTED"
859 else
860 echo "ERROR: ENCODER FAILURE"
862 exit $STATUS
865 exit 0