Medien-Codecs

Ab Android 10 (API-Level 29) und höher gibt es Methoden in MediaCodecInfo, die weitere Informationen zu einem Codec liefern:

isSoftwareOnly()
Gibt „true“ zurück, wenn der Codec nur in Software ausgeführt wird. Software-Codecs geben 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äteanbieter bereitgestellt wird, oder „false“, wenn der Codec von der Android-Plattform bereitgestellt wird.
isAlias()
MediaCodecList kann zusätzliche Einträge für denselben zugrunde liegenden Codec mit 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() den zugrunde liegenden Codec-Namen für Codecs zurück, die über einen Alias erstellt wurden.

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 stellt beispielsweise Ultra High Definition-Video (3.840 × 2.160 Pixel) dar, 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. Dazu rufen Sie PerformancePoint.covers(PerformancePoint) auf. Beispiel: UHD_60.covers(UHD_50) gibt „true“ zurück.

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

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