Rod*_*ddy 3 c++ com winapi directshow
我刚刚开始使用DirectShow编程,DirectShow API的'C'特性使我的皮肤爬行.无尽的返回代码而不是异常,addref/release遍布各处,函数获取指针指针...
是否有任何'C++友好'的DirectShow编程包装器隐藏下面的所有COM丑陋.
对于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合作的一些陷阱抛在了一起.可悲的是,我知道这些陷阱,因为我几乎在所有这些方面搞砸了.