在iOS的5.0文档中指出,规范的音频数据的类型是16位的符号的int(link)类型:什么是规范的音频样本数据在IOS 5
的规范的音频数据样本类型为输入和输出。
typedef SInt16 AudioSampleType;
讨论
在iPhone OS的输入和输出的规范音频样本类型是 与16位整数标本线性PCM。
但是,如果我用鼠标右键单击“跳转到”上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
时再跳跃到DEF为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
被定义为1,无论是在模拟器上还是在我的iPod上。
所以,我的问题:
- 什么是所述规范类型?是否总是
SInt16
在设备上? - 上面的第三行评估为“真”的是什么情况?我的意思是,哪个设备运行iPhone OS并使用某个列出的CPU?
- 有没有一个用例,我应该重新定义
CA_PREFER_FIXED_POINT
为0(当为iPhone编程时)?