Począwszy od Androida 10 (poziom interfejsu API 29) i nowszych wersji w narzędziu MediaCodecInfo
dostępne są metody, które pozwalają uzyskać więcej informacji o kodeku:
isSoftwareOnly()
- Zwraca wartość „prawda”, jeśli kodek działa tylko w programie. Kodeki programowe nie gwarantują wydajności renderowania.
isHardwareAccelerated()
- Zwraca wartość „prawda”, jeśli kodek jest akcelerowany przez sprzęt.
isVendor()
- Zwraca wartość Prawda, jeśli kodek jest udostępniany przez dostawcę urządzenia, lub wartość Fałsz, jeśli jest udostępniany przez platformę Androida.
isAlias()
MediaCodecList
może zawierać dodatkowe wpisy dla tego samego podstawowego kodeka, używając alternatywnej nazwy (aliasu) kodeka. Ta metoda zwraca wartość „prawda”, jeśli kodek w tym wpisie jest aliasem innego kodeka.
Dodatkowo MediaCodec.getCanonicalName()
zwraca nazwę podstawowego kodeka dla kodeków utworzonych za pomocą aliasu.
Punkty skuteczności
Punkt wydajności to zdolność kodeka do renderowania filmu o określonej wysokości, szerokości i liczbie klatek. Na przykład punkt wydajności UHD_60
odpowiada filmowi w ultrawysokiej rozdzielczości (3840 x 2160 pikseli) renderowanemu z 60 klatkami na sekundę.
Metoda MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
zwraca listę PerformancePoint
pozycji, które kodek może renderować lub rejestrować.
Aby sprawdzić, czy dany element PerformancePoint
obejmuje inne, wywołaj funkcję PerformancePoint.covers(PerformancePoint)
.
Na przykład UHD_60.covers(UHD_50)
zwraca wartość true.
Lista punktów skuteczności jest dostępna dla wszystkich kodeków przyspieszonych sprzętowo. Jeśli kodek nie spełnia nawet najniższego standardowego punktu wydajności, lista może być pusta.
Pamiętaj, że urządzenia, które zostały zaktualizowane do Androida 10 (poziom interfejsu API 29) lub nowszego bez aktualizacji obrazu dostawcy, nie będą miały danych o punktach skuteczności, ponieważ te dane pochodzą z interfejsu HAL dostawcy. W tym przypadku getSupportedPerformancePoints()
zwraca wartość null.