Medien-Codecs

Ab Android 10 (API-Level 29) gibt es in MediaCodecInfo Methoden, die weitere Informationen zu einem Codec enthalten:

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

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

Leistungspunkte

Ein Leistungspunkt steht für die Fähigkeit eines Codecs, Videos mit einer bestimmten Höhe, Breite und Framerate zu rendern. Der Leistungspunkt UHD_60 steht beispielsweise für Ultra High Definition-Videos (3.840 × 2.160 Pixel), die mit 60 Bildern pro Sekunde gerendert werden.

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 „true“ 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.