//#include #include "archeops.h" #include "compress.h" //******************************************************************************************* //**************** ***************** //**************** decompress_3 ***************** //**************** ***************** //******************************************************************************************* #define ecart_mask 0x7 /* masque pour l'ecart */ void decom_3(int4 val,int4* in,int4*out,int n); #define k_mask 0xf /* masque pour l'exposant */ #define sgbi_ 0x4 /* bit de signe de l'ecart */ #define sign_ 0xfffffff8 /* masque de signe de l'ecart */ // compress un tableau in de n*9 points disposé avec un pas pasin // les data compressées sont ecrites dans le tableau out de n points // la valeur val est la valeur de reference du point origine /* comprime 9*n points : 1er point dans 1er mot, tous les ecarts dans les n mots suivants */ /* 9*n ==> n+1 pour 72 points : 9 mots */ void decompress_3_1(int4* in,int4*out,int n) { int4 val; val= *in; decom_3(val,in+1,out,n/9); } void decom_3(int4 val,int4* in,int4*out,int n) { register int4 R; int4 ec1,ec2,ec3,ec4,ec5,ec6,ec7,ec8,ec9; int i,k; for(i=0;i n+1 ==> pour 72 points : 11 mots */ void decompress_4_1(int4* in,int4*out,int n) { int4 val1,val2; val1= ( (*in & 0xffff0000)>>16 ) & 0x0000ffff; val2= ( (*in & 0x0000ffff) ) & 0x0000ffff; out[0]=val1; out[1]=val2; decom_4(val2,in+1,out+2,n/7); } void decom_4(int4 val,int4* in,int4*out,int n) { register int4 R; int4 ec1,ec2,ec3,ec4,ec5,ec6,ec7; int i,k; for(i=0;i n+2 ==> pour 72 points : 12 mots */ void decompress_4_2(int4* in,int4*out,int n) { int4 val1,val2; val1=in[0]; val2=in[1]; out[0]=val1; out[1]=val2; decom_4_paire(val1,val2,in+2,out+2,n/7); } void decom_4_paire(int4 val1,int4 val2,int4* in,int4*out,int n) { register int4 R; int4 ec1,ec2,ec3,ec4,ec5,ec6,ec7; int i,k; for(i=0;i n+1 */ void decom_7(int4 val,int4* in,int4*out,int n); void decompress_7_1(int4* in,int4*out,int n) { int4 val; val=*in; *out=val; decom_7(val,in+1,out,n/4); } /* compress un tableau in de n*4 points disposé avec un pas pasin */ /* les data compressées sont ecrites dans le tableau out de n points */ /* la valeur val est la valeur de reference du point origine */ void decom_7(int4 val,int4* in,int4*out,int n) { register int4 R; int4 ec1,ec2,ec3,ec4; int i,k; for(i=0;i n+1 */ /********************************************************************************/ void decom_7_paire(int4 val1,int4 val2,int4* in,int4*out,int n); void decompress_7_2(int4* in,int4*out,int n) { int4 val1,val2; val1= ( (*in & 0xffff0000)>>11 ) & 0x001fffe0; val2= ( (*in & 0x0000ffff)<<5 ) & 0x001fffe0; /*printf("val1=%x val2=%x \n",val1,val2);*/ decom_7_paire(val1,val2,in+1,out,n/4); } void decom_7_paire(int4 val1,int4 val2,int4* in,int4*out,int n) { register int4 R; int4 ec1,ec2,ec3,ec4; int i,k; for(i=0;i