對於C開發人員來說,可能是一個非常簡單的問題,但是我對C很陌生,我並沒有完全掌握它背後的所有概念。所以,現在,我使用此代碼來連接2個緩衝器(audioData和silenceData),然後用它們來流一些音頻:C中的緩衝區(無符號字符*)連接
typedef struct {
unsigned char * data;
UInt32 size;
} SoundData;
SoundData audioData;
audioData.data = audioFiles[currentSoundDataIndex];
audioData.size = audioFilesSize[currentSoundDataIndex];
SoundData silenceData;
silenceData.size = 44100*2*fabs(silenceDuration-0.049f);
silenceData.data = malloc(silenceData.size);
memset(silenceData.data,0,silenceData.size);
//beat data
SoundData beatData;
beatData.size = (audioData.size + silenceData.size);
beatData.data = malloc(beatData.size);
for (int i=0; i<audioData.size; i++) {
beatData.data[i] = audioData.data[i];
}
for (int i=audioData.size; i<beatData.size; i++) {
beatData.data[i] = silenceData.data[i-audioData.size];
}
這工作得很好,但我有一種感覺,必須有一個更好的辦法做到這一點,一些內置的功能可能?
嘛'memcpy'很可能是有用的。 – Erik 2011-04-05 19:49:07
奇怪的是,因爲我嘗試過,它失敗了(聲音完全改變!),也許我沒有正確使用,雖然它非常簡單,但會再次嘗試... – 2011-04-05 19:50:58
爲什麼選擇C++標記? C++解決方案會有所不同。 – Cubbi 2011-04-05 19:55:15