gpt4 book ai didi

objective-c - C中的缓冲区(unsigned char *)连接

转载 作者:行者123 更新时间:2023-12-04 03:08:47 27 4
gpt4 key购买 nike

对于 C 开发人员来说,这可能是一个非常简单的问题,但是,我是 C 的新手,我还没有完全掌握它背后的所有概念。所以,现在,我使用此代码连接 2 个缓冲区(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];
}

这很好用,但我觉得一定有更好的方法,也许是一些内置函数?

最佳答案

这一次,您可以使用 memcpy 而不是使用循环,这要快得多,即:

memcpy(beatData.data, audioData.data, audioData.size);

关于objective-c - C中的缓冲区(unsigned char *)连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5557589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com