DV Camcorders용 외부 디바이스 인터페이스
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
WDM 비디오 캡처 필터는 캠코더를 제어하기 위한 세 가지 인터페이스를 노출합니다.
레이블 | 값 |
---|---|
IAMExtDevice | 외부 디바이스 제어를 위한 기본 인터페이스입니다. |
IAMExtTransport | VCR 함수를 제어합니다. |
IAMTimecodeReader | 디바이스에서 시간 코드를 읽습니다. |
참고
MSDV 캠코더 드라이버에서 이러한 인터페이스를 사용하려면 프로젝트에 헤더 파일 XPrtDefs.h를 포함합니다.
캡처 디바이스를 선택하고 캡처 필터의 instance 만든 후 이러한 인터페이스에 대한 필터를 쿼리합니다. 다음 예제에서는 각 인터페이스의 가용성을 지정하는 부울 값과 함께 인터페이스 포인터를 보유하는 사용자 지정 구조를 선언합니다.
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));
관련 항목