VMR을 모니터의 새로 고침 빈도에 동기화
[이 페이지와 연결된 기능인 DirectShow는 레거시 기능입니다. MediaPlayer, IMFMediaEngine 및 Media Foundation의 오디오/비디오 캡처로 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드가 DirectShow 대신 Media Foundation에서 MediaPlayer, IMFMediaEngine 및 오디오/비디오 캡처를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
드문 시나리오에서는 모니터를 새로 고칠 때마다 정확히 하나의 새 프레임이 표시되도록 비디오 렌더링을 모니터의 새로 고침 속도와 정확하게 동기화할 수 있습니다. 이 작업을 수행하는 가장 신뢰할 수 있는 방법은 블릿 작업 대신 대칭 이동 연산을 사용하여 비디오 비트를 기본 화면에 쓰는 사용자 지정 할당자-발표자를 만드는 것입니다. 모니터가 새로 고쳐질 때마다 "Flip"이 호출되므로 비디오 스트림에 타임스탬프를 포함하지 않으면 VMR이 주 표면으로 최대한 빠르게 렌더링되지만 대칭 이동 작업이 완료될 때까지 표면이 스트림을 차단합니다. 즉, CPU에 과부하가 걸리지 않는 한 모니터가 새로 고쳐질 때마다 다음 프레임이 항상 기본 화면에서 대기합니다. 그러나 다른 CPU 집약적 프로세스가 실행 중인 경우 기본 화면에 비디오 프레임을 충분히 빠르게 제공할 수 없도록 DirectShow 스트리밍 스레드가 굶어 죽을 수 있습니다.
관련 항목