EVR 미디어 형식 협상

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

이 항목에서는 향상된 EVR(비디오 렌더러)이 미디어 형식의 유효성을 검사하는 방법을 설명합니다.

  • DirectShow EVR 필터의 경우 필터의 핀이 연결되면 형식 협상이 발생합니다.

  • EVR 미디어 싱크의 경우 미디어 형식은 스트림 싱크의 IMFMediaTypeHandler 인터페이스를 통해 설정됩니다. 일반적으로 토폴로지 로더는 미디어 형식을 협상하지만 애플리케이션은 미디어 형식을 직접 설정할 수도 있습니다.

EVR은 기본 미디어 유형을 보고하지 않습니다. 클라이언트는 허용되는 형식을 찾을 때까지 미디어 형식을 테스트해야 합니다. 하위 스트림에서 형식을 설정하려면 먼저 참조 스트림의 미디어 형식을 설정해야 합니다.

참조 스트림의 경우 EVR 믹서는 호환되는 DXVA(DirectX Video Acceleration) 렌더링 대상 형식 목록을 가져옵니다. EVR 발표자는 이 목록을 사용하여 Direct3D 스왑 체인의 형식을 선택합니다. 호환되는 렌더링 대상 형식을 찾을 수 없는 경우 EVR은 미디어 형식을 거부합니다.

하위 스트림의 경우 EVR 믹서는 DXVA 디바이스가 참조 스트림에 대해 선택된 렌더링 대상 형식과 함께 해당 하위 스트림 형식을 지원하는지 여부를 쿼리합니다. 따라서 참조 스트림에 따라 사용 가능한 하위 스트림 형식이 변경될 수 있습니다.

자세한 프로세스는 다음과 같습니다. 이러한 세부 정보는 대부분의 애플리케이션에서 중요하지 않지만 사용자 지정 믹서 또는 발표자를 작성하는 경우 유용할 수 있습니다.

참조 스트림의 경우 협상은 다음과 같이 수행됩니다.

  1. EVR은 믹서에서 IMFTransform::SetInputType을 호출합니다.

  2. 믹서는 DXVA2_VideoDesc 구조를 사용하여 미디어 형식을 DXVA 2.0 설명으로 변환합니다.

  3. 믹서는 IDirectXVideoProcessorService::GetVideoProcessorDeviceGuids를 호출하여 비디오 프로세서 GUID 목록을 가져옵니다.

  4. 각 비디오 프로세서 GUID에 대해 믹서는 IDirectXVideoProcessorService::GetVideoProcessorRenderTargets를 호출하여 지원되는 렌더링 대상 형식을 가져옵니다.

  5. EVR은 MFVP_MESSAGE_INVALIDATEMEDIATYPE 메시지와 함께 발표자에서 IMFVideoPresenter::P rocessMessage를 호출합니다. 이 메시지로 인해 발표자는 새 형식을 선택합니다.

  6. 발표자는 IMFTransform::GetOutputAvailableType을 호출하여 믹서에서 사용 가능한 출력 형식 목록을 가져옵니다. 믹서는 4단계에서 얻은 형식에서 이 목록을 생성합니다.

  7. 발표자는 형식을 선택하고 믹서에서 IMFTransform::SetOutputType을 호출합니다.

하위 스트림의 경우 프로세스는 더 간단합니다.

  1. EVR은 믹서에서 IMFTransform::SetInputType을 호출합니다.

  2. 믹서는 IDirectXVideoProcessorService::GetVideoProcessorSubStreamFormats를 호출하여 사용 가능한 하위 스트림 형식 목록을 가져옵니다.

  3. 제안된 형식이 이 목록에 포함된 경우 EVR은 입력 형식을 허용합니다.

향상된 비디오 렌더러