gpt4 book ai didi

iphone - iOS 5 中的规范音频样本数据类型是什么

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

在 iOS 5.0 文档中声明规范音频数据类型是 16 位有符号整数 (link):

The canonical audio data sample type for input and output.

typedef SInt16 AudioSampleType;

Discussion

The canonical audio sample type for input and output in iPhone OS is linear PCM with 16-bit integer samples.

但是,如果我在 AudioSampleType 上右键单击“跳转到定义”,我会在 CoreAudioTypes.h 中看到以下定义:

#if !CA_PREFER_FIXED_POINT
typedef Float32 AudioSampleType;
typedef Float32 AudioUnitSampleType;
#else
typedef SInt16 AudioSampleType;
typedef SInt32 AudioUnitSampleType;
#define kAudioUnitSampleFractionBits 24
#endif

再次跳转到 CA_PREFER_FIXED_POINT 时,我看到了:

#if !defined(CA_PREFER_FIXED_POINT)
#if TARGET_OS_IPHONE
#if (TARGET_CPU_X86 || TARGET_CPU_X86_64 || TARGET_CPU_PPC || TARGET_CPU_PPC64) && !TARGET_IPHONE_SIMULATOR
#define CA_PREFER_FIXED_POINT 0
#else
#define CA_PREFER_FIXED_POINT 1
#endif
#else
#define CA_PREFER_FIXED_POINT 0
#endif
#endif

在运行时检查我的代码,我看到 CA_PREFER_FIXED_POINT 在模拟器和我的 iPod 上都被定义为 1。

所以,我的问题:

  • 什么规范类型?设备上是否总是 SInt16
  • 在什么情况下上面的第 3 行计算为“真”?我的意思是,哪个设备运行 iPhone 操作系统并使用列出的 CPU 之一?
  • 是否有我应该将 CA_PREFER_FIXED_POINT 重新定义为 0 的用例(在为 iPhone 编程时)?

最佳答案

阅读链接的内容,并再次在您的标题中阅读此行:

#define kAudioUnitSampleFractionBits 24

音频输入输出的规范类型等同于SInt16。

其他音频处理的规范类型,例如新的 iOS 5 过滤器音频单元,是 8.24 有符号定点。

如果您为近乎实时的 iOS 音频处理编写自己的 DSP 代码,请使用不同类型对其进行基准测试,因为在一些最新的 ARM 内核上,32 位浮点序列通常比使用上述任何一种更快规范类型,并以更快的速度在 NEON asm 代码中编码。

关于iphone - iOS 5 中的规范音频样本数据类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9086516/

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