Salve,

sto implementando una sorta di compressione dei file audio, (lo vuole cosi) .
Ecco tra i tanti problemi ho questo: devo fare in modo, che quando ho campioni audio uguali (entro certi limiti) di cambiarli in valori uguali.
Questo è il codice e la parte in questione dovrebbe andare nell if ls.

Suggerimenti?

Codice PHP:
int main(int argcchar **argv)
{
   
FILE *in,*out;
   
WAVHDR whr;
   
int i,i1,i2,js,ls,i4,ths;
   
signed short sample,samples[513][2],sample_o[2];
   
unsigned long pos;

   
in fopen("h:\\canzoni\\audio.wav","rb");
   if(
in == NULL)
       return -
1;
   
out fopen("c:\\out.raw","wb+");
   if(
out == NULL){
       
fclose(in);
       return -
2;
   }

   
fread(&whr,sizeof(WAVHDR),1,in);
   
pos 0;
   
i4 0;
   for(
i=0;i<10000;i++){
       
pos 0;
       for(
i1=0;i1<513;i1++){
           for(
i2=0;i2<2;i2++){
               
signed short s;

               
fread(&sample,sizeof(short),1,in);
               if(
pos == 0){
                   
sample_o[i2] = sample;
                   
sample;
               }
               else{
                   
sample sample_o[i2];
                   
sample_o[i2] = sample;
               }
               
samples[i1][i2] = s;
           }
           if(
pos == 0)
               
i1++;
           
pos++;
       }
       if(
ls){ //qui
           
signed short s,s1;

           for(
i1=2;i1<513;i1++){
               for(
i2=0;i2<2;i2++){

               }
           }
       }

       
js 1;
       if(
js && whr.wNumChannels == 2){
           for(
i1=2;i1<513;i1++)
               
samples[i1][1] = samples[i1][0] - samples[i1][1];
       }
       {
           
int m[4];

           
m[0] = m[2] = samples[2][0];
           
m[1] = m[3] = samples[2][1];
           for(
i1=3;i1<513;i1++){
               for(
i2=0;i2<2;i2++){
                   
int i3;
                   
signed short s;

                   
samples[i1][i2];
                   
i3 i2;
                   if(
0)
                       
i3+= 2;
                   
m[i3] += s;
                   
m[i3] >>= 1;
               }
           }
           
samples[1][0] = m[0];
           
samples[1][1] = m[1];
           for(
i1=2;i1<513;i1++){
               for(
i2=0;i2<2;i2++){
                   
signed short s,s1;
                   
int i3;

                   
samples[i1][i2];
                   
i3 i2;
                   if(
0)
                       
i3+= 2;
                   
s1 m[i3];
                   if(
&& !s1){
                       
s1 = -1;
                       
i4++;
                   }
                   
samples[i1][i2] = s1;
               }
           }
       }

       
fwrite(samples,sizeof(samples),1,out);
   }
   
fclose(in);
   
fclose(out);
   return 
0;

Grazie