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ść true (prawda), jeśli kodek działa tylko w oprogramowaniu. Kodeki programowe nie gwarantują wydajności renderowania.
isHardwareAccelerated()
Zwraca wartość true (prawda), jeśli kodek jest akcelerowany sprzętowo.
isVendor()
Zwraca wartość true (prawda), jeśli kodek jest dostarczany przez producenta urządzenia, lub false (fałsz), jeśli jest dostarczany przez platformę Android.
isAlias()
MediaCodecList może zawierać dodatkowe wpisy dotyczące tego samego kodeka, ale z alternatywnymi nazwami (aliasami). Ta metoda zwraca wartość true (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 wydajności

Punkt wydajności określa zdolność kodeka do renderowania obrazu wideo o określonej wysokości, szerokości i liczbie klatek na sekundę. Na przykład punkt wydajności UHD_60 oznacza wideo w ultrawysokiej rozdzielczości (3840 x 2160 pikseli) renderowane z szybkością 60 klatek na sekundę.

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

Możesz sprawdzić, czy dany PerformancePoint obejmuje inny, wywołując metodę PerformancePoint.covers(PerformancePoint). Na przykład UHD_60.covers(UHD_50) zwraca wartość true (prawda).

Lista punktów wydajności jest dostępna w przypadku wszystkich kodeków akcelerowanych sprzętowo. Jeśli kodek nie spełnia nawet najniższego standardowego punktu wydajności, może to być pusta lista.

Pamiętaj, że urządzenia, które zostały zaktualizowane do Androida 10 (interfejs API na poziomie 29) lub nowszego bez aktualizacji obrazu producenta, nie będą miały danych o punktach wydajności, ponieważ te dane pochodzą z HAL producenta. W takim przypadku metoda getSupportedPerformancePoints() zwraca wartość null.