Méthode IMFSourceReaderEx ::AddTransformForStream (mfreadwrite.h)
Ajoute une transformation, telle qu’un effet audio ou vidéo, à un flux.
Syntaxe
HRESULT AddTransformForStream(
[in] DWORD dwStreamIndex,
[in] IUnknown *pTransformOrActivate
);
Paramètres
[in] dwStreamIndex
Flux à configurer. La valeur peut être l’une des valeurs suivantes.
Valeur | Signification |
---|---|
|
Index de base zéro d’un flux. |
|
Premier flux vidéo. |
|
Premier flux audio. |
[in] pTransformOrActivate
Pointeur vers l’un des éléments suivants :
- Une transformation Media Foundation (MFT) qui expose l’interface IMFTransform .
- Objet d’activation MFT qui expose l’interface IMFActivate .
Valeur retournée
Cette méthode peut retourner l’une de ces valeurs.
Code de retour | Description |
---|---|
|
Réussite. |
|
La transformation ne prend pas en charge le format de flux actuel et aucune conversion n’a été possible. Pour plus d'informations, consultez la section Notes. |
|
Demande non valide. |
|
Le paramètre dwStreamIndex n’est pas valide. |
Remarques
Cette méthode tente d’ajouter la transformation à la fin de la chaîne de traitement actuelle.
Pour utiliser cette méthode, effectuez la séquence d’appels suivante :
- Appelez IMFSourceReader ::SetCurrentMediaType pour définir le type de sortie souhaité pour le flux. Dans cette étape, vous pouvez spécifier un type de média qui contient uniquement les GUID de type principal et de sous-type. Par exemple, pour obtenir une sortie RVB 32 bits, définissez un type principal de MFMediaType_Video et un sous-type de MFVideoFormat_RGB32. (Pour plus d’informations, consultez GUID de type de média.)
- Appelez AddTransformForStream. Si le Lecteur source connecte correctement la transformation, il définit le type de sortie sur la transformation.
- Appelez IMFSourceReader ::GetCurrentMediaType pour obtenir le type de sortie de la transformation. Cette méthode retourne un type de média avec une description de format complète.
- Si vous souhaitez modifier le type de sortie, appelez de nouveau IMFSourceReader ::SetCurrentMediaType pour définir un type de média complet sur la transformation.
La méthode échoue si le lecteur source a été configuré avec les attributs MF_READWRITE_DISABLE_CONVERTERS ou MF_SOURCE_READER_ENABLE_VIDEO_PROCESSING .
En mode asynchrone, la méthode échoue également si un exemple de demande est en attente. Dans ce cas, attendez que le rappel OnReadSample soit appelé avant d’appeler la méthode . Pour plus d’informations sur l’utilisation du Lecteur source en mode asynchrone, consultez IMFSourceReader ::ReadSample.
Vous pouvez ajouter une transformation à tout moment pendant la diffusion en continu. Toutefois, la méthode ne vide pas ou ne draine pas le pipeline avant d’insérer la transformation. Par conséquent, si des données se trouvent déjà dans le pipeline, il n’est pas garanti que la transformation soit appliquée à l’exemple suivant.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2012 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | mfreadwrite.h |