如何实现不注册 filter,却可以播放需要解码器的视频?

zzzl 2011-03-11 10:02:10
象 qq影音,暴风影音,kmplayer 这类的软件,安装之后,windows 自带的播放器还是放不了,说明那些软件的目录下的 .ax 文件没有注册进系统,这是怎么实现的?
...全文
116 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ansinlee 2011-03-14
  • 打赏
  • 举报
回复
动态加载filter



function lwGetClassObject(hLib : HMODULE; const CLSID,IID : TGUID; var obj) : HRESULT;

var
lpDllGetClassObject : function(const CLSID, IID: TGUID; var Obj): HResult; stdcall;
pcf : IClassFactory;
begin
Result := E_FAIL;
if (hLib = 0) then
Exit;

lpDllGetClassObject := GetProcAddress(hLib, 'DllGetClassObject');


Result := lpDllGetClassObject(CLSID, IClassFactory, pcf);

if pcf = nil then
Exit;

Result := pcf.CreateInstance(nil, IID, obj);
if Pointer(obj) = nil then
Result := E_FAIL;

pcf := nil;
end;

//use
hr := lwGetClassObject(LoadLibrary('CL264dec.ax'),
CLISD_CL264Decoder,
IID_IBaseFilter,
pCL264Decoder);

//IGraphBuilder.AddFilter(pCL264Decoder, 'CL264 Decoder8');

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧