Kodeki multimediów

Począwszy od Androida 10 (poziom interfejsu API 29) i nowszych, dostępne są metody MediaCodecInfo Wyświetl więcej informacji o kodeku:

isSoftwareOnly()
Zwraca wartość „prawda”, jeśli kodek działa tylko w programie. W przypadku kodeków programowych i zapewnia wydajność renderowania.
isHardwareAccelerated()
Zwraca wartość „prawda”, jeśli kodek jest akcelerowany przez sprzęt.
isVendor()
Zwraca wartość „true” (prawda), jeśli kodek został dostarczony przez dostawcę urządzenia, lub „false” (fałsz), jeśli został podany przez platformę Android.
isAlias()
MediaCodecList może zawierać dodatkowe pozycje dla tego samego kodeka bazowego korzystając z alternatywnych nazw kodeków (aliasów). Ta metoda zwraca wartość „prawda”, jeśli kodek w tym wpisie jest aliasem innego kodeka.

Ponadto MediaCodec.getCanonicalName() zwraca nazwę bazowego kodeka dla kodeków utworzonych przez alias.

Punkty skuteczności

Punkt wydajności reprezentuje zdolność kodeka do renderowania wideo w określonym miejscu wysokości, szerokości i liczby klatek. Na przykład punkt skuteczności UHD_60 przedstawia film w rozdzielczości Ultra High Definition (3840 × 2160 pikseli) renderowany w 60 klatkach. na sekundę.

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

Aby sprawdzić, czy dane połączenie PerformancePoint obejmuje inne, wywołaj polecenie 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 standardu do określonego wskaźnika skuteczności.

Pamiętaj, że urządzenia uaktualnione do Androida 10 (poziom interfejsu API 29) lub nowszego bez aktualizacja obrazu dostawcy nie będzie zawierać danych punktu skuteczności, ponieważ dane pochodzą z HAL dostawcy. W tym przypadku getSupportedPerformancePoints() zwraca wartość null.