En la documentación iOS 5.0 se indica que el tipo de datos de audio canónica es de tipo int con signo de 16 bits (link):¿Cuál es el audio de tipo de datos de la muestra canónica en IOS 5
El audio Tipo de muestra de datos canónico para entrada y salida.
typedef SInt16 AudioSampleType;
Discusión
El tipo de muestra de audio canónica para entrada y salida en iPhone OS es PCM lineal con las muestras de números enteros de 16 bits.
Sin embargo, si right-click "saltar a la definición" en la AudioSampleType
veo la siguiente definición, en CoreAudioTypes.h
:
#if !CA_PREFER_FIXED_POINT
typedef Float32 AudioSampleType;
typedef Float32 AudioUnitSampleType;
#else
typedef SInt16 AudioSampleType;
typedef SInt32 AudioUnitSampleType;
#define kAudioUnitSampleFractionBits 24
#endif
y otra vez cuando salto-a-def para CA_PREFER_FIXED_POINT
veo:
#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
Al comprobar en mi código en tiempo de ejecución, veo que CA_PREFER_FIXED_POINT
se define como 1, tanto en el simulador como en mi iPod.
lo tanto, mi pregunta:
- Qué es del tipo canónico? ¿Es siempre
SInt16
en el dispositivo? - ¿En qué caso la tercera línea anterior se evalúa como "verdadera"? Quiero decir, ¿qué dispositivo ejecuta iPhone OS y usa uno de los CPU enumerados?
- ¿Existe un caso de uso donde debería volver a definir
CA_PREFER_FIXED_POINT
en 0 (cuando se programa para iPhone)?