Freigeben über


IMediaSeeking::SetRate-Methode (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 SetRate -Methode legt die Wiedergaberate fest.

Syntax

HRESULT SetRate(
  [in] double dRate
);

Parameter

[in] dRate

Wiedergaberate. Darf nicht null sein.

Rückgabewert

Gibt einen HRESULT-Wert zurück. Die folgenden Werte sind möglich.

Rückgabecode BESCHREIBUNG
S_OK
Erfolg.
E_INVALIDARG
Die angegebene Rate war null oder ein negativer Wert. (Siehe Hinweise.)
E_NOTIMPL
Nicht implementiert.
E_POINTER
NULL-Zeigerargument.
VFW_E_UNSUPPORTED_AUDIO
Audiogeräte oder Filter unterstützen diese Rate nicht.

Hinweise

Die Wiedergaberate wird als Verhältnis der normalen Geschwindigkeit ausgedrückt. Daher ist 1.0 die normale Wiedergabegeschwindigkeit, 0,5 ist die halbe Geschwindigkeit und 2.0 ist doppelt so schnell. Bei Audiostreams ändert sich durch das Ändern der Rate auch die Tonhöhe.

Negative Werte deuten auf die umgekehrte Wiedergabe hin. Die meisten Filter unterstützen keine negative Wiedergabe, sondern geben stattdessen einen Fehlercode zurück, wenn der dRate-Parameter negativ ist.

Wenn eine Anwendung diese Methode im Filter Graph-Manager aufruft, führt der Filter Graph-Manager folgende Aktionen aus:

  1. Ruft die IMediaSeeking::GetCurrentPosition-Methode auf. Dieser Aufruf gibt die aktuelle Position zurück, wie vom Filter Graph-Manager berechnet.
  2. Beendet den Filtergraphen (wenn der Graph angehalten oder ausgeführt wird).
  3. Ruft die IMediaSeeking::SetPositions-Methode für die Filter mit der aktuellen Position als Startzeit auf. Dies hat den Effekt, dass die Streamzeit auf Null zurückgesetzt wird.
  4. Ruft die SetRate -Methode für die Filter mit der neuen Rate auf.
  5. Setzt das Filterdiagramm fort, wenn es angehalten oder ausgeführt wurde.
Wenn in Schritt 4 ein Fehler auftritt, versucht der Graphfilter-Manager, die vorherige Rate wiederherzustellen.

Filter sollten auf Ratenänderungen wie folgt reagieren:

Parser- und Quellfilter: Der Filter, der aus den Zeitstempeln stammt, reagiert auf den SetRate Aufruf. Dies ist in der Regel ein Parserfilter, z. B. der AVI-Splitterfilter, aber es kann sich um einen Quellfilter handelt. Nach jeder Such- oder Ratenänderung sollte der Filter die IPin::NewSegment-Methode mit den neuen Einstellungen aufrufen. Nach einer Kursänderung sollte die Zeitstempel entsprechend angepasst werden. Da einer Ratenänderung ein Suchvorgang vorausgeht, werden Zeitstempel von null neu gestartet, sodass der Filter einfach durch die Rate dividiert werden kann, um die neuen Zeitstempel zu berechnen.

Decoderfilter: Decoder sollten nicht auf SetRate Aufrufe reagieren, außer sie Upstream zu übergeben. Stattdessen sollten sie auf den NewSegment-Aufruf reagieren, den der Upstream Parser ausgibt. Wenn ein Decoderfilter neue Segmentinformationen empfängt, sollte er die Werte speichern und den NewSegment-Aufruf downstream übergeben. Einige Decoder müssen zusätzliche Zeitstempel generieren, indem sie ihre Eingabe interpolieren. Dabei sollten sie Ratenänderungen berücksichtigen.

Renderer: Videorenderer können in der Regel Ratenänderungen ignorieren, da die eingehenden Frames bereits den richtigen Zeitstempel aufweisen. Audiorenderer müssen ihre Wiedergaberate ändern, da Audiodecoder in der Regel keine Ratenänderungskonvertierungen vornehmen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)
Bibliothek Strmiids.lib

Weitere Informationen

Fehler- und Erfolgscodes

IMediaSeeking-Schnittstelle