Ich muss Audio-Sample-Werte lesen. Ich verwende für die Audioqueue Rückruf (von Apple SpeakHere Beispiel):AudioQueue-Beispielwerte sind falsch
UInt32 samplesCount = inCompleteAQBuffer->mAudioDataBytesCapacity/2;
UInt16 *samples = (UInt16 *)inCompleteAQBuffer->mAudioData;
for (int i=0; i < samplesCount; i++)
{
printf("%i\n", samples[i]);
}
Werte zurückgegeben werden, aber wenn ich sie mit Grafik von Dreistigkeit vergleichen zu können, scheint sie falsch zu sein:
Audacity-Werte reichen von 1 (65535) bis -1 (0). So logisch erster Abtastwert 32767 sein sollte, sollte zweite ~ 50 000 ...
Aber ich empfing andere Ergebnisse:
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
Frage - warum Probenwerte von mAudioData zurück falsch sind?
Vielen Dank für Ihre Antwort. Aber ich habe bereits ein Audio-Unit-Beispiel aus [link] (https://github.com/reinforce-lab/MonoTouch.AudioUnit) und SInt32 verwendet, um Beispielwerte zu erhalten, und es hat für mich funktioniert. Übrigens, gibt es einen Unterschied zwischen SInt16 und UInt16? Ich meine, UInt16 anstelle von SInt16 zu verwenden, um Werte im Bereich von 0 (-32767 in SInt16) bis 65535 (32767 in SInt16) zu erhalten, ist falsch? – f3n1kc
Es ist in Ordnung mit mir, aber Sie werden nicht die gleichen Werte wie Dreistigkeit sehen, es sei denn, Sie Byte tauschen und verwenden SInt16. – hooleyhoop