다음을 통해 공유


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));

DV 캠코더 제어