xbmc-12.0稳定版代码初探 (2) —— XBMC_HOME
XBMC工程在debug時要設(shè)置XBMC_HOME的環(huán)境
用于指定ffmpeg的Dll文件位置,語言等等
xbmc/filesystem/SpecialProtocol.cpp 定義了一些如:?CSpecialProtocol::SetXBMCPath();的函數(shù)
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行設(shè)置如:?xbmcPath = "D:\\xbmc\\xbmc-12.0"; ?//CUtil::GetHomePath(xbmcPath);
在程序中路徑都被重新映射到被設(shè)置的目錄,安裝時另有一個參數(shù)
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"
如:對應(yīng)?DECLARE_DLL_WRAPPER(DllAvFormat, DLL_PATH_LIBAVFORMAT)
實際執(zhí)行代碼為 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初始化時才創(chuàng)建
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();
}
使用庫中的函數(shù)前, 經(jīng)過if (!m_dllAvUtil.Load() || !m_dllAvCodec.Load() || !m_dllAvFormat.Load())判斷是否加載
這個基本是xbmc使用ffmpeg的動態(tài)庫過程
轉(zhuǎn)載于:https://www.cnblogs.com/logitechlike/archive/2013/01/31/2886930.html
總結(jié)
以上是生活随笔為你收集整理的xbmc-12.0稳定版代码初探 (2) —— XBMC_HOME的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一些可能没用过的调试窗口
- 下一篇: 修改远程桌面端口