所以我基本上读到了这个,http: //www.gdcl.co.uk/2011/June/UnregisteredFilters.htm .
它告诉您如何使用过滤器而不注册它们.有两种方法,new和使用私有CoCreateInstance.我试图使用CoCreateInstance方法.
在该站点的示例中,代码列为,
IUnknownPtr pUnk;
HRESULT hr = CreateObjectFromPath(TEXT("c:\\path\\to\\myfilter.dll"), IID_MyFilter, &pUnk);
if (SUCCEEDED(hr))
{
IBaseFilterPtr pFilter = pUnk;
pGraph->AddFilter(pFilter, L"Private Filter");
pGraph->RenderFile(pMediaClip, NULL);
}
Run Code Online (Sandbox Code Playgroud)
我的代码如下,
IUnknownPtr pUnk;
HRESULT hr = CreateObjectFromPath(TEXT("c:\\filters\\mp4demux.dll"), IID_BaseFilter, &pUnk);
if (SUCCEEDED(hr))
{
//add functionality
}
Run Code Online (Sandbox Code Playgroud)
我猜IID_BaseFilter是我应该使用的,它是我用于其他过滤器的东西.但我给出了错误'ClassFactory无法提供请求的类'.
我在这里错过了什么吗?任何帮助将不胜感激.提前致谢!
编辑:代码
IBaseFilter *pSrc = NULL, *pSrc2 = NULL, *pWaveDest = NULL, *pWriter = NULL;
IFileSinkFilter *pSink= NULL;
IGraphBuilder *pGraph;
ICaptureGraphBuilder2 *pBuild;
IMediaControl *pControl = NULL;
// This example omits error handling.
hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL, CLSCTX_INPROC_SERVER, …Run Code Online (Sandbox Code Playgroud)