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 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äteanbieter bereitgestellt wird, und „false“, 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 „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 gibt an, wie gut ein Codec Videos mit einer bestimmten Höhe, Breite und Framerate rendern kann. Der Leistungspunkt UHD_60
steht beispielsweise für Ultra High Definition-Video (3.840 × 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.
Mit PerformancePoint.covers(PerformancePoint)
können Sie prüfen, ob ein bestimmtes PerformancePoint
ein anderes abdeckt.
Beispiel: UHD_60.covers(UHD_50)
gibt „true“ zurück.
Für alle hardwarebeschleunigten Codecs ist eine Liste mit Leistungspunkten verfügbar. Dies kann eine leere Liste sein, wenn der Codec nicht einmal den niedrigsten Standardleistungs-Punkt erfüllt.
Hinweis: Auf Geräten, die auf Android 10 (API-Level 29) und höher aktualisiert wurden, ohne dass das Anbieter-Image aktualisiert wurde, sind keine Daten zu Leistungspunkten verfügbar, da diese Daten aus dem Anbieter-HAL stammen. In diesem Fall gibt getSupportedPerformancePoints()
„null“ zurück.