gned int *) calloc(tree_depth,sizeof(int));
sign_bit = (char *) calloc(tree_depth,sizeof(int));
/* data structure for the maximum abs value of the coeffs. */
wvt_tree_maxval = (WINT *)calloc(len_tree_struct - (1<<(2*(levels-1))),
sizeof(WINT));
/* location map for reading wavelet coefficients */
hloc_map=(int *)calloc(len_tree_struct,sizeof(int));
vloc_map=(int *)calloc(len_tree_struct,sizeof(int));
hloc_map[0]=0;
vloc_map[0]=0;
for(i=1;i<tree_depth;i++){
npix=1<<(2*(i-1));
pos=level_pos[i];
start=level_pos[i-1];
end=level_pos[i];
for(j=start;j<end;j++)
{
hpos_start=2*hloc_map[j];
vpos_start=2*vloc_map[j];
hpos_end=hpos_start+2;
vpos_end=vpos_start+2;
for(y=vpos_start;y<vpos_end;y++)
for(x=hpos_start;x<hpos_end;x++){
hloc_map[pos]=x;
vloc_map[pos]=y;
pos++;
}
} /* end of j */
} /* end of i */
/* scan trees */
len=2*(len_tree_struct-(1<<(2*(levels-1))));
ScanTrees = (short *)calloc(len,sizeof(short));
next_ScanTrees = (short *)calloc(len,sizeof(short));
/* significant coefficents */
sig_pos = (short *)calloc(len_tree_struct,sizeof(short));
sig_layer = (char *)calloc(len_tree_struct,sizeof(char));
/* total number of significant coefficients */
num_Sig = 0;
/* sign bit buffer */
sign_bit = (char *)calloc(len_tree_struct,sizeof(char));
/* previous zerotree status */
prev_label = (unsigned char*)calloc(len_tree_struct,sizeof(char));
/* arithmetic encoder structure */
Decoder = (Ac_decoder **)calloc(tree_depth,sizeof(Ac_decoder *));
for(i=0;i<tree_depth;i++)
Decoder[i]=(Ac_decoder *)calloc(Max_Bitplane, sizeof(Ac_decoder));
/* set the bitstream buffer for encoder */
/* arithmetic encoder structure */
Decoder = (Ac_decoder **)calloc(tree_depth,sizeof(Ac_decoder *));
for(i=0;i<tree_depth;i++)
Decoder[i]=(Ac_decoder *)calloc(Max_Bitplane, sizeof(Ac_decoder));
/* context models */
context_model = (Ac_model *)calloc(Max_Bitplane*levels*NumContexts,sizeof(Ac_model));
for(bpos=Max_Bitplane-1;bpos>=0;bpos--)
for(i=0;i<tree_depth;i++)
for(j=0;j<NumContext_per_pixel;j++)
for (band=0;band<