探索Grabber示例源代码
1. 概述
在开发媒体处理相关的应用程序时,我们常常需要使用到过滤器来处理媒体流。Grabber示例为我们提供了一个很好的参考,它包含了类ID和接口ID的定义,回调格式的设定,以及过滤器类、分配器类和输入引脚类的实现等内容。下面我们将详细探讨这些部分。
2. 定义唯一的GUID和IID
为了避免与官方的DirectX Grabber示例过滤器冲突,我们需要定义新的GUID和IID。以下是相关代码:
// {2FA4F053-6D60-4cb0-9503-8E89234F3F73}
DEFINE_GUID(CLSID_GrabberSample,
0x2fa4f053, 0x6d60, 0x4cb0, 0x95, 0x3, 0x8e, 0x89, 0x23, 0x4f, 0x3f, 0x73);
DEFINE_GUID(IID_IGrabberSample,
0x6b652fff, 0x11fe, 0x4fce, 0x92, 0xad, 0x02, 0x66, 0xb5, 0xd7, 0xc7, 0x8f);
这里定义了 CLSID_GrabberSample
和 IID_IGrabberSample
,用于实例化和查询相关接口。
3. 定义回调类型
接下来,我们定义回调类型,用于将数据传递给应用程序。代码如下:
typedef HRESULT (*SAM