CodecInfo为一个结构体,包含两个成员,后面定义了这个结构体类型的一个数组

转自 http://blog.sina.com.cn/foreverlovelost

void OMXCodec::findMatchingCodecs(
        const char *mime,
        bool createEncoder, const char*matchComponentName,
        uint32_t flags,
        Vector<String8>*matchingCodecs) {
    matchingCodecs->clear();

    for (int index = 0;;++index) {
        const char *componentName;
        componentName = GetCodec(
              kDecoderInfo,
              sizeof(kDecoderInfo) / sizeof(kDecoderInfo[0]),// 34
              mime, index);
}

static const char *GetCodec(const CodecInfo *info, size_tnumInfos,   // 34
                            const char *mime, int index){
    CHECK(index>= 0);
    for(size_t i = 0; i< numInfos; ++i) {
        if (!strcasecmp( mime, info[i].mime)) {   //如果匹配上了
            if (index== 0) {   // 为什么要匹配满足index = 0 呢?
                return info[i].codec;
            }

            --index; 
        }
    }

    return NULL;
}

componentName = GetCodec(
          kDecoderInfo,
          sizeof(kDecoderInfo) /sizeof(kDecoderInfo[0]), // 34
          mime, index);


struct CodecInfo {
    const char *mime;
    const char *codec;
};

static const CodecInfo kDecoderInfo[] = {
    {MEDIA_MIMETYPE_IMAGE_JPEG, "OMX.TI.JPEG.decode" },
//     {MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.TI.MP3.decode" },
    {MEDIA_MIMETYPE_AUDIO_MPEG, "OMX.google.mp3.decoder" },
//     {MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.TI.AMR.decode" },
//     {MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.Nvidia.amr.decoder" },
    {MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.google.amrnb.decoder" },
//     {MEDIA_MIMETYPE_AUDIO_AMR_NB, "OMX.Nvidia.amrwb.decoder" },
    {MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.TI.WBAMR.decode" },
    {MEDIA_MIMETYPE_AUDIO_AMR_WB, "OMX.google.amrwb.decoder" },
//     {MEDIA_MIMETYPE_AUDIO_AAC, "OMX.Nvidia.aac.decoder" },
    {MEDIA_MIMETYPE_AUDIO_AAC, "OMX.TI.AAC.decode" },
    {MEDIA_MIMETYPE_AUDIO_AAC, "OMX.google.aac.decoder" },
    {MEDIA_MIMETYPE_AUDIO_G711_ALAW, "OMX.google.g711.alaw.decoder"},
    {MEDIA_MIMETYPE_AUDIO_G711_MLAW, "OMX.google.g711.mlaw.decoder"},
    {MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.DUCATI1.VIDEO.DECODER" },
    {MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.Nvidia.mp4.decode" },
    {MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.7x30.video.decoder.mpeg4"},
    {MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.qcom.video.decoder.mpeg4" },
    {MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.TI.Video.Decoder" },
    {MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.SEC.MPEG4.Decoder" },
    {MEDIA_MIMETYPE_VIDEO_MPEG4, "OMX.google.mpeg4.decoder" },
    {MEDIA_MIMETYPE_VIDEO_H263, "OMX.TI.DUCATI1.VIDEO.DECODER" },
    {MEDIA_MIMETYPE_VIDEO_H263, "OMX.Nvidia.h263.decode" },
    {MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.7x30.video.decoder.h263"},
    {MEDIA_MIMETYPE_VIDEO_H263, "OMX.qcom.video.decoder.h263" },
    {MEDIA_MIMETYPE_VIDEO_H263, "OMX.SEC.H263.Decoder" },
    {MEDIA_MIMETYPE_VIDEO_H263, "OMX.google.h263.decoder" },
    {MEDIA_MIMETYPE_VIDEO_AVC, "OMX.TI.DUCATI1.VIDEO.DECODER" },
    {MEDIA_MIMETYPE_VIDEO_AVC, "OMX.Nvidia.h264.decode" },
    {MEDIA_MIMETYPE_VIDEO_AVC, "OMX.qcom.7x30.video.decoder.avc"},
    {MEDIA_MIMETYPE_VIDEO_AVC, "OMX.qcom.video.decoder.avc" },
    {MEDIA_MIMETYPE_VIDEO_AVC, "OMX.TI.Video.Decoder" },
    {MEDIA_MIMETYPE_VIDEO_AVC, "OMX.SEC.AVC.Decoder" },
    {MEDIA_MIMETYPE_VIDEO_AVC, "OMX.google.h264.decoder" },
    {MEDIA_MIMETYPE_VIDEO_AVC, "OMX.google.avc.decoder" },
    {MEDIA_MIMETYPE_AUDIO_VORBIS, "OMX.google.vorbis.decoder" },
    {MEDIA_MIMETYPE_VIDEO_VPX, "OMX.google.vpx.decoder" },
    {MEDIA_MIMETYPE_VIDEO_MPEG2, "OMX.Nvidia.mpeg2v.decode" },
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值