代码如下:
IBaseFilter * m_pVideoDecodeFilter;
hr = ::CoCreateInstance(CLSID_Decoder264, NULL,CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (void **)(&m_pVideoDecodeFilter));
CLSID_Decoder264宏:是CoreAVC Video Decoder这个filter的GUID号,是系统已注册的(可以在graphedit中找到);
问题:CoCreateInstance返回提示内存访问无效,不知道为什么,是不是参数没有对,困扰很久了,我很怀疑是不是IID_IBaseFilter该参数不对;还是最后那个参数的类型不是IBaseFilter *;
多多指教,先谢谢了!
------解决方案--------------------------------------------------------
是不是DEBUG模式下调试加载的?有些FILTER不允许调试的.
如果GraphEdit里可以加载,应该就是这个问题。
------解决方案--------------------------------------------------------
你应该这样,
- C/C++ code
IBaseFilter * m_pVideoDecodeFilter;hr = ::CoCreateInstance(CLSID_Decoder264, NULL,CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void **)(&m_pVideoDecodeFilter));MessageBox(...); //这个程序不要用 VS 启动,应该是手动双击启动后,出现 MessageBox 用 VS attach 上去,就行了,
------解决方案--------------------------------------------------------
coreavc里面有反调式的