DV 摄像机的外部设备接口
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
WDM 视频捕获筛选器公开用于控制摄像机的三个接口。
Label | 值 |
---|---|
IAMExtDevice | 外部设备控制的基本接口。 |
IAMExtTransport | 控制 VCR 函数。 |
IAMTimecodeReader | 从设备读取时间代码。 |
注意
若要将这些接口与 MSDV 摄像机驱动程序一起使用,请在项目中包括头文件 XPrtDefs.h。
选择捕获设备并创建捕获筛选器的实例后,查询筛选器以获取这些接口。 以下示例声明一个包含接口指针的自定义结构,以及指定每个接口可用性的布尔值:
struct _MyDevCap
{
IAMExtDevice *pDevice;
IAMExtTransport *pTransport;
IAMTimecodeReader *pTimecode;
BOOL bHasDevice;
BOOL bHasTransport;
BOOL bHasTimecode;
} MyDevCap;
HRESULT hr;
IBaseFilter *pDVCam; // Pointer to the capture filter.
// Create an instance of the capture filter (not shown).
hr = pDVCam->QueryInterface(IID_IAMExtDevice, (void **)&MyDevCap.pDevice);
MyDevCap.bHasDevice = (SUCCEEDED(hr));
hr = pDVCam->QueryInterface(IID_IAMExtTransport, (void **)&MyDevCap.pTransport);
MyDevCap.bHasTransport = (SUCCEEDED(hr));
hr = pDVCam->QueryInterface(IID_IAMTimecodeReader, (void **)&MyDevCap.pTimecode);
MyDevCap.bHasTimecode = (SUCCEEDED(hr));
相关主题