Search code examples
androidandroid-mediacodecdecoder

What android devices/decoder has supported adaptive video playback


I've tested on Nexus 5 that

codecInfo.isFeatureSupported(MediaCodecInfo.CodecCapabilities.FEATURE_AdaptivePlayback)

returns false.

Does anyone know what chipset/software codec has supported the feature?

https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html#FEATURE_AdaptivePlayback

Thanks


Solution

  • This is supported on most Nexus devices past KK MR1. Note, that it is HW video decoders only.

    Nexus 5 (KK MR1): // Qualcomm Snapdragon 800

    • OMX.qcom.video.decoder.avc
    • OMX.qcom.video.decoder.mpeg4
    • OMX.qcom.video.decoder.h263
    • OMX.qcom.video.decoder.vp8

    Nexus 4 and Nexus 7 v2013 (KK MR1): // Qualcomm Snapdragon S4 Pro APQ8064

    • OMX.qcom.video.decoder.avc
    • OMX.qcom.video.decoder.mpeg4
    • OMX.qcom.video.decoder.h263

    Nexus 10 (KK MR1) // Samsung Exynos 5250

    • OMX.Exynos.MPEG4.Decoder
    • OMX.Exynos.H263.Decoder
    • OMX.Exynos.AVC.Decoder

    Notable exceptions:

    • Nexus 7 v2012 (no codecs support it in KK MR1)

    For non-Nexus devices you need to query the codecs yourself. Here is my code-snippet that I did for the query.

    int numCodecs = MediaCodecList.getCodecCount();
    for (int i = 0; i < numCodecs; i++) {
        MediaCodecInfo codecInfo = MediaCodecList.getCodecInfoAt(i);
        String name = codecInfo.getName();
        Log.i(TAG, "Examinig " + (codecInfo.isEncoder() ? "encoder" : "decoder") + ": " + name);
        for(String type: codecInfo.getSupportedTypes()) {
            boolean ap = codecInfo.getCapabilitiesForType(type).isFeatureSupported(MediaCodecInfo.CodecCapabilities.FEATURE_AdaptivePlayback);
            Log.i(TAG, "supports adaptive playback: " + ap);
        }
    }