在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編程時)?