Estoy intentando leer datos de audio a través de AudioQueue. Cuando lo hago, puedo verificar que la profundidad de bits del archivo sea de 16 bits. Pero cuando obtengo los datos de muestra reales, solo estoy viendo valores de -128 a 128. Pero también veo datos intercalados que parecen sospechosos, lo que me hace estar bastante seguro de que simplemente no estoy leyendo los datos correctamente.Lectura de datos del búfer de audio con AudioQueue
Para empezar, puedo verificar que el archivo fuente es 44100, 16 bits, mono wav.
Mi búfer se asigna así:
char *buffer= NULL; buffer = malloc(BUFFER_SIZE); assert(buffer);
Todos los valores pertinentes se establecen y se utiliza en:
AudioFileReadPackets(inAudioFile,false,&bytesRead,NULL,packetNum,&numPackets,buffer);
Como prueba, sólo para que yo puedo ver los datos recuperados, corro :
for(int i=0;i<BUFFER_SIZE;i++){ NSLog(@"%i", buffer[i]); }
Ahora, sé que mis picos de archivos fuente por todo el lugar, pero los valores no veo más que un máximo de -128 nd 128. Dado que se trata de un archivo de 16 bits, esperaría que los valores fueran de -32768 a 32768.
Además, parece haber dos patrones en los datos. He aquí un ejemplo de los datos devueltos:
70 -13 31 -11 -118 -9 -15 -7 116 -4 31 -1 28 1 84 2 -123 3 -97 4 110 5 54 6 126
Ahora echar un vistazo a cada dos filas a partir de la segunda fila: -13. Vea cómo aumenta, no de manera uniforme, pero al menos sin problemas? Las filas impares no están ni cerca de eso sin problemas.
Lo primero que pensé es que se trata de datos estéreo intercalados, pero no, es solo un canal, por lo que no debería haber entrelazado, ¿verdad?
Mi mejor estimación es que solo estoy leyendo los datos incorrectamente, por lo que los datos de muestra se distribuyen entre dos declaraciones. Alguna idea de como leerlo correctamente?
Gracias por leer toda la pregunta y cualquier información que pueda ofrecer.
Gracias de nuevo Peter! –