Kodeki multimediów

W Androidzie 10 (interfejs API na poziomie 29) i nowszych wersjach dostępne są metody w MediaCodecInfo, które ujawniają więcej informacji o kodeku:

isSoftwareOnly()
Zwraca wartość „true”, jeśli kodek działa tylko w oprogramowaniu. Kodeki programowe nie gwarantują wydajności renderowania.
isHardwareAccelerated()
Zwraca wartość „true” (prawda), jeśli kodek jest przyspieszany sprzętowo.
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 dotyczące tego samego kodeka, używające alternatywnych nazw (aliasów). Ta metoda zwraca wartość „prawda”, jeśli kodek w tym wpisie jest aliasem innego kodeka.

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

Punkty za wyniki

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

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

Aby sprawdzić, czy dany PerformancePoint obejmuje inny, wywołaj metodę PerformancePoint.covers(PerformancePoint). Na przykład UHD_60.covers(UHD_50) zwraca wartość „true” (prawda).

Lista punktów wydajności jest dostępna dla wszystkich kodeków z akceleracją sprzętową. Ta lista może być pusta, jeśli kodek nie spełnia nawet najniższego standardowego punktu wydajności.

Pamiętaj, że urządzenia, które zostały uaktualnione 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 takim przypadku getSupportedPerformancePoints() zwraca wartość null.