如何知道Android解码器MediaCodec.createDecoderByType(type)是硬件解码器还是软件解码器?

How to know Android decoder MediaCodec.createDecoderByType(type) is Hardware or software decoder?

有没有办法判断使用MediaCodec.createDecoderByType(类型)接收的解码器是硬件解码器还是软件解码器?

没有真正的正式标志来指示编解码器是硬件编解码器还是软件编解码器。但实际上,您可以这样做:

MediaCodec codec = MediaCodec.createDecoderByType(type);
if (codec.getName().startsWith("OMX.google.")) {
    // Is a software codec
}

MediaCodec.getName() 方法从 API 级别 18 开始可用。对于较低的 API 级别,您需要迭代 MediaCodecList 中的条目并手动选择而是适合您需要的正确编解码器。)

将它放在这里以供可能有帮助的任何人使用。根据libstagefright的代码,任何以OMX.google.c2.android.开头或不以(OMX.c2.)开头的编解码器都是软件编解码器。
来源:
https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/MediaCodecList.cpp#320