DirectShow EVR 필터 사용

[이 페이지에 설명된 구성 요소, 향상된 Video Renderer는 레거시 기능입니다. MediaPlayer 및 IMFMediaEngine 구성 요소를 통해 노출된 SVR(Simple Video Renderer)으로 대체되었습니다. 비디오 콘텐츠를 재생하려면 이러한 구성 요소 중 하나로 데이터를 보내고 새 비디오 렌더러를 인스턴스화하도록 허용해야 합니다. 이러한 구성 요소는 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 MediaPlayer 또는 하위 수준 IMFMediaEngine API를 사용하여 EVR 대신 Windows에서 비디오 미디어를 재생하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

향상된 EVR(비디오 렌더러) 필터를 만들려면 CoCreateInstance를 호출합니다. CLSID는 uuids.h에 정의된 CLSID_EnhancedVideoRenderer. EVR 필터를 사용하기 위해 MFStartup 또는 MFShutdown을 호출할 필요가 없습니다.

DirectShow 애플리케이션에서 EVR 필터를 사용하는 방법에 대한 자세한 내용은 DirectShow의 오디오/비디오 재생을 참조하세요.

EVR 필터는 참조 스트림에 해당하는 하나의 입력 핀으로 시작합니다. 하위 스트림에 대한 핀을 추가하려면 IEVRFilterConfig 인터페이스에 대한 필터를 쿼리하고 IEVRFilterConfig::SetNumberOf스트림 호출합니다. 입력 핀을 연결하기 전에 이 메서드를 호출합니다. 핀 0은 항상 참조 스트림입니다. 참조 스트림의 형식이 사용 가능한 하위 스트림 형식을 제한할 수 있으므로 다른 핀 앞에 이 핀을 커넥트.

그래프를 시작하기 전에 비디오 클리핑 창과 대상 사각형을 설정합니다. 자세한 내용은 비디오 표시 컨트롤 사용을 참조 하세요.

VMR(비디오 혼합 렌더러)과 달리 EVR에는 작동 모드(창, 창 없음 등)가 없습니다. 특히 다음 사항에 주의하십시오.

  • EVR은 창 모드를 지원하지 않습니다. 애플리케이션은 클리핑 창을 제공해야 합니다.
  • EVR에는 렌더링 없는 모드가 없습니다. 기본 발표자를 대체하려면 IMFVideoRenderer::InitializeRenderer를 호출 합니다.
  • EVR에는 혼합 모드가 없습니다. EVR은 항상 믹서가 만들어집니다. 입력 스트림이 하나 있는 경우 SetNumberOf스트림 호출하여 EVR에서 믹서 사용을 강제할 필요는 없습니다.

필터 인터페이스

EVR 필터는 다음 인터페이스를 노출합니다. 이러한 인터페이스 중 일부는 DirectShow SDK에 설명되어 있습니다. QueryInterface를 사용하여 다음 인터페이스에 대한 포인터를 검색합니다.

입력 핀 인터페이스

EVR 필터의 입력 핀은 다음 인터페이스를 노출합니다. QueryInterface를 사용하여 다음 인터페이스에 대한 포인터를 검색합니다.

또한 IMFGetService 인터페이스를 사용하여 다음 인터페이스를 검색할 수 있습니다.

DirectShow의 오디오/비디오 재생

향상된 비디오 렌더러