DV 摄像机的外部设备接口
[与此页面关联的功能(DirectShow)是一项旧功能。 它已被 MediaPlayer、IMFMediaEngine取代,并在媒体基金会 音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayer、IMFMediaEngine 和 Media Foundation 中的音频/视频捕获,而不是 DirectShow。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]
WDM 视频捕获 筛选器公开三个接口用于控制摄像机。
标签 | 价值 |
---|---|
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));
相关主题