C++和DirectShow

Rod*_*ddy 3 c++ com winapi directshow

我刚刚开始使用DirectShow编程,DirectShow API的'C'特性使我的皮肤爬行.无尽的返回代码而不是异常,addref/release遍布各处,函数获取指针指针...

是否有任何'C++友好'的DirectShow编程包装器隐藏下面的所有COM丑陋.

kid*_*jan 5

对于98%的DirectShow代码,您永远不应该看到对AddRef或Release的调用.始终使用CComPtr <>.这条规则有一些小的例外.

另外,了解锁定很重要,CCritSec和CAutoLock也是如此.再一次,我将避免手动锁定CCritSec实例,因为它是一种使应用程序死锁的好方法.

此外,这段代码非常方便:

#include <dxerr9.h>

...

HRESULT hr = S_OK;

... something goes wrong ...

CString err(::DXGetErrorString9(hr));
err += ::DXGetErrorDescription9(hr);
Run Code Online (Sandbox Code Playgroud)

最后,确保您使用的是DShow事件.各种有用的信息来自DShow图中的事件,并且令人惊讶的是有多少应用程序没有实现(或实现不正确).

不久之前,我写了这篇文章,我有点把与DShow合作的一些陷阱抛在了一起.可悲的是,我知道这些陷阱,因为我几乎在所有这些方面搞砸了.