2015-12-02 123 views
0

我正在合併兩個pcm數據,並且合成的pcm有額外的grrrrrrrrrr噪音。我的代碼是:合併兩個pcm文件時的噪音

int main(void) 
{ 

    FILE *rCAudio; 
    FILE *raudio; 
    FILE *wtest; 

    rCAudio=fopen("Audio1.pcm","rb");  //Reading first pcm file 
    if(rCAudio==NULL) 
     cout<<"Errr"; 


    raudio=fopen("Audio2.pcm","rb");  //Reading second pcm file 
    if(raudio==NULL) 
     cout<<"Errr"; 

    fopen_s(&wtest,"AudioMerge.pcm","ab"); // Writing final pcm file 

    short* first= new short[1792];; 
    short* second= new short[1792];; 
    short* merge = new short[1792]; 
    short sample1,sample2; 

    while(1) 
    { 
     fread(first,2,1792,rCAudio); 
     fread(second,2,1792,raudio); 

     for(int j=0;j<1792;j++) 
     { 
      sample1 = first[j]; 
      sample2 = second[j]; 
      int mixedi=(int)sample1 + (int)sample2; 
      if (mixedi>32767) mixedi=32767; 
      if (mixedi<-32768) mixedi=-32768; 

      merge[j] =(short)mixedi; 
     } 
     fwrite(merge,2,1972,wtest); 
    } 
} 

回答

0

我得到了解決,問題是: 我曾在某時間字節Audio2.pcm在BYTE一次書面Audio1.pcm 4096個字節,4096個字節。但是我一次只讀了1972字節。

所以我通過在BYTE中每次讀取4096個字節來糾正它,並通過在BYTE中一次以4096字節保存第三個合併文件。