Freigeben über


Synchronisieren der VMR mit der Aktualisierungsrate des Monitors

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

In seltenen Szenarien möchten Sie das Videorendering möglicherweise präzise mit der Aktualisierungsrate des Monitors synchronisieren, sodass bei jeder Aktualisierung des Monitors genau ein neuer Frame angezeigt wird. Die zuverlässigste Möglichkeit dazu besteht darin, einen benutzerdefinierten Zuweisungs-Presenter zu erstellen, der einen Flip-Vorgang anstelle eines Blit-Vorgangs verwendet, um die Videobits in die primäre Oberfläche zu schreiben. "Flip" wird jedes Mal aufgerufen, wenn der Monitor aktualisiert wird. Wenn Ihr Videostream also keine Zeitstempel enthält, wird der VMR so schnell wie möglich auf die primäre Oberfläche gerendert, aber die Oberfläche blockiert den Stream, bis der Flip-Vorgang abgeschlossen ist. Dies bedeutet, dass, solange die CPU nicht überlastet ist, der nächste Frame immer auf der primären Oberfläche wartet, wenn der Monitor aktualisiert wird. Wenn jedoch ein anderer CPU-intensiver Prozess ausgeführt wird, könnte er Ihren DirectShow-Streamingthread verhungern, sodass er nicht schnell genug Videoframes an die primäre Oberfläche liefern kann.

RENDERLOSER VMR-Wiedergabemodus (Benutzerdefinierte Zuteilungs-Referenten)