Windows COM简介
webrtc的windows端代码,用到了很多COM技术,比如使用摄像头视频采集、音频设备管理等,都是使用windows最底层的COM技术,为了更好的熟悉webrtc windows端代码,需要对windows com技术有所了解,不然无法深入到底层,打通底层逻辑,自下而上,再自上而下,这样理解webrtc的代码才轻松一点。关于音视频的采集,可以参考我的OBS源码分析专栏,OBS是录制直播推流项目,会涉及到音视频的采集,底层也是com技术。
那么,COM组件到底是什么?COM本身只是一种规范,而不是实现。但是当使用C++来实现时,COM 组件就是一个C++类,而接口都是纯虚类。可以用如下的 C++代码来简单描述一个 COM组件。
class IFunction
{
public:
virtual method1() = 0;
virtual method2() = 0;
// ...
};
class MyObject: public IFunction
{
public:
virtual method1(){ ... }
virtual method2(){ ... }
}
其中,IFunction就是我们常说的接口,而MyObject就是COM组件。
对于 DirectShow 应用程序来说,对 COM 知识的了解并不要求很高。因为DirectShow 应用程序实际上是一种 COM 组件的客户程序,只是 COM组件的"使用"问题。这些问题包括如何创建 C