Как преобразовать аудио массив float в AudioBufferList iOS?

Я хочу преобразовать массив Audio float в 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;}

Но я получаю шумный звук.

0 ответов

Другие вопросы по тегам