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;
}