Méthode ICaptureGraphBuilder2 ::ControlStream (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 dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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 ControlStream
méthode définit les heures de début et d’arrêt d’un ou plusieurs flux de données capturées.
Syntaxe
HRESULT ControlStream(
[in] const GUID *pCategory,
[in] const GUID *pType,
[in] IBaseFilter *pFilter,
[in] REFERENCE_TIME *pstart,
[in] REFERENCE_TIME *pstop,
[in] WORD wStartCookie,
[in] WORD wStopCookie
);
Paramètres
[in] pCategory
Pointeur vers un GUID qui spécifie l’une des catégories de broches répertoriées dans Pin Property Set. La valeur de ce paramètre ne peut pas être NULL.
[in] pType
Pointeur vers un GUID de type principal qui spécifie le type de média, ou NULL. Si ce paramètre a la valeur NULL, définissez également le paramètre pFilter sur NULL . Sinon, vous risquez de contrôler la mauvaise broche et d’obtenir des résultats imprévisibles.
[in] pFilter
Pointeur vers une interface IBaseFilter qui spécifie le filtre à contrôler. Pour contrôler tous les filtres de capture dans le graphique, définissez ce paramètre sur NULL.
[in] pstart
Pointeur vers une variable qui contient l’heure de début. Si la valeur est MAXLONGLONG (0x7FFFFFFFFFFFFFFF), la méthode annule la demande de démarrage précédente. Si la valeur est NULL, l’épingle démarre immédiatement lorsque le graphique s’exécute.
[in] pstop
Pointeur vers une variable qui contient l’heure d’arrêt. Si la valeur est MAXLONGLONG, la méthode annule toute demande d’arrêt précédente. Si la valeur est NULL, la broche s’arrête immédiatement.
[in] wStartCookie
Valeur envoyée en tant que deuxième paramètre de la notification d’événement EC_STREAM_CONTROL_STARTED . Pour plus d'informations, consultez la section Notes.
[in] wStopCookie
Valeur envoyée en tant que deuxième paramètre de la notification d’événement EC_STREAM_CONTROL_STOPPED . Pour plus d'informations, consultez la section Notes.
Valeur retournée
Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.
Code de retour | Description |
---|---|
|
Au moins un convertisseur en aval n’envoie pas de notification d’arrêt. |
|
Réussite. |
|
Impossible de trouver une broche correspondante, ou la broche ne prenait pas en charge le contrôle de flux. |
|
Argument pointeur NULL . |
Remarques
Cette méthode localise les broches de sortie sur les filtres de capture, à l’aide des critères de recherche que vous fournissez dans l’appel de méthode. Ensuite, il appelle les méthodes IAMStreamControl sur ces broches. Cette méthode permet à une application de contrôler les flux sans que l’application n’a besoin d’énumérer les filtres et les épingles dans le graphique.
Utilisez cette méthode pour la capture précise des images ou pour le contrôle individuel de la capture et de la préversion. Par exemple, vous pouvez arrêter la capture sur le disque, mais laisser la préversion vidéo en cours d’exécution.
Les trois premiers paramètres spécifient les broches à contrôler. Un graphe de capture peut avoir plusieurs filtres de capture. Par exemple, il peut avoir des filtres pour les données vidéo, audio et sous-titrage. En outre, un filtre de capture peut avoir plusieurs broches de sortie. Certains filtres de capture ont des broches distinctes pour l’aperçu et la capture, ou des broches distinctes pour les données vidéo uniquement et les données audio-vidéo entrelacées. Pour contrôler l’aperçu vidéo, par exemple, spécifiez PIN_CATEGORY_PREVIEW pour pCategory et MEDIATYPE_Video pour pType.
Si la catégorie d’épingles est PIN_CATEGORY_PREVIEW, vous ne pouvez pas définir des heures de début et d’arrêt spécifiques, car les exemples fournis par une broche d’aperçu n’ont pas d’horodatage (voir Horodatages). Utilisez plutôt les valeurs NULL et MAXLONGLONG pour démarrer et arrêter l’épingle aux heures souhaitées.
En outre, cette méthode n’est pas prise en charge pour la préversion si l’appareil utilise une broche de port vidéo, car dans ce cas, l’appareil livre les exemples d’aperçu directement sur le matériel.
Lorsque cette méthode localise une broche correspondante, elle recherche en aval un autre filtre qui prend en charge IAMStreamControl (généralement un multiplexeur). S’il en trouve un, il définit également les heures de début et d’arrêt sur ce filtre. Cela génère deux paires de notifications d’arrêt : l’une pour le filtre de capture et l’autre pour le filtre en aval. Seule la notification d’arrêt du filtre en aval utilise le paramètre wStopCookie . L’attente de cet événement garantit que le filtre en aval reçoit le dernier exemple.
Si aucun filtre en aval ne prend en charge IAMStreamControl, la méthode retourne S_FALSE. Dans ce cas, vous pouvez recevoir la notification d’arrêt avant le rendu du dernier exemple.
MAXLONGLONG est la plus grande valeur REFERENCE_TIME possible. Dans la bibliothèque de classes de base DirectShow, elle est également définie comme constante MAX_TIME.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | strmif.h (include Dshow.h) |
Bibliothèque | Strmiids.lib |