Codec multimediali

A partire da Android 10 (livello API 29) e versioni successive, esistono metodi in MediaCodecInfo che rivelano maggiori informazioni su un codec:

isSoftwareOnly()
Restituisce true se il codec viene eseguito solo nel software. I codec software non offrono garanzie sulle prestazioni di rendering.
isHardwareAccelerated()
Restituisce true se un codec è accelerato dall'hardware.
isVendor()
Restituisce true se il codec è fornito dal fornitore del dispositivo o false se è fornito dalla piattaforma Android.
isAlias()
MediaCodecList può contenere voci aggiuntive per lo stesso codec sottostante utilizzando nomi di codec alternativi (alias). Questo metodo restituisce true se il codec in questa voce è un alias di un altro codec.

Inoltre, MediaCodec.getCanonicalName() restituisce il nome del codec sottostante per i codec creati tramite un alias.

Punti di rendimento

Un punto di rendimento rappresenta la capacità di un codec di eseguire il rendering video a una specifica altezza, larghezza e frequenza fotogrammi. Ad esempio, il punto di prestazioni UHD_60 rappresenta un video in ultra alta definizione (3840 x 2160 pixel) riprodotto a 60 frame al secondo.

Il metodo MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() restituisce un elenco di voci PerformancePoint che il codec può eseguire il rendering o acquisire.

Puoi verificare se una determinata PerformancePoint copre un'altra chiamando il numero PerformancePoint.covers(PerformancePoint). Ad esempio, UHD_60.covers(UHD_50) restituisce vero.

Viene fornito un elenco di punti di rendimento per tutti i codec con accelerazione hardware. Potrebbe trattarsi di un elenco vuoto se il codec non soddisfa nemmeno il punto di prestazioni standard più basso.

Tieni presente che i dispositivi di cui è stato eseguito l'upgrade ad Android 10 (livello API 29) e versioni successive senza aggiornare l'immagine del fornitore non avranno dati sui punti di rendimento, perché questi dati provengono dall'HAL del fornitore. In questo caso, getSupportedPerformancePoints() restituisce un valore nullo.