다음을 통해 공유


VMR을 모니터의 새로 고침 속도와 동기화

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

드문 시나리오에서는 모니터를 새로 고칠 때마다 정확히 하나의 새 프레임이 표시되도록 비디오 렌더링을 모니터의 새로 고침 속도와 정확하게 동기화할 수 있습니다. 이 작업을 수행하는 가장 신뢰할 수 있는 방법은 비디오 비트를 기본 화면에 쓰는 블릿 작업 대신 대칭 이동 작업을 사용하는 사용자 지정 할당자-발표자를 만드는 것입니다. 모니터가 새로 고쳐질 때마다 "Flip"이 호출되므로 비디오 스트림에 타임스탬프가 포함되어 있지 않으면 VMR은 주 표면으로 최대한 빠르게 렌더링되지만, 표면이 Flip 작업이 완료될 때까지 스트림을 차단합니다. 즉, CPU에 과부하가 걸리지 않는 한 모니터가 새로 고쳐질 때마다 다음 프레임이 항상 기본 화면에서 대기합니다. 그러나 다른 CPU 집약적 프로세스가 실행 중이라면 DirectShow 스트리밍 스레드가 비디오 프레임을 기본 화면에 충분히 빠르게 전달하지 못하게 될 수 있습니다.

VMR 렌더링 없는 재생 모드(사용자 지정 Allocator-Presenters)