视屏解码插件是如何同播放器关联起来的?
我知道一个播放器只要安装其它厂家的解码插件就能播放相关电影, 关联原理是什么啊?解码插件是dll库还是其它什么?
Write a DLL that exports a DriverProc() function and registers it's FOURCC in the [drivers32] section of SYSTEM.INI (Win9X) or registry key (WinNT). In DriverProc(),
you need to handle the ICM_* messages described in the Video For Windows and Multimedia Reference chapters of the Platform SDK. Find the OpenDivX or XviD source code on the net to see real-life samples of VCM codecs.
如:想让暴风影音能够播放我们自己保存的视频文件,由于我们自己的文件中每一帧都有自己特殊的头信息,所以暴风影音不能解析,这时我们可以自己写解码库的方式来让暴风影音寻找对应的解码器。
注意:1.如果我们特殊的类型是"Divx",我们的解码库DLL的名字应该是Divx.DLL,并且修改注册表对应位置。
2.我们的DLL必须实现 DriverProc方法,根据DriverProc的参数uiMessage来执行不同的操作。
__declspec(dllexport) LRESULT WINAPI DriverProc(DWORD dwDriverID, HDRVR hDriver, UINT uiMessage, LPARAM lParam1, LPARAM lParam2)
uiMessage代表不同的消息类型 如:ICM_DECOMPRESS ICM_DECOMPRESS_QUERY ICM_DECOMPRESS_GET_FORMAT ICM_DECOMPRESS_BEGIN DRV_OPEN 等等消息类型
3.实现我们自己的解码对象类,
a.在ICM_DECOMPRESS_QUERY时,查询我们解码库支持哪种解码类型
b.在DRV_OPEN时,创建解码对象
c.在ICM_DECOMPRESS_BEGIN,初始化解码库相关组件
d.在ICM_DECOMPRESS时,开始进行解码操作,并通过传入的参数返回
e.在ICM_DECOMPRESS_END时,释放解码库相关组件
4.在注册表中注册相关信息:如下
[MPEG4.AddRegNT]
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc,DivX.dll,,%DivX%
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers32,vidc.DIVX,,DivX.dll
HKLM,%UnInstallPath%,DisplayName,,%UninstallDispName%
HKLM,%UnInstallPath%,UninstallString,,"%11%\rundll32.exe setupapi,InstallHinfSection Remove_DivX 132 %17%\%InfFile%"
[MPEG4.DelReg]
HKLM,SYSTEM\CurrentControlSet\Control\MediaResources\icm\vidc.DIVX
HKLM,SOFTWARE\Microsoft\Windows NT\CurrentVersion\drivers.desc,DivX.dll,,""
HKLM,%UnInstallPath%