gpt4 book ai didi

iphone - 了解 AurioTouch

转载 作者:可可西里 更新时间:2023-11-01 05:38:01 26 4
gpt4 key购买 nike

在 iPhone 的 AurioTouch 示例中,以下代码用于将样本添加到渲染到屏幕时使用的绘制缓冲区

SInt8 *data_ptr = (SInt8 *)(ioData->mBuffers[0].mData);
for (int i=0; i<numFrames; i++)
{
if ((i+drawBufferIdx) >= drawBufferLen)
{
cycleOscilloscopeLines();
drawBufferIdx = -i;
}

drawBuffers[0][i + drawBufferIdx] = data_ptr[2];
data_ptr += 4;
}

我根本不明白为什么会这样。实际的 mData 缓冲区包含定点 8.24 LPCM 中的 SInt32 个样本。

但是,循环似乎将每个样本的第 3 个字节提取为 SInt8 并使用此值(范围从 -128 到 +127)来表示样本。

如果样本是一个 24 位值,那么这个样本的有效值如何?为什么要查看 SInt32 的第 3 个字节并转换为 SInt8?

我很困惑。感谢任何可以向我解释的人!

最佳答案

24 位数字的前 8 位是最重要的部分。相对于全尺寸,其余不太重要的部分太小,无法在 iPhone 显示屏上显示。最高有效 8 位位于内存中 little-endian 24 位数据类型的第 3 个字节。

关于iphone - 了解 AurioTouch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11205259/

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