从 Android 10(API 级别 29)及更高版本开始,
MediaCodecInfo 中提供了一些方法,这些方法可以
显示有关编解码器的更多信息:
isSoftwareOnly()- 如果编解码器仅在软件中运行,则返回 true。软件编解码器并不能保证渲染性能。
isHardwareAccelerated()- 如果编解码器由硬件加速,则返回 true。
isVendor()- 如果编解码器由设备供应商提供,则返回 true;如果由 Android 平台提供,则返回 false。
isAlias()MediaCodecList可能针对使用备用编解码器名称(别名)的同一底层编解码器包含额外的条目。如果此条目中的编解码器是另一个编解码器的别名,则此方法会返回 true。
此外,
MediaCodec.getCanonicalName()
会针对通过别名创建的编解码器返回底层编解码器名称。
性能点
“性能点”表示编解码器以特定高度、宽度和帧速率渲染视频的能力。 例如,UHD_60 性能点表示以每秒 60 帧的速度渲染超高清视频(3840x2160 像素)。
该方法
MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
会返回编解码器可以渲染或捕获的
PerformancePoint
条目列表。
您可以通过调用
PerformancePoint.covers(PerformancePoint)检查给定的 PerformancePoint 是否会覆盖另一个性能点。
例如,UHD_60.covers(UHD_50) 会返回 true。
我们为所有硬件加速的编解码器都提供了性能点列表。 如果编解码器连标准性能点的最低值都不能满足,则此列表可能为空。
请注意,已升级到 Android 10(API 级别 29)及更高版本但未更新供应商映像的设备是没有性能点数据的,因为此数据来自供应商
HAL。在这种情况下,getSupportedPerformancePoints() 会返回 null。