如何将音频浮点数组转换为AudioBufferList iOS?

如何将音频浮点数组转换为AudioBufferList iOS?,ios,objective-c,shoutcast,lame,Ios,Objective C,Shoutcast,Lame,我想将音频浮点数组转换为AudioBufferList 下面是我用来转换的代码 - (AudioBufferList *)writeList:(int)numFrames fromArray:(float**)data{ if (!data) return nil; if (!numFrames) return nil; AudioBufferList *abl = AllocateAudioBufferList(mStreamFormat.mChannelsPer

我想将音频浮点数组转换为AudioBufferList

下面是我用来转换的代码

- (AudioBufferList *)writeList:(int)numFrames fromArray:(float**)data{    
if (!data)        return nil;

if (!numFrames)    return nil;
AudioBufferList *abl = AllocateAudioBufferList(mStreamFormat.mChannelsPerFrame, numFrames*sizeof(short));

if (!abl)        return nil;

for (long c = 0; c < mStreamFormat.mChannelsPerFrame; c++) {
    abl->mBuffers[c].mNumberChannels = 2;
    abl->mBuffers[c].mDataByteSize = numFrames*sizeof(short);
    if (data[c]) {
        short *buffer = (short*)abl->mBuffers[c].mData;
        for (long v = 0; v < numFrames; v++) {
            if (data[c][v] > 0.999)        data[c][v] = 0.999;
            else if (data[c][v] < -1.)    data[c][v] = -1.;
            buffer[v] = (short)(data[c][v]*32768.f);
        }
    }
    else     
        memset(abl->mBuffers[c].mData, 0,numFrames*sizeof(short));
}

return abl;}
-(AudioBufferList*)writeList:(int)numFrames fromArray:(float**)数据{
如果(!data)返回nil;
如果(!numFrames)返回nil;
AudioBufferList*abl=AllocateAudioBufferList(mStreamFormat.mChannelsPerFrame,numFrames*sizeof(short));
如果(!abl)返回零;
for(长c=0;cmBuffers[c].mNumberChannels=2;
abl->mBuffers[c].mDataByteSize=numFrames*sizeof(短);
如果(数据[c]){
short*buffer=(short*)abl->mbuffer[c].mData;
对于(长v=0;v0.999)数据[c][v]=0.999;
如果(数据[c][v]<-1.)数据[c][v]=-1。;
缓冲区[v]=(短)(数据[c][v]*32768.f);
}
}
其他的
memset(abl->mBuffers[c].mData,0,numFrames*sizeof(short));
}
返回abl;}
但我会听到嘈杂的声音