Kodeki multimediów

W Androidzie 10 (poziom API 29) i nowszym dostępne są metody w MediaCodecInfo, które ujawniają więcej informacji o kodeku:

isSoftwareOnly()
Zwraca wartość „prawda”, jeśli kodek działa tylko w oprogramowaniu. Kodeki programowe nie gwarantują wydajności renderowania.
isHardwareAccelerated()
Zwraca wartość „prawda”, jeśli kodek jest akcelerowany sprzętowo.
isVendor()
Zwraca wartość „true”, jeśli kodek jest dostarczany przez dostawcę urządzenia, lub „false”, jeśli jest dostarczany przez platformę Android.
isAlias()
MediaCodecList może zawierać dodatkowe wpisy dotyczące tego samego kodeka, ale z użyciem alternatywnych nazw kodeków (aliasów). Ta metoda zwraca wartość true, jeśli kodek w tym wpisie jest aliasem innego kodeka.

Dodatkowo funkcja MediaCodec.getCanonicalName() zwraca nazwę bazowego kodeka w przypadku kodeków utworzonych za pomocą aliasu.

Punkty za wyniki

Punkt wydajności określa zdolność kodeka do renderowania filmu o określonej wysokości, szerokości i liczbie klatek na sekundę. Na przykład UHD_60 punkt wydajności oznacza film w bardzo wysokiej rozdzielczości (3840 x 2160 pikseli) renderowany z szybkością 60 klatek na sekundę.

Metoda MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() zwraca listę PerformancePoint wpisów, które kodek może renderować lub przechwytywać.

Możesz sprawdzić, czy dany PerformancePoint obejmuje inny, dzwoniąc pod numer PerformancePoint.covers(PerformancePoint). Na przykład UHD_60.covers(UHD_50) zwraca wartość „prawda”.

Lista punktów wydajności jest dostępna dla wszystkich kodeków akcelerowanych sprzętowo. Może to być pusta lista, jeśli kodek nie spełnia nawet najniższego standardu wydajności.

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 punkcie wydajności, ponieważ te dane pochodzą z warstwy HAL dostawcy. W tym przypadku getSupportedPerformancePoints() zwraca wartość null.