Мне нужно прочитать значения аудиосэмпла.Я использую для этого обратного вызова audioQueue (из примера Apple SpeakHere):
UInt32 samplesCount = inCompleteAQBuffer->mAudioDataBytesCapacity / 2;
UInt16 *samples = (UInt16 *)inCompleteAQBuffer->mAudioData;
for (int i=0; i < samplesCount; i++)
{
printf("%i\n", samples[i]);
}
Значения возвращаются, но когда я сравниваю их с графиком из Audacity, они кажутся неправильными:
Значения Audacity находятся в диапазоне от 1 (65535) до -1 (0).Таким образом, логически первое значение образца должно быть 32767, второе должно быть ~ 50 000 ...
Но я получаю другие результаты:
value - position
65535 - 0
29501 - 1
26086 - 2
63656 - 3
28477 - 4
65407 - 5
36802 - 6
36546 - 7
18244 - 8
17220 - 9
player settings:
(Float64) mSampleRate = 44100
(UInt32) mBytesPerPacket = 2
(UInt32) mFramesPerPacket = 1
(UInt32) mBytesPerFrame = 2
(UInt32) mChannelsPerFrame = 1
(UInt32) mBitsPerChannel = 16
(UInt32) mReserved = 0
Вопрос - почему значения выборки, возвращаемые из mAudioData, неверны?