3
我正在使用iPhone SDK 3.1 Developer \ Extras \ CoreAudio \ PublicUtility中的CARingBuffer,但对其某些方法有点困惑。首先,这对所有使用这个类的人都是有意义的核心音频 - CARIngBuffer
例如,GetTimebounds,SetTimeBounds,ClipTimeBounds函数实际上是在做什么?
而且使用时,我得到引起例如该方法在主要取方法崩溃
- > ZeroABL(ABL,0,destStartOffset * mBytesPerFrame);
CARingBufferError CARingBuffer::Fetch(AudioBufferList *abl, UInt32 nFrames, SampleTime startRead)
{
SampleTime endRead = startRead + nFrames;
SampleTime startRead0 = startRead;
SampleTime endRead0 = endRead;
SampleTime size;
CARingBufferError err = ClipTimeBounds(startRead, endRead);
if (err) return err;
size = endRead - startRead;
SInt32 destStartOffset = startRead - startRead0;
if (destStartOffset > 0) {
ZeroABL(abl, 0, destStartOffset * mBytesPerFrame);
}
这里destStartOffset已经变得比ABL Bufferlist的大小,所以当一个memset的完成它超过了ABL Bufferlist的边界导致崩溃较大。为什么这个班没有接受检查以防止这种情况发生?
我最近有同样的问题,我正在使用QA1665更新。 – sbooth 2011-05-30 13:55:28