Beginning with Android 10 (API level 29) and higher, there are methods in
[`MediaCodecInfo`](https://developer.android.com/reference/android/media/MediaCodecInfo) that
reveal more information about a codec:

[`isSoftwareOnly()`](https://developer.android.com/reference/android/media/MediaCodecInfo#isSoftwareOnly)
:   Returns true if the codec runs in software only. Software codecs make no
    guarantees about rendering performance.

[`isHardwareAccelerated()`](https://developer.android.com/reference/android/media/MediaCodecInfo#isHardwareAccelerated)
:   Returns true if a codec is accelerated by hardware.

[`isVendor()`](https://developer.android.com/reference/android/media/MediaCodecInfo#isVendor)
:   Returns true if the codec is provided by the device vendor or false if provided
    by the Android platform.

[`isAlias()`](https://developer.android.com/reference/android/media/MediaCodecInfo#isAlias)
:   `MediaCodecList` may contain additional entries for the same underlying codec
    using an alternate codec name/s (alias/es). This method returns true if the
    codec in this entry is an alias for another codec.

In addition,
[`MediaCodec.getCanonicalName()`](https://developer.android.com/reference/android/media/MediaCodecInfo#getCanonicalName)
returns the underlying codec name for codecs created via an alias.

#### Performance Points

A *performance point* represents a codec's ability to render video at a specific
height, width and frame rate. For example, the `UHD_60` performance point
represents Ultra High Definition video (3840x2160 pixels) rendered at 60 frames
per second.

The method
[`MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()`](https://developer.android.com/reference/android/media/MediaCodecInfo.VideoCapabilities#getSupportedPerformancePoints())
returns a list of
[`PerformancePoint`](https://developer.android.com/reference/android/media/MediaCodecInfo.VideoCapabilities.PerformancePoint)
entries that the codec can render or capture.

You can check whether a given `PerformancePoint` covers another by calling
[`PerformancePoint.covers(PerformancePoint)`](https://developer.android.com/reference/android/media/MediaCodecInfo.VideoCapabilities.PerformancePoint#covers(android.media.MediaCodecInfo.VideoCapabilities.PerformancePoint)).
For example, `UHD_60.covers(UHD_50)` returns true.

A list of performance points is provided for all hardware-accelerated codecs.
This could be an empty list if the codec does not meet even the lowest standard
performance point.

Note that devices which have been upgraded to Android 10 (API level 29) and higher without
updating the vendor image will not have performance point data, because this
data comes from the vendor HAL. In this case, `getSupportedPerformancePoints()`
returns null.