IAMPushSource-Schnittstelle (strmif.h)

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Die IAMPushSource Schnittstelle synchronisiert ein Filterdiagramm, das eine Livequelle rendert. Eine Livequelle ist eine Quelle, die Daten in Echtzeit streamt, z. B. ein Aufnahmegerät oder eine Netzwerkübertragung.

Quellfilter, die Livedaten streamen, sollten diese Schnittstelle auf ihren Ausgabepins verfügbar machen. Im Allgemeinen sollten Anwendungen die Methoden auf dieser Schnittstelle nicht aufrufen. Verwenden Sie stattdessen die IAMGraphStreams-Schnittstelle .

Vererbung

Die IAMPushSource-Schnittstelle erbt von IAMLatency. IAMPushSource verfügt auch über folgende Membertypen:

Methoden

Die IAMPushSource-Schnittstelle verfügt über diese Methoden.

 
IAMPushSource::GetMaxStreamOffset

Die GetMaxStreamOffset-Methode ruft den maximalen Streamoffset ab, den der Filter unterstützen kann.
IAMPushSource::GetPushSourceFlags

Die GetPushSourceFlags-Methode ruft eine Kombination von Flags ab, die das Verhalten des Filters beschreiben.
IAMPushSource::GetStreamOffset

Die GetStreamOffset-Methode ruft den Offset ab, den der Filter beim Generieren von Zeitstempeln verwendet.
IAMPushSource::SetMaxStreamOffset

Die SetMaxStreamOffset-Methode gibt den Streamoffset an, der im Filterdiagramm zulässig ist.
IAMPushSource::SetPushSourceFlags

Die SetPushSourceFlags-Methode legt Flags fest, die das Verhalten des Filters angeben. Derzeit sollten Anwendungen diese Methode nicht aufrufen, da Anforderungsflags nicht unterstützt werden und eine Anwendung die vom Filter festgelegten Flags nicht überschreiben sollte.
IAMPushSource::SetStreamOffset

Die SetStreamOffset-Methode legt den Offset für Zeitstempel fest, die von diesem Filter generiert werden.

Hinweise

Der Filter Graph-Manager verwendet die Methoden auf dieser Schnittstelle, um zwei Probleme zu beheben, die häufig beim Rendern von Livequellen auftreten:

  • Latenz: Wenn ein Filterdiagramm mehr als eine Livequelle enthält, weisen die Quellen häufig unterschiedliche Latenzen auf, was dazu führen kann, dass sie nicht synchronisiert sind. Wenn die Audioaufnahme beispielsweise eine längere Latenzzeit als die Videoaufnahme hat, bleibt die Audiowiedergabe dem Video hinterher, es sei denn, das Diagramm kompensiert die Differenz.
  • Ratenabgleich: Wenn ein Rendererfilter mit einer Livequelle verbunden ist, muss er seine Datennutzungsrate an die Produktionsrate des Quellfilters anpassen. Andernfalls kann es zu Lücken in den Daten kommen (wenn der Renderer schneller als die Quelle ausgeführt wird) oder Daten werden gelöscht (wenn die Quelle schneller ausgeführt wird).
Um die Latenz zu korrigieren, ruft das Filterdiagramm IAMLatency::GetLatency für jeden Ausgabepin auf, der die IAMPushSource Schnittstelle verfügbar macht, und bestimmt die maximale Latenz im Graphen. Anschließend wird IAMPushSource::SetStreamOffset für alle Filter mit weniger als der maximalen Latenz aufgerufen, sodass die Zeitstempel, die sie generieren, durch den richtigen Offset angepasst werden.

Um einen Ratenabgleich durchzuführen, muss das Filterdiagramm bestimmen, ob der Rendererfilter die Taktraten mit dem Quellfilter abgleichen kann. Die IAMPushSource::GetPushSourceFlags-Methode gibt einen Satz von Flags zurück, die angeben, ob der Renderer sicher ist, die Raten mit der Quelle abzugleichen.

Diese Probleme wirken sich nicht auf die Erfassung in einer Datei aus. Der Datei-Writer-Filter basiert auf Zeitstempeln in den eingehenden Beispielen, um die Datei ordnungsgemäß zu schreiben. Die Streams werden dann während der Wiedergabe synchronisiert. Was den Ratenabgleich angeht, werden die Daten immer so schnell wie möglich in die Datei geschrieben.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)

Weitere Informationen

IAMLatency