Die Android 10-Version enthält die folgenden Verbesserungen für hochauflösendes Audio:
- Float: WAV-, FLAC-Codecs und Extraktoren werden aktualisiert, um Float (24+ Bit verlustfreie Präzision) zu unterstützen. Downmix- und Virtualizer-Effekte werden auf Float aktualisiert. Aktualisierte Präzision wird von MediaPlayer (NuPlayer) zugelassen.
- Hochfrequenz: WAV-, FLAC-Codecs und Extraktoren wurden aktualisiert, um 192 kHz zu unterstützen. Die standardmäßig von Android bereitgestellten Effekte wurden auf 192-kHz-Unterstützung bei Standardfrequenzen getestet. Die zulässigen Standardfrequenzen sind 88,2 kHz, 96 kHz, 176,4 kHz und 192 kHz.
- Mehrkanal: Standardmäßige Android-Wiedergabeeffekte werden auf Mehrkanalunterstützung für acht Kanäle getestet.
- Timing: Timing-Informationen sind im gesamten Audio-Framework enthalten.
Ab Android 9 erfordern die folgenden Verbesserungen keine Partnerimplementierung:
- Die Anzahl der gleichzeitigen Client-Ausgabespuren erhöht sich von 14 auf 40, da begrenzte Client-Instanzen von
AudioTrack
ein Problem für Apps in Android 8.x darstellten. - Der maximale Client-/Serverspeicher erhöht sich von 4 MB auf 32 MB (abhängig vom gesamten Gerätespeicher), um mehr gleichzeitige hochauflösende Audiospuren zu ermöglichen.
- Die Gesamtzahl der gemischten Titel wird von 32 auf 256 erhöht, um Ressourcenkonflikte zwischen Apps und der System-Benutzeroberfläche zu verhindern.
Änderungen des Ausgabeeffekts
Siehe Audioeffekte für Versionsänderungen von Android 11.
Vor der Veröffentlichung von Android 9 wurde die Effektkettenverarbeitung im Stereo-Int16-Sample-Format implementiert. Dies hatte mehrere Einschränkungen:
- Alle Ausgabeeffekte erzwangen die Konvertierung von Gleitkomma-Audiodaten in int16, was zu Präzisionsverlusten führte.
- Ausgabeeffekte wurden von Ausgabesenken mit einer Kanalanzahl von mehr als zwei abgelehnt.
In der Android 9-Version wird die Verarbeitungspipeline der Effektkette aktualisiert, um das Mehrkanal-Float-Format zu unterstützen. Kernpunkte:
- Android-Softwareeffekte sind bereits auf Stereo Float migriert.
- Legacy-Effekte werden mit Formatadaptern unterstützt, die bei Bedarf float in int16 konvertieren.
Implementieren Sie Ausgabeeffekte
Eine Referenzimplementierung für Ausgabeeffekte ist unter frameworks/av/media/libeffects
verfügbar.
Partner, die ihre eigenen benutzerdefinierten Ausgabeeffekte implementieren, sollten für die Android 10-Version Folgendes tun:
- Aktualisieren Sie die Ausgabeeffekte, um das Mehrkanal-Float-Format zu unterstützen:
- Die Unterstützung der Int16-Verarbeitung ist nicht mehr erforderlich.
- Unterstützt Ausgangskanalanzahlen von 2–8 (für zukünftige Kompatibilität berücksichtigen Sie Anzahlen von 1–30).
- Unterstützt die Anzahl der Eingangskanäle, die mit der Anzahl der Ausgangskanäle für Insert-Effekte übereinstimmt. Für Zusatzeffekte wird weiterhin die Eingangskanalanzahl 1 (Mono) angezeigt.
- Unterstützt sowohl Kanalpositionsmasken (kanonisch) als auch Kanalindexmasken von
(1 << n) - 1
.
- Wenn Sie weiterhin Ausgabeeffekte älterer Anbieter unterstützen müssen und diese nicht aktualisieren können, überprüfen Sie den alten Code wie folgt:
- Legacy-Ausgabeeffekte (Einfügen) müssen nicht unterstützte Konfigurationen in
EFFECT_CMD_SET_CONFIG
ablehnen .- Überprüfen Sie, ob das Format int16 ist.
- Überprüfen Sie, ob die Eingangs- und Ausgangskanalmasken stereo sind.
- Wenn eine der Prüfungen fehlschlägt, geben Sie
-EINVAL
zurück.
- Legacy-Ausgangseffekte (Hilfseffekte) werden von AudioFlinger mit einer Mono-Eingangskanalmaske und möglicherweise Mehrkanal-Ausgangskanalmasken konfiguriert, je nachdem, ob die Ausgangssenke mehrkanalig ist. Sie müssen nicht unterstützte Konfigurationen in
EFFECT_CMD_SET_CONFIG
ablehnen .- Überprüfen Sie, ob das Format int16 ist.
- Stellen Sie sicher, dass die Eingangskanalmaske Mono und die Ausgangskanalmaske Stereo ist.
- Wenn eine der Prüfungen fehlschlägt, geben Sie
-EINVAL
zurück.
- Überprüfen Sie den Legacy-Code. Gehen Sie nicht davon aus, dass es funktioniert!
- Legacy-Ausgabeeffekte (Einfügen) müssen nicht unterstützte Konfigurationen in