Kodeki multimediów

Począwszy od Androida 10 (poziom interfejsu API 29) i nowszych, w 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ść „true”, jeśli kodek jest przyspieszany sprzętowo.
isVendor()
Zwraca wartość „true” (prawda), jeśli kodek został dostarczony przez dostawcę urządzenia, lub „false”, jeśli został dostarczony przez platformę Androida.
isAlias()
MediaCodecList może zawierać dodatkowe wpisy dla tego samego kodeka bazowego z alternatywnymi nazwami kodeków (aliasów/nazwach). Ta metoda zwraca wartość „prawda”, jeśli kodek w tym wpisie jest aliasem innego kodeka.

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

Punkty skuteczności

Punkt wydajności reprezentuje zdolność kodeka do renderowania wideo przy 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) wyrenderowany z szybkością 60 klatek na sekundę.

Metoda MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() zwraca listę pozycji PerformancePoint, które kodek może wyrenderować lub przechwycić.

Aby sprawdzić, czy dany PerformancePoint pokrywa się z innym, wywołaj metodę PerformancePoint.covers(PerformancePoint). Na przykład UHD_60.covers(UHD_50) zwraca wartość „prawda”.

W przypadku wszystkich kodeków z akceleracją sprzętową dostępna jest lista punktów wydajności. Jeśli kodek nie spełnia nawet najniższych standardowych punktów wydajności, może to być pusta lista.

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