【Android】从libavenhancements.so的调用分析高通封装

本文探讨了高通在Android系统中如何封装和调用libavenhancements.so,以及该库如何加载其他库文件,如libExtendedExtractor.so、libmmparser_lite.so和libmmparser.so。通过对libavenhancements.so的分析,揭示了其内部的类扩展和关键字搜索方法,涉及到C++的泛型、函数指针、类型转换以及动态链接库的使用。
摘要由CSDN通过智能技术生成

写在前面:
在学习高通多媒体架构的代码的过程中间,很多地方跑着跑着,就找不到调用的地方了,通过堆栈发现,很多找不到的东西,就被如下几个不开源的库文件给打包调用了,所以这里记录下,高通Android是如何封装调用的,以及最重要的,这个封装的包到底是什么。

封装库文件:
vendor/qcom/proprietary/prebuilt_HY11/target/product/msm8909/system/vendor/lib/下面:
libExtendedExtractor.so
libmmparser_lite.so
libmmparser.so
libavenhancements.so(会调用上面三个库文件)
。。。

下面以libavenhancements.so库为例,分析这个封装的包里面到底是什么?:


//frameworks/av/media/libavextensions/common/AVExtensionsCommon.h

typedef void *(*createFunction_t)(void);//函数指针

template <typename T>
struct ExtensionsLoader {

//根据封装库中的工厂方法名字,创建被封装的扩展类实例,返回类型是 T
    static T *createInstance(const char *createFunctionName);

private:
    static void loadLib();
    //从封装库中间,通过名字映射方法,返回一个盒函数指针
    static createFunction_t loadCreateFunction(const char *createFunctionName);
    static void *mLibHandle;
};

//==============================================
//模板类,声明一个单态的模版类
/*
 * Boiler-plate to declare the class as a singleton (with a static getter)
 * which can b
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值