当我经常停止和开始音频播放并通过ExtAudioFileRef
对象在 AAC 音频文件中来回寻找很多时,就会出现问题。在少数情况下,这种奇怪的行为表现为ExtAudioFileRead
:
有时它会将这些数字分配给mDataByteSize
唯一AudioBuffer
的AudioBufferList
:
-51604480
-51227648
-51350528
-51440640
-51240960
在十六进制中,这些数字具有模式0xFC....00
。
编码:
status = ExtAudioFileRead(_file, &numberFramesRead, ioData);
printf("s=%li d=%p d.nb=%li, d.b.d=%p, d.b.dbs=%li, d.b.nc=%li\n", status, ioData, ioData->mNumberBuffers, ioData->mBuffers[0].mData, ioData->mBuffers[0].mDataByteSize, ioData->mBuffers[0].mNumberChannels);
输出:
s=0 d=0x16668bd0 d.nb=1, d.b.d=0x30de000, d.b.dbs=1024, d.b.nc=2 // good (usual)
s=0 d=0x16668bd0 d.nb=1, d.b.d=0x30de000, d.b.dbs=-51240960, d.b.nc=2 // misbehaving
该问题发生在 iOS 7 上的 iPhone 4S 上。我无法在模拟器中重现该问题。