Вероятно, это очень простой вопрос для разработчика на C, однако я новичок в C и еще не полностью понял все концепции, стоящие за ним. Итак, прямо сейчас я использую этот код для объединения двух буферов (audioData и silenceData), а затем использую их для потоковой передачи некоторого аудио:
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];
}
Это прекрасно работает, но у меня такое ощущение, что должен быть лучший способ сделать это, может быть, какая-то встроенная функция?