6 Stimmen

iOS: Audio Units: Beliebige Abtastrate einstellen

Kann ich jede beliebige Abtastrate einstellen? Welche Einschränkungen gibt es?

Wie sieht es mit der Hardware-Abtastrate aus? Und wenn diese einmal eingestellt ist, was ist die Beschränkung für die internen Abtastraten, die zwischen den Geräten weitergegeben werden?

Ich vermute, dass die tatsächliche Hardwarerate eine Bitverschiebung von 44,1 KHz sein muss, und alle internen Abtastraten müssen eine Bitverschiebung dieses ursprünglichen Wertes nach unten sein (z. B. 22,1 KHz, 11,05 KHz). Liegt das nahe?

Soweit ich das verstanden habe,
1. I einstellen. die Hardware-Sample-Rate aus der Audio-Session.
2. Die System wird einstellen. eine Abtastrate so gut es geht auf die von mir angegebene Abtastrate.
3. Dann frage ich die Audiositzung nach der gleichen Eigenschaft ab, die ich eingestellt habe und die mir die tatsächliche Abtastrate liefert, die sie verwendet

Auf der Ebene der Audioeinheiten, insbesondere der RemoteIO-Einheit, besagt die Dokumentation, dass die beiden Punkte, an denen die Einheit mit der Hardware verbunden ist (d. h. der Eingangsbereich des Mikrofonbusses (Eingang) und der Ausgangsbereich des Lautsprecherbusses (Ausgang)), die Abtastrate sein kann abgerufen mais no einstellen. .

Wenn ich jedoch versuche, auf diesen Wert zuzugreifen, während ich die Remote-I/O-Einheit erstelle, wird Null zurückgegeben. Ich schätze, ich muss vielleicht Start das Gerät, bevor ich aussagekräftige Daten von seinen Anschlüssen erhalten kann (der Akt des Einschaltens schafft wahrscheinlich die Verbindungen). Die Lösung scheint also darin zu bestehen, die Abtastrate aus der Audiositzung abzurufen und diese zu verwenden, wie oben beschrieben.

NEED TAG: Audio-Einheit

3voto

lucius Punkte 8505

Ich gehe davon aus, dass Sie iOS verwenden, da Sie AudioSessions erwähnen. Das werden Sie also wollen:

  1. Überprüfen Sie die Audioeingangs-Hardware. AudioSessionGetProperty (kAudioSessionProperty_AudioInputAvailable...)

  2. Setzen Sie die Audiositzung in den Modus "Wiedergabe und Aufnahme". AudioSessionSetProperty (kAudioSessionProperty_AudioCategory...) con kAudioSessionCategory_PlayAndRecord

  3. Aktivieren Sie die Sitzung. AudioSessionSetActive()

  4. Wählen Sie die gewünschte Abtastrate. AudioSessionGetProperty (kAudioSessionProperty_CurrentHardwareSampleRate)

Dann können Sie Ihre Audioverarbeitungskette mit der richtigen Abtastrate einrichten.

Für die Audiowiedergabe können Sie eine beliebige Abtastrate verwenden, die von der API in die Ausgangsabtastrate der Hardware konvertiert wird. Wenn Sie eine sehr hohe Abtastrate verwenden, verbraucht dies natürlich viel Speicher und CPU-Zeit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X