Kodeki multimediów

W Androidzie 10 (interfejs API na poziomie 29) i nowszych wersjach w klasie MediaCodecInfo dostępne są metody, 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 przykład punkt wydajności UHD_60 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 punktach wydajności, ponieważ te dane pochodzą z warstwy HAL dostawcy. W tym przypadku getSupportedPerformancePoints() zwraca wartość null.