2010-04-05 4 views
3

Я смотрю на использование CARingBuffer в iPhone SDK 3.1 Developer \ Extras \ CoreAudio \ PublicUtility, однако был немного озадачен некоторыми из его методов. Во-первых, это будет иметь смысл только для тех, кто использовал этот класс.Core Audio - CARIngBuffer

Например, функции GetTimebounds, SetTimeBounds, ClipTimeBounds выполняют то, что они на самом деле делают?

Кроме того, при использовании его, я получаю сбои, вызванные, например, этот метод в основном Fetch методу

-> 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 причиной аварии. Почему этот класс не получил чеки, чтобы предотвратить это?

+0

Я недавно была такая же проблема, и я использую обновление QA1665. – sbooth

ответ

Смежные вопросы