Nella documentazione iOS 5.0 si afferma che il tipo di dati audio canonico è a 16 bit int firmato (link):Qual è l'audio tipo di dati di esempio canonico in iOS 5
L'audio tipo di campione di dati canonico per ingresso e uscita.
typedef SInt16 AudioSampleType;
Discussione
Il tipo campione audio canonica per l'input e l'output in iPhone OS è PCM lineare con campioni interi a 16 bit.
Tuttavia, se right-click "Vai a definizione" su AudioSampleType
vedo la seguente definizione, in CoreAudioTypes.h
:
#if !CA_PREFER_FIXED_POINT
typedef Float32 AudioSampleType;
typedef Float32 AudioUnitSampleType;
#else
typedef SInt16 AudioSampleType;
typedef SInt32 AudioUnitSampleType;
#define kAudioUnitSampleFractionBits 24
#endif
e di nuovo quando jump-to-def per CA_PREFER_FIXED_POINT
vedo:
#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
Controllando il mio codice in fase di esecuzione, vedo che CA_PREFER_FIXED_POINT
è definito come 1, sia sul simulatore che sul mio iPod.
Quindi, le mie domande:
- Che è tipo canonica? È sempre
SInt16
sul dispositivo? - In quale caso la terza riga sopra è "vera"? Voglio dire, quale dispositivo esegue il SO iPhone e usa una delle CPU elencate?
- C'è un caso d'uso in cui avrei dovuto ridefinire
CA_PREFER_FIXED_POINT
-0 (in fase di programmazione per iPhone)?