檢測 Android 是否支持硬件編解碼

Android 系統(tǒng)中編解碼器的命名方式,軟編解碼器通常是以 OMX.google 開頭,硬編解碼器通常是以 OMX.[hardware_vendor] 開頭的。但是還有一些不遵守這個命名規(guī)范的,不以 OMX. 開頭的情況,它們也會被認(rèn)為是軟編解碼器。

由上可知,如果一個設(shè)備既支持硬件編解碼,也支持軟件編解碼。對于 hevc 解碼器可能就會存在兩個的情況:


hevc_decoder.png

那么在判斷設(shè)備是否支持硬件編解碼的時候,就需要判斷編解碼器是否為硬件編解碼器:

/**
     * 是否支持 hevc 硬解
     * @return
     */
    public static boolean isH265HWDecoderSupport() {
        MediaCodecList codecList = new MediaCodecList(REGULAR_CODECS);
        
        // 獲取設(shè)備支持的所有 codec 信息
        MediaCodecInfo[] codecInfos = codecList.getCodecInfos();
        for (int i = 0; i < codecInfos.length; i++) {
            MediaCodecInfo codecInfo = codecInfos[i];
            
            // 解碼codec & 解碼器名稱包含'hevc' & 不是軟件codec
            if (!codecInfo.isEncoder() && (codecInfo.getName().contains("hevc")
                    && !isSWCodec(codecInfo.getName()))) {
                return true;
            }
        }

        return false;
    }

    /**
     * 是否為軟件 codec
     * @param codecName
     * @return
     */
    public static boolean isSWCodec(String codecName) {
        if (codecName.startsWith("OMX.google.")) {
            return true;
        }

        if (codecName.startsWith("OMX.")) {
            return false;
        }

        return true;
    }

如有問題,可咨詢:georgechmr@gmail.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容