MSDV 드라이버
[DirectShow 이 페이지와 연결된 기능은 레거시 기능입니다. MediaPlayer, IMFMediaEngine, Media Foundation 오디오/비디오 캡처대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. Microsoft는 가능하면 새로운 코드에서 MediaPlayer, IMFMediaEngine 및 Audio/Video Capture를 DirectShow대신 Media Foundation 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
MSDV는 DV 캠코더용 Microsoft WDM(Windows 드라이버 모델) 드라이버입니다. 디바이스가 연결되면 드라이버가 DirectShow 필터로 표시됩니다. 두 필터 범주로 열거됩니다.
- CLSID_VideoInputDeviceCategory("비디오 캡처 원본")
- AM_KSCATEGORY_RENDER("WDM 스트리밍 렌더링 디바이스")
필터의 친숙한 이름은 Microsoft DV Camera and VCR
또는 지역화된 동등한 이름입니다. 일부 디바이스에서 Description 속성에는 일반 이름 대신 사용할 수 있는 특정 모델에 대한 설명이 포함되어 있습니다. 자세한 내용은 캡처 디바이스선택합니다.
MSDV에는 두 개의 출력 핀이 있습니다. 한 핀은 인터리브 오디오 및 비디오 데이터를 포함하는 DV 프레임을 제공합니다. 다른 핀은 오디오 없이 비디오 전용 프레임을 제공합니다. MSDV는 두 핀에서 한 번에 스트리밍할 수 없으므로 한 번에 하나의 출력 핀만 연결할 수 있습니다. DV 장치에서 비디오를 캡처하는 방법에 대한 자세한 내용은 DV를 파일 캡처하는참조하세요.
디바이스
대부분의 DV 캠코더에는 테이프에서 컴퓨터로 데이터를 전송할 수 있는 VTR(비디오 테이프 레코더) 하위 단위가 있습니다. 애플리케이션의 경우 테이프에서 캡처는 라이브 비디오 캡처와 동일하게 작동합니다. 유일한 차이점은 애플리케이션이 외부 테이프 전송(테이프 시작 및 중지, 되감기 등)을 제어해야 한다는 것입니다. 이를 위해 MSDV는 IAMExtDevice, IAMExtTransport및 IAMTimecodeReader 인터페이스를 노출합니다. VTR을 제어하는 방법에 대한 자세한 내용은 DV Camcorder 제어하는참조하세요.
컴퓨터에서 캠코더로 DV를 전송할 수도 있습니다. 그런 다음, 캠코더의 온보드 화면에서 비디오를 보거나 테이프에 녹화할 수 있습니다. 이 기능을 지원하기 위해 MSDV에는 인터리브된 DV 스트림을 받을 수 있는 입력 핀이 있습니다. 입력 핀이 연결되면 MSDV는 캡처 필터 대신 렌더러 필터 역할을 합니다. MSDV는 이 모드에서 검색을 지원하지 않습니다. 디바이스로 DV를 보내는 방법에 대한 자세한 내용은 파일에서 테이프로 DV 전송 참조하세요.
dv 데이터를 디바이스
디바이스가 양방향으로 동시에 스트리밍할 수 없으므로 입력 및 출력 핀을 동시에 연결할 수 없습니다.
많은 캠코더에서 VTR 모드와 카메라 모드를 전환하면 디바이스가 꺼져 있습니다. 따라서 사용자가 모드를 전환하면 DirectShow에서 디바이스가 손실될 수 있습니다. 디바이스 제거 이벤트에 대한 자세한 내용은 디바이스 제거 알림참조하세요.
발언
MSDV 드라이버에서 지원되는 DV 형식에 대한 자세한 내용은 DV 비디오 하위 형식참조하세요.
MSDV를 사용하여 필터 그래프를 빌드하는 방법에 대한 몇 가지 팁:
IGraphBuilder::Render 사용하여 MSDV에서 출력 핀을 렌더링할 수 없습니다. (필터 그래프 관리자는 출력 핀을 MSDV의 입력 핀에 연결하려고 시도하며 실패합니다.) 대신 IGraphBuilder::Connect 또는 ICaptureGraphBuilder2::RenderStream사용합니다.
필터 그래프에 MSDV가 포함된 경우 MSDV는 그래프에 대한 참조 클록을 제공해야 합니다. DirectX 8.0부터 필터 그래프 관리자는 MSDV를 참조 클록으로 자동으로 선택합니다. 이전 버전에서는 필터 그래프 관리자에서 IMediaFilter::SetSyncSource 메서드를 호출해야 합니다. 시계에 대한 자세한 내용은 DirectShow 시간 및 시계를 참조하세요.
디바이스에 따라 IAMExtDevice, IAMExtTransport및 IAMTimeCodeReader 일부 메서드는 HRESULT 값을 대신 Windows 오류 코드를 반환할 수 있습니다. 가능한 오류 코드는 다음과 같습니다.
오류 코드 묘사 ERROR_TIMEOUT 외부 디바이스 명령의 시간이 초과되었습니다. ERROR_REQ_NOT_ACCEP 디바이스가 이 외부 디바이스 명령을 수락하지 않았습니다. ERROR_NOT_SUPPORTED 디바이스는 이 외부 디바이스 명령을 지원하지 않습니다. ERROR_REQUEST_ABORTED 외부 디바이스 명령이 중단되었습니다. 디바이스가 제거되었거나 버스 재설정이 발생했을 수 있습니다.
디바이스 정보
Windows Millennium Edition 및 Windows XP에서 DV 필터의 디바이스 모니커는 FriendlyName 속성 외에도 Description 속성을 지원합니다. 이 속성은 일반적으로 디바이스의 브랜드 이름을 포함하는 INF 파일에서 가져온 디바이스에 대한 설명을 반환합니다. 그러나 이 속성은 모든 디바이스 모델에서 지원되지 않습니다.
디바이스 모니커에 대한 자세한 내용은 시스템 디바이스 열거자 사용하는참조하세요.
시계 시간
MSDV 드라이버는 1394 데이터 패킷에 포함된 1394 버스 클록을 사용하여 클록을 파생합니다. 이러한 값을 사용하여 DV 미디어 샘플을 타임스탬프를 지정합니다. 이 원본 시계는 컴퓨터 시스템 시계가 아니므로 시간이 결국 컴퓨터 시스템 시계에서 드리프트됩니다. 그러나 위에서 설명한 대로 기본적으로 Filter Graph Manager는 MSDV를 그래프 참조 클록으로 선택합니다.
IAMDroppedFrames 인터페이스는 드라이버의 현재 삭제된 프레임 측정값을 보고합니다. 이 값은 지정된 시간에 삭제된 실제 프레임 수와 완벽하게 동기화되지 않을 수 있습니다. 프레임이 삭제되면 시스템이 분산되지 않음을 나타냅니다(데이터 프로덕션이 데이터 소비를 초과). 예를 들어 사용자의 하드 디스크는 DV 캡처 속도를 지원할 만큼 빠르지 않을 수 있습니다.
관련 항목
-
DirectShow 디지털 비디오