Hochauflösendes Audio

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!