xbmc-12.0稳定版代码初探 (2) —— XBMC_HOME

XBMC工程在debug时要设置XBMC_HOME的环境

用于指定ffmpeg的Dll文件位置,语言等等

xbmc/filesystem/SpecialProtocol.cpp 定义了一些如: CSpecialProtocol::SetXBMCPath();的函数

xbmc\Application.cpp  InitDirectoriesWin32(); -> CUtil::GetHomePath(xbmcPath);

在Util.h看到static void GetHomePath(CStdString& strPath, const CStdString& strTarget = "XBMC_HOME");

直接编译完的debug的exe是不能单独运行的 可以在Application.cpp Line 1134行设置如: xbmcPath = "D:\\xbmc\\xbmc-12.0";  //CUtil::GetHomePath(xbmcPath);

在程序中路径都被重新映射到被设置的目录,安装时另有一个参数

special://xbmc/ is mapped to: D:\xbmc\xbmc-12.0
special://xbmcbin/ is mapped to: D:\xbmc\xbmc-12.0

DllPaths_win32.h是对这些的定义, 如:

/* ffmpeg */
#define DLL_PATH_LIBAVCODEC "special://xbmcbin/system/players/dvdplayer/avcodec-53.dll"
#define DLL_PATH_LIBAVFORMAT "special://xbmcbin/system/players/dvdplayer/avformat-53.dll"
#define DLL_PATH_LIBAVUTIL "special://xbmcbin/system/players/dvdplayer/avutil-51.dll"

如:对应 DECLARE_DLL_WRAPPER(DllAvFormat, DLL_PATH_LIBAVFORMAT)

实际执行代码为 public: DllAvFormat () : DllDynamic( "special://xbmcbin/system/players/dvdplayer/avformat-53.dll" ) {}
初始化:

DllDynamic::DllDynamic(const CStdString& strDllName)
{
m_strDllName=strDllName;
m_dll=NULL;
m_DelayUnload=true;
}

dll延迟加载到, FFmpegVideoDecoder初始化时才创建

FFmpegVideoDecoder::FFmpegVideoDecoder()
{
m_pFormatCtx = 0;
m_pCodecCtx = 0;
m_pCodec = 0;
m_pFrame = 0;
m_pFrameRGB = 0;

m_dllAvFormat = new DllAvFormat();
m_dllAvCodec = new DllAvCodec();
m_dllAvUtil = new DllAvUtil();
m_dllSwScale = new DllSwScale();
}

使用库中的函数前, 经过if (!m_dllAvUtil.Load() || !m_dllAvCodec.Load() || !m_dllAvFormat.Load())判断是否加载

这个基本是xbmc使用ffmpeg的动态库过程

转载于:https://www.cnblogs.com/logitechlike/archive/2013/01/31/2886930.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值