Die Android 10-Version enthält die folgenden Verbesserungen für hochauflösende Audioinhalte:
- Gleitkommazahl:WAV- und FLAC-Codecs und ‑Extrahierungsprogramme wurden aktualisiert, um Gleitkommazahlen (24 Bit und mehr mit verlustfreier Präzision) zu unterstützen. Downmix- und Virtualizer-Effekte wurden auf Gleitkommazahlen aktualisiert. Die aktualisierte Genauigkeit wird von MediaPlayer (NuPlayer) unterstützt.
- Hochfrequenz:WAV- und FLAC-Codecs und ‑Extraktoren wurden aktualisiert, um 192 kHz zu unterstützen. Die standardmäßigen Android-Effekte werden bei Standardfrequenzen auf 192 kHz getestet. Die zulässigen Standardfrequenzen sind 88,2 kHz, 96 kHz, 176,4 kHz und 192 kHz.
- Mehrkanal:Die standardmäßigen Android-Wiedergabeeffekte werden für die Unterstützung von bis zu acht Kanälen getestet.
- Timing:Timing-Informationen sind im gesamten Audio-Framework enthalten.
Ab Android 9 sind für die folgenden Verbesserungen keine Partnerimplementierungen erforderlich:
- Die Anzahl der gleichzeitigen Client-Ausgabetracks wird von 14 auf 40 erhöht, da begrenzte Client-Instanzen von
AudioTrack
ein Problem für Apps unter Android 8.x waren. - Der maximale Client-/Serverspeicher wird von 4 MB auf 32 MB erhöht (abhängig vom Gesamtspeicher des Geräts), um mehr gleichzeitige hochauflösende Audiotracks zu ermöglichen.
- Die Gesamtzahl der gemischten Tracks wird von 32 auf 256 erhöht, um Ressourcenkonflikte zwischen Apps und der System-UI zu vermeiden.
Änderungen der Auswirkung der Ausgabe
Informationen zu Änderungen im Release für Android 11 finden Sie unter Audioeffekte.
Vor der Veröffentlichung von Android 9 wurde die Verarbeitung von Effektketten im Stereo-Int16-Beispielformat implementiert. Das hatte mehrere Einschränkungen:
- Alle Ausgabeeffekte erzwangen die Konvertierung von Audio-Gleitkommadaten in int16, was zu einem Verlust an Präzision führte.
- Ausgabe-Effekte wurden von Ausgabezielen mit mehr als zwei Kanälen abgelehnt.
In Android 9 wurde die Verarbeitungspipeline für Effektketten aktualisiert, um das Mehrkanal-Gleitkommaformat zu unterstützen. Wichtige Punkte:
- Android-Softwareeffekte wurden bereits zu Stereo-Float migriert.
- Legacy-Effekte werden mit Formatadaptern unterstützt, die Gleitkommazahlen bei Bedarf in int16 konvertieren.
Auswirkung der Ausgabe implementieren
Eine Referenzimplementierung für Ausgabeeffekte ist unter frameworks/av/media/libeffects
verfügbar.
Partner, die eigene benutzerdefinierte Ausgabeeffekte implementieren, sollten für die Android 10-Version Folgendes tun:
- Aktualisieren Sie die Ausgabeeffekte, um das Multichannel-Gleitkommaformat zu unterstützen:
- Die Unterstützung der Int16-Verarbeitung ist nicht mehr erforderlich.
- Unterstützen Sie die Anzahl der Ausgabekanäle von 2 bis 8. Für die zukünftige Kompatibilität sollten Sie Anzahlen von 1 bis 30 in Betracht ziehen.
- Unterstützung von Eingabekanälen, deren Anzahl mit der Anzahl der Ausgabekanäle für Insert-Effekte übereinstimmt. Bei Hilfseffekten wird weiterhin ein Eingabekanal mit der Anzahl 1 (Mono) angezeigt.
- Unterstützung von Masken für die Kanalposition (kanonisch) und Masken für den Kanalindex von
(1 << n) - 1
.
- Wenn Sie weiterhin Legacy-Ausgabeeffekte von Drittanbietern unterstützen müssen und sie nicht aktualisieren können, gehen Sie so vor, um Legacy-Code zu überprüfen:
- Legacy-Ausgabe (Einfügen) – Effekte müssen nicht unterstützte Konfigurationen in
EFFECT_CMD_SET_CONFIG
ablehnen.- Prüfen Sie, ob das Format „int16“ ist.
- Prüfen Sie, ob die Masken für Ein- und Ausgabekanäle Stereo sind.
- Wenn eine der beiden Prüfungen fehlschlägt, gib
-EINVAL
zurück.
- Legacy-Ausgabe- (Hilfs-)Effekte werden von AudioFlinger mit einer Mono-Eingabekanalsmaske und möglicherweise Multichannel-Ausgabekanalsmasken konfiguriert, je nachdem, ob die Ausgabesenke Multichannel ist.
Sie müssen nicht unterstützte Konfigurationen in
EFFECT_CMD_SET_CONFIG
ablehnen.- Prüfen Sie, ob das Format „int16“ ist.
- Prüfen Sie, ob die Maske des Eingabekanals Mono und die Maske des Ausgabekanals Stereo ist.
- Wenn eine der beiden Prüfungen fehlschlägt, gib
-EINVAL
zurück.
- Legacy-Code überprüfen Gehen Sie nicht davon aus, dass es funktioniert.
- Legacy-Ausgabe (Einfügen) – Effekte müssen nicht unterstützte Konfigurationen in