1.第一步:死机硬背sdk开发包的各个目录
├── drv
├── mpp
├── osal
├── osdrv
├── package
├── scripts
├── sdk.cleanup
└── sdk.unpack
而今天的重点就是讨论mpp子目录的sample下的venc是怎么编译出来的。一定要记住drv,mpp,osal,osdrv四个目录。太重要了
2.先不要急于看源码,先听我说
在mpp/sample/venc目录下的编译,没有那么难理解。首先没有Makefile嵌套;其次编译的很少连接的很多;第三涉及的源码很少库很多;第四分析时一定要建立一种思想,所有涉及到的配置参数文件都是在venc当前目录序展开的,直接拿包含文件到venc当前目录分析就好啦!! 对于第四点,举个例子mpp/sample/Makefile.param文件中第一句话就是
ifeq ($(PARAM_FILE), )
PARAM_FILE:=../../Makefile.param
include $(PARAM_FILE)
endif
会不蒙比了呢?包含的../../Makefile.param到底是那一层的Makefile参数文件啊。记住第四点的人一眼就知道他是mpp目录下的那个Makefile.param。别看他是前两层,实际上是前一层的,因为当前文件被直接包含进mpp/sample/venc/Makefile展开了。
3.涉猎的文件有:
mpp/sample/venc/Makefile,mpp/sample/Makefile.param,mpp/Makefile.param,mpp/cfg.mak,mpp/Makefile.liteos.param,mpp/sampe/up_liteos.mak
mpp/sample/venc/Makefile | venc.Makefile | 通用的模板,venc,vio,scene_auto都是一模一样的 |
mpp/sample/Makefile.param | sample.Makefile.param | |
mpp/Makefile.param | mpp.Makefile.param | 说来也好笑,直接继承cfg.mak的配置信息 |
mpp/cfg.mak | mpp.cfg.mak | 全局配置文件,修改这里适配不同平台 |
mpp/Makefile.liteos.param | mpp.Makefile.liteos.param | 对接liteos系统的库,头文件 |
mpp/sampe/up_liteos.mak | sample.up_liteos.mak | 汇集编译和连接的地方 |