音频缓冲区分配与否?

时间:2012-04-30 10:29:46

标签: objective-c xcode core-audio

在这里发布了几次关于在iphone中读取缓冲区的内存问题之后,我被告知不要在回调函数中使用malloc。

所以我把它拿出来,现在我不用malloc缓冲区,现在内存以每秒1mb的速度增长!!

似乎我不明白这里基本的东西,我会很高兴在这里我将要做的事情。

其他答案,对我来说并不太具体,所以我无法指出究竟要做什么。

这是新的回调:

static OSStatus recordingCallback(void *inRefCon, 
                                  AudioUnitRenderActionFlags *ioActionFlags, 
                                  const AudioTimeStamp *inTimeStamp, 
                                  UInt32 inBusNumber, 
                                  UInt32 inNumberFrames, 
                                  AudioBufferList *ioData) 
{



    AudioBuffer buffer;
    buffer.mNumberChannels = 1;
    buffer.mDataByteSize = inNumberFrames * 2; //* sizeof(SInt16) ?
    buffer.mData = NULL;// **took out : malloc( inNumberFrames * 2 );**

    // Put buffer in a AudioBufferList
    AudioBufferList bufferList;
    bufferList.mNumberBuffers = 1;
    bufferList.mBuffers[0] = buffer;


    OSStatus status;

    status = AudioUnitRender(audioUnit, 
                              ioActionFlags, 
                             inTimeStamp, 
                              inBusNumber, 
                             inNumberFrames, 
                              &bufferList); 



   int16_t *q = (int16_t *)(&bufferList)->mBuffers[0].mData;
    for(int i=0; i < inNumberFrames; i++)
    {
        NSLog(@"%d",q[i]);
    }



    return noErr;



}

0 个答案:

没有答案