Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346

    Comprimere un file audio

    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
    Per gli Spartani e Sparta usa spartan Il mio github

  2. #2
    Dovresti facilitarci il compito dandoci qualche informazione in più, magari sul meccanismo e sulle variabili che utilizzi nel codice..

    Ciao

  3. #3
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Ok risolto si usera ADPCM. Grazie lo stesso
    Per gli Spartani e Sparta usa spartan Il mio github

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.