gpt4 book ai didi

iphone - 核心音频 - CARIngBuffer

转载 作者:行者123 更新时间:2023-12-03 20:11:14 25 4
gpt4 key购买 nike

我正在考虑在 iPhone SDK 3.1 Developer\Extras\CoreAudio\PublicUtility 中使用 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 的边界,导致崩溃。为什么这个类没有被检查来防止这种情况发生?

最佳答案

您需要下载此类的更新(已修复错误)版本以消除越界崩溃。

https://developer.apple.com/library/content/qa/qa1665/_index.html

关于iphone - 核心音频 - CARIngBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com