Kodeki multimediów

Począwszy od Androida 10 (poziom interfejsu API 29) i nowszych dostępne są metody MediaCodecInfo, które podają więcej informacji o kodeki:

isSoftwareOnly()
Zwraca wartość „prawda”, jeśli kodek działa tylko w oprogramowaniu. Kodek oprogramowania nie gwarantuje wydajności renderowania.
isHardwareAccelerated()
Zwraca wartość „prawda”, jeśli kodek jest przyspieszany przez sprzęt.
isVendor()
Zwraca wartość „TRUE”, jeśli kodek jest dostarczany przez dostawcę urządzenia, lub „FALSE”, jeśli jest dostarczany 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ść true, 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ę PerformancePointpozycji, które kodek może renderować lub rejestrować.

Aby sprawdzić, czy dana PerformancePoint obejmuje inną, zadzwoń pod numer 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ą mieć danych o punktach skuteczności, ponieważ te dane pochodzą z interfejsu HAL dostawcy. W tym przypadku funkcja getSupportedPerformancePoints() zwraca wartość null.