Medien-Codecs

Ab Android 10 (API-Level 29) gibt es in MediaCodecInfo Methoden, mit denen Sie mehr Informationen zu einem Codec erhalten:

isSoftwareOnly()
Gibt „wahr“ zurück, wenn der Codec nur in der Software ausgeführt wird. Software-Codecs bieten keine Garantie für die Renderingleistung.
isHardwareAccelerated()
Gibt „wahr“ zurück, wenn ein Codec durch Hardware beschleunigt wird.
isVendor()
Gibt „wahr“ zurück, wenn der Codec vom Geräteanbieter bereitgestellt wird, oder „falsch“, wenn er von der Android-Plattform bereitgestellt wird.
isAlias()
MediaCodecList kann zusätzliche Einträge für denselben zugrunde liegenden Codec mit einem alternativen Codec-Namen (Alias) enthalten. Diese Methode gibt „wahr“ zurück, wenn der Codec in diesem Eintrag ein Alias für einen anderen Codec ist.

Außerdem gibt MediaCodec.getCanonicalName() den zugrunde liegenden Codec-Namen für Codecs zurück, die über einen Alias erstellt wurden.

Leistungspunkte

Ein Leistungspunkt gibt an, ob ein Codec Videos mit einer bestimmten Höhe, Breite und Framerate rendern kann. Der Leistungspunkt UHD_60 steht beispielsweise für ein Ultra-HD-Video (3.840 x 2.160 Pixel), das mit 60 Bildern pro Sekunde gerendert wird.

Die Methode MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() gibt eine Liste von PerformancePoint-Einträgen zurück, die der Codec rendern oder erfassen kann.

Sie können prüfen, ob eine bestimmte PerformancePoint eine andere abdeckt, indem Sie PerformancePoint.covers(PerformancePoint) aufrufen. Beispiel: UHD_60.covers(UHD_50) gibt „wahr“ zurück.

Für alle hardwarebeschleunigten Codecs wird eine Liste der Leistungspunkte bereitgestellt. Dies kann eine leere Liste sein, wenn der Codec nicht einmal den niedrigsten Standardleistungspunkt erfüllt.

Beachten Sie, dass Geräte, die auf Android 10 (API-Level 29) und höher aktualisiert wurden, ohne das Anbieter-Image zu aktualisieren, keine Leistungspunktdaten erhalten, da diese Daten vom Anbieter-HAL stammen. In diesem Fall gibt getSupportedPerformancePoints() null zurück.