DirectDraw 전용 모드

[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

참고

이 항목은 VMR-7에만 적용됩니다. VMR-9에서는 고유한 전용 모드 할당자-발표자를 제공하여 배타적 모드를 사용하도록 설정합니다. IVMRSurfaceAllocatorNotify9::AllocateSurfaceHelper 메서드를 사용하는 경우 비교적 간단합니다. VMR9Allocator 샘플은 사용자 지정 할당자-발표자를 구현하는 방법을 보여줍니다.

 

DirectDraw 전용 모드에서 애플리케이션은 그래픽 하드웨어를 단독으로 제어합니다. 이는 게임이나 전체 화면 비디오 애플리케이션과 같은 애플리케이션에 유용합니다. 일반적으로 VMR은 DirectDraw 개체를 만들고 협력 수준을 정상으로 설정합니다. 그러나 DirectDraw 전용 모드에서 VMR을 실행하려면 애플리케이션 자체가 DirectDraw 개체와 기본 표면을 만들고 SetCooperativeLevel 을 호출하여 배타적 모드를 지정해야 합니다.

VMR에는 DirectDraw 전용 모드에서 실행할 수 있는 특수 할당자-발표자가 있습니다. 이 할당자-발표자를 사용하도록 VMR을 구성하려면 다음을 수행합니다.

  1. Filter Graph를 만들고 IFilterGraph::AddFilter 메서드를 사용하여 VMR을 추가합니다. 코드 예제는 VMR 창 없는 모드를 참조하세요.

  2. 단독 모드 할당자-발표자를 만듭니다.

    IVMRImagePresenterExclModeConfig* pExclModeConfig;
    CoCreateInstance(
            CLSID_AllocPresenterDDXclMode,
            NULL,
            CLSCTX_INPROC_SERVER,
            IID_IVMRImagePresenterExclModeConfig,
            (void**)&pExclModeConfig
            );
    
  3. 새 할당자-발표자를 구성합니다.

    pExclModeConfig->SetXlcModeDDObjAndPrimarySurface(...);
    
  4. 새 할당자-발표자를 VMR에 연결합니다.

  5. 일반적인 방법으로 필터 그래프의 나머지 부분을 빌드합니다.

VMR 작업 모드