Kodeki multimediów

Począwszy od Androida 10 (poziom interfejsu API 29) i nowszych wersji w narzędziu MediaCodecInfo dostępne są metody, które pozwalają uzyskać więcej informacji o kodeku:

isSoftwareOnly()
Zwraca wartość „prawda”, jeśli kodek działa tylko w programie. Kodeki programowe nie gwarantują wydajności renderowania.
isHardwareAccelerated()
Zwraca wartość „prawda”, jeśli kodek jest akcelerowany przez sprzęt.
isVendor()
Zwraca wartość „true”, jeśli kodek został dostarczony przez dostawcę urządzenia, lub „fałsz”, jeśli udostępnia go platforma Androida.
isAlias()
MediaCodecList może zawierać dodatkowe wpisy dla tego samego bazowego kodeka z użyciem alternatywnych nazw kodeków (aliasów). Ta metoda zwraca wartość „prawda”, jeśli kodek w tym wpisie jest aliasem innego kodeka.

Dodatkowo MediaCodec.getCanonicalName() zwraca nazwę bazowego kodeka dla kodeków utworzonych z wykorzystaniem aliasu.

Punkty skuteczności

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

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

Aby sprawdzić, czy dany element PerformancePoint obejmuje inne, wywołaj funkcję 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. Może to być pusta lista, 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ż pochodzą one z HAL dostawcy. W tym przypadku getSupportedPerformancePoints() zwraca wartość null.