IMFPMediaPlayer::InsertEffect-Methode (mfplay.h)
Wendet einen Audio- oder Videoeffekt auf die Wiedergabe an.
Syntax
HRESULT InsertEffect(
[in] IUnknown *pEffect,
[in] BOOL fOptional
);
Parameter
[in] pEffect
Zeiger auf die IUnknown-Schnittstelle für eine der folgenden:
- Eine Media Foundation-Transformation (MFT), die den Effekt implementiert. MFTs machen die IMFTransform-Schnittstelle verfügbar.
- Ein Aktivierungsobjekt, das einen MFT erstellt. Aktivierungsobjekte machen die IMFActivate-Schnittstelle verfügbar.
[in] fOptional
Gibt an, ob der Effekt optional ist.
Rückgabewert
Die Methode gibt ein HRESULT zurück. Mögliches Werte (aber nicht die Einzigen) sind die in der folgenden Tabelle.
Rückgabecode | Beschreibung |
---|---|
|
Die Methode wurde erfolgreich ausgeführt. |
|
Dieser Effekt wurde bereits hinzugefügt. |
Hinweise
Das im pEffect-Parameter angegebene Objekt kann entweder einen Videoeffekt oder einen Audioeffekt implementieren. Der Effekt wird auf alle Medienelemente angewendet, die nach dem Aufruf der Methode festgelegt wurden. Sie wird nicht auf das aktuelle Medienelement angewendet.
Für jedes Medienelement wird der Effekt auf den ersten ausgewählten Stream des übereinstimmenden Typs (Audio oder Video) angewendet. Wenn ein Medienelement über zwei ausgewählte Datenströme desselben Typs verfügt, empfängt der zweite Stream den Effekt nicht. Der Effekt wird ignoriert, wenn das Medienelement keinen Stream enthält, der dem Effekttyp entspricht. Wenn Sie beispielsweise einen Videoeffekt festlegen und eine Datei wiedergeben, die nur Audio enthält, wird der Videoeffekt ignoriert, obwohl kein Fehler ausgelöst wird.
Der Effekt wird auf alle nachfolgenden Medienelemente angewendet, bis die Anwendung den Effekt entfernt. Um einen Effekt zu entfernen, rufen Sie IMFPMediaPlayer::RemoveEffect oder IMFPMediaPlayer::RemoveAllEffects auf.
Wenn Sie mehrere Effekte desselben Typs (Audio oder Video) festlegen, werden diese in der gleichen Reihenfolge angewendet, in der Sie InsertEffect aufrufen.
Optimierungen der Remotewiedergabe
Audio- und Videoeffekte sind möglicherweise nicht kompatibel mit Optimierungen, die für die Remotewiedergabe verwendet werden. Die folgenden Hinweise gelten nur für Audio- oder Videoeffekte, die tatsächlich während der Wiedergabe verwendet werden:- Wenn Sie einen Audio- oder Videoeffekt als erforderlich markieren, indem Sie fOptional auf FALSE festlegen, deaktiviert MFPlay Remotewiedergabeoptimierungen.
- Andernfalls kann MFPlay die Effekte löschen, wenn alle Audio-/Videoeffekte als optional markiert sind, um Remotewiedergabeoptimierungen zu aktivieren.
Remoteoptimierungen können aus anderen Gründen deaktiviert werden. Sie sind beispielsweise deaktiviert, wenn Sie beim Erstellen des Playerobjekts die Option MFP_OPTION_NO_REMOTE_DESKTOP_OPTIMIZATION festlegen. In diesem Fall versucht MFPlay, alle optionalen Effekte einzufügen.
Nicht-Audio- und Videoeffekte wirken sich nicht auf Remoteoptimierungen aus. Wenn Sie einen erforderlichen Effekt einfügen, die Quelle aber keine Datenströme dieses Typs enthält, werden Remoteoptimierungen nicht deaktiviert.
Beispiele
HRESULT AddPlaybackEffect(REFGUID clsid, IMFPMediaPlayer *pPlayer)
{
IMFTransform *pMFT = NULL;
HRESULT hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pMFT));
if (SUCCEEDED(hr))
{
hr = pPlayer->InsertEffect(pMFT, TRUE); // Set as optional.
}
SafeRelease(&pMFT);
return hr;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | mfplay.h |
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für