W dokumentacji iOS 5.0 jest powiedziane, że kanoniczny dźwięku typ danych to 16-bitowa int (link):Jaki jest kanoniczny dźwięku próbka typ danych w iOS 5
Kanoniczna dźwięku typ próbki danych dla wejście i wyjście.
typedef SInt16 AudioSampleType;
Dyskusja
Kanoniczna dźwięku typ próbki dla wejścia i wyjścia w iPhone OS jest liniowy PCM 16-bitowych próbek całkowitych.
Jednak jeśli mam rację kliknij "skakać do definicji" na AudioSampleType
widzę następującą definicję w CoreAudioTypes.h
:
#if !CA_PREFER_FIXED_POINT
typedef Float32 AudioSampleType;
typedef Float32 AudioUnitSampleType;
#else
typedef SInt16 AudioSampleType;
typedef SInt32 AudioUnitSampleType;
#define kAudioUnitSampleFractionBits 24
#endif
i ponownie, gdy skok do def dla CA_PREFER_FIXED_POINT
widzę:
#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
Sprawdzanie mojego kodu w czasie wykonywania, widzę, że CA_PREFER_FIXED_POINT
jest zdefiniowany jako 1, zarówno na symulatorze i na moim iPodzie.
Więc moje pytania:
- Co jest typ kanoniczne? Czy na urządzeniu jest zawsze zawsze
SInt16
? - W jakim przypadku trzecia linijka powyżej oznacza "prawda"? Chodzi mi o to, które urządzenie uruchamia iPhone OS i używa jednego z wymienionych procesorów?
- Czy istnieje przypadek, w którym powinienem ponownie zdefiniować
CA_PREFER_FIXED_POINT
na 0 (podczas programowania dla iPhone'a)?