IVMRFilterConfig ::SetNumberOfStreams, méthode (strmif.h)

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La SetNumberOfStreams méthode définit le nombre de flux à mélanger et indique au VMR de passer en mode mélangeur.

Syntaxe

HRESULT SetNumberOfStreams(
  [in] DWORD dwMaxStreams
);

Paramètres

[in] dwMaxStreams

Double mot contenant le nombre maximal de flux d’entrée que le VMR doit mélanger. Ne doit pas être supérieur à MAX_MIXER_STREAMS (16).

Valeur retournée

Si la méthode réussit, retourne S_OK. En cas d'échec, retourne un code d'erreur.

Code de retour Description
E_FAIL
Le mélangeur est déjà configuré.
E_INVALIDARG
Une tentative de configuration du mélangeur a été effectuée pour plus de 16 flux d’entrée.
E_OUTOFMEMORY
Impossible d’allouer de la mémoire pour gérer les flux.

Remarques

dwMaxStreams doit être égal au nombre de broches d’entrée requises. Les broches ne peuvent pas être ajoutées ou supprimées une fois que le VMR a été connecté. Si vous ne savez pas à l’avance combien de flux d’entrée seront requis, définissez dxMaxStreams sur le nombre maximal qui peut être requis. La valeur 1 est valide pour dwMaxStreams. Cette valeur n’entraîne pas la création de broches supplémentaires, mais elle force le VMR à passer en « mode mixer ». Par conséquent, une fois cette méthode appelée, vous ne pouvez pas appeler SetRenderingMode pour définir le mode sur VMRMode_Renderless

Le VMR crée autant de broches d’entrée que spécifié sans essayer de déterminer s’il y a suffisamment de mémoire vidéo pour les prendre en charge toutes. Cela est dû au fait qu’il n’a aucun moyen de connaître le type de média ou les dimensions du rectangle pour l’instant. Plus tard, lorsqu’un filtre amont tente de se connecter à une broche, à ce stade, le type de média est connu et le VMR examine la mémoire vidéo et échoue la connexion s’il n’y a pas assez pour traiter le flux.

Note Bien que le VMR prenne en charge plusieurs flux, ils partagent tous une seule horloge. Par conséquent, vous ne pouvez pas rechercher un flux indépendamment des autres. Si vous devez rechercher les flux d’entrée indépendamment, vous devez utiliser une technique différente. Pour plus d’informations, consultez l’exemple VMRMulti.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP avec SP1 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

IVMRFilterConfig, interface

IVMRFilterConfig ::GetNumberOfStreams

Utilisation du convertisseur de mixage vidéo