다음을 통해 공유


비디오 렌더러 필터

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

Video Renderer 필터는 강력한 다목적 비디오 렌더러입니다.

참고

Windows XP 이상에서 기본 비디오 렌더러는 비디오 혼합 렌더러 필터 7 (VMR-7)입니다. VMR-7과 Video Renderer는 모두 이름이 "Video Renderer"입니다. 이전 플랫폼에서 Video Renderer는 기본 렌더러입니다. 올바른 렌더러 선택을 참조하세요.

 

비디오 렌더러는 비디오 카드 지원하는 경우 DirectDraw 및 오버레이 표면을 사용합니다. 필터 그래프 관리자는 애플리케이션이 Video Renderer에서 속성을 설정하고 검색할 수 있도록 하는 IVideoWindow 인터페이스를 노출합니다. 최신 비디오 카드를 사용하면 Video Renderer에서 전체 화면 렌더링을 지원합니다. 그렇지 않으면 필터 그래프 관리자가 자동으로 전체 화면 모드에 대한 전체 화면 렌더러 필터로 전환됩니다. 자세한 내용은 IVideoWindow::p ut_FullScreenMode 를 참조하세요.

  • ! [중요]

    일반적으로 이 필터의 비디오 창은 필터 Graph 관리자가 만든 작업자 스레드에서 메시지를 처리합니다. Howerver에서 애플리케이션이 CoCreateInstance를 사용하여 필터를 직접 만드는 경우 비디오 창은 애플리케이션 스레드에서 메시지를 처리합니다. 이 경우 비디오 창에 메시지를 디스패치하려면 애플리케이션 스레드에 메시지 루프가 있어야 합니다. 또한 필터 그래프 관리자가 종료될 때 발생하는 Video Renderer에 대한 최종 릴리스 호출까지 스레드가 종료되지 않아야 합니다. 그렇지 않으면 애플리케이션이 교착 상태에 빠질 수 있습니다.

     

레이블
필터 인터페이스 IBaseFilter, IBasicVideo, IBasicVideo2, IDirectDrawVideo, IKsPropertySet, IMediaPosition, IMediaSeeking, IQualityControl, IQualProp, IVideoWindow
입력 핀 미디어 형식 압축되지 않은 비디오 형식입니다.
입력 핀 인터페이스 IMemInputPin, IOverlay, IPin, IPinConnection, IQualityControl
출력 핀 미디어 형식 해당 사항 없음
출력 핀 인터페이스 해당 사항 없음
CLSID 필터링 CLSID_VideoRenderer
속성 페이지 CLSID 속성 페이지가 없습니다.
실행 파일 quartz.dll
장점 Windows XP 이상: MERIT_UNLIKELY
필터 범주 CLSID_LegacyAmFilterCategory

 

설명

디버그 버전의 Quartz.dll LOG_TRACE 디버그 수준이 5 이상으로 설정된 경우 Video Renderer는 비디오 창에 각 프레임의 타임스탬프를 표시합니다. 이러한 숫자는 DLL의 소매 버전에 표시되지 않습니다. 자세한 내용은 출력 함수 디버그를 참조하세요.

다음 설명은 필터 개발자를 위한 것입니다.

비디오 그래픽 카드 YUV 오버레이 표면을 지원하는 경우 Video Renderer는 YUV 형식을 허용합니다. 그러나 업스트림 필터에 처음 연결하는 경우 Video Renderer에는 현재 모니터 설정의 색 깊이와 일치하는 RGB 형식이 필요합니다. 예를 들어 현재 디스플레이 설정이 24비트 색인 경우 업스트림 필터는 24비트 RGB 비디오를 제공할 수 있어야 합니다. 필터 그래프가 실행 상태로 전환되면 Video Renderer는 동적 형식 변경을 적절한 YUV 색 공간으로 협상합니다.

Video Renderer는 RGB 형식으로 연결하여 DirectDraw를 사용할 수 없는 경우 GDI를 사용할 수 있도록 합니다. 다른 애플리케이션이 비디오 메모리를 사용하는 경우, 비디오 사각형이 다중 모니터 시스템에서 두 개의 모니터를 가로지르거나 비디오 사각형이 다른 창에 의해 완전히 가려지는 경우 GDI로 전환됩니다.

참고

비디오 혼합 렌더러는 이러한 유형의 동적 형식 변경을 수행하지 않으며 렌더링에 GDI를 사용하지 않으므로 RGB 미디어 형식이 필요하지 않습니다.

 

형식 변경을 협상하기 위해 Video Renderer는 새 미디어 형식으로 IPin::QueryAccept 를 호출합니다. 업스트림 필터가 S_OK 반환하면 Video Renderer는 새 미디어를 다음 샘플에 연결합니다. 업스트림 필터는 각 샘플에서 IMediaSample::GetMediaType을 호출해야 합니다. GetMediaTypeNULL이 아닌 값을 반환하는 경우 형식 변경이 표시되고 출력 형식을 전환하여 업스트림 필터가 응답해야 합니다. (QueryAccept 메서드에서 형식을 전환하지 마세요.) 업스트림 필터는 적어도 주요 RGB 형식을 허용해야 하며 일반적인 YUV 형식을 지원하는 것이 이상적입니다. 스트리밍하는 동안 Video Renderer는 YUV 형식과 RGB 형식 간에 여러 번 전환할 수 있습니다. Video Renderer는 업스트림 필터에서 시작한 동적 형식 변경을 허용하지 않습니다.

Video Renderer는 DirectDraw 오버레이 표면에 그리면 입력 핀에 단일 버퍼를 할당합니다. 업스트림 필터가 여러 버퍼를 사용하여 연결을 강제로 시도하는 경우 Video Renderer는 오버레이 표면을 사용할 수 없습니다.

DirectShow 필터