分享

Android H264硬件解码学习

 传真阅览室 2014-01-18
{
//获取解码器列表
        int numCodecs = MediaCodecList.getCodecCount();
        MediaCodecInfo codecInfo = null;
        for (int i = 0; i < numCodecs && codecInfo == null; i++)
        {
            MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i);
            if (!info.isEncoder())
            {
                continue;
            }
            String[] types = info.getSupportedTypes();
            boolean found = false;
//轮询所要的解码器
            for (int j = 0; j < types.length && !found; j++)
            {
                if (types[j].equals("video/avc"))
                {
                    System.out.println("found");
                    found = true;
                }
            }
            if (!found)
                continue;
            codecInfo = info;
        }
        Log.d(TAG, "Found " + codecInfo.getName() + " supporting "  + "video/avc");
        
        //检查所支持的colorspace
        int colorFormat = 0;
        MediaCodecInfo.CodecCapabilities capabilities = codecInfo.getCapabilitiesForType("video/avc");
        System.out.println("length-" + capabilities.colorFormats.length + "=="
                + Arrays.toString(capabilities.colorFormats));
        for (int i = 0; i < capabilities.colorFormats.length
                && colorFormat == 0; i++)
        {
            int format = capabilities.colorFormats;
            switch (format)
            {
                case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420Planar:
                    System.out.println("-");
                    break;
                case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420PackedPlanar:
                    System.out.println("-");
                    break;
                case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar:
                    System.out.println("-");
                    break;
                case MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420PackedSemiPlanar:
                    System.out.println("-");
                    break;
                case MediaCodecInfo.CodecCapabilities.COLOR_TI_FormatYUV420PackedSemiPlanar:
                    colorFormat = format;
                    System.out.println("-");
                    break;
                default:
                    Log.d(TAG, "Skipping unsupported color format " + format);
                    break;
            }
        }
        Log.d(TAG, "color format " + colorFormat);
    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约