IMediaSeeking ::SetPositions, 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 SetPositions
méthode définit la position actuelle et la position d’arrêt.
Syntaxe
HRESULT SetPositions(
[in, out] LONGLONG *pCurrent,
[in] DWORD dwCurrentFlags,
[in, out] LONGLONG *pStop,
[in] DWORD dwStopFlags
);
Paramètres
[in, out] pCurrent
[in,out] Pointeur vers une variable qui spécifie la position actuelle, en unités du format d’heure actuel.
[in] dwCurrentFlags
Combinaison d’indicateurs au niveau du bit. Consultez la section Notes.
[in, out] pStop
[in,out] Pointeur vers une variable qui spécifie l’heure d’arrêt, en unités du format d’heure actuel.
[in] dwStopFlags
Combinaison d’indicateurs au niveau du bit. Consultez la section Notes.
Valeur de retour
Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.
Code de retour | Description |
---|---|
|
Aucun changement de position. (Les deux indicateurs ne spécifient aucune recherche.) |
|
Réussite. |
|
Argument non valide. |
|
La méthode n’est pas prise en charge. |
|
Argument pointeur NULL . |
Remarques
Les paramètres dwCurrentFlags et dwStopFlags définissent le type de recherche. Les indicateurs suivants sont définis.
Indicateurs de positionnement | Description |
---|---|
AM_SEEKING_NoPositioning | Aucun changement de position. (Le paramètre time peut être NULL.) |
AM_SEEKING_AbsolutePositioning | La position spécifiée est absolue. |
AM_SEEKING_RelativePositioning | La position spécifiée est relative à la valeur précédente. |
AM_SEEKING_IncrementalPositioning | La position d’arrêt (pStop) est relative à la position actuelle (pCurrent). |
Indicateurs de modification | Description |
---|---|
AM_SEEKING_SeekToKeyFrame | Recherchez l’image clé la plus proche. Cela peut être plus rapide, mais moins précis. Aucun des filtres fournis avec DirectShow ne prend en charge cet indicateur. Les décodeurs sont le type de filtre le plus probable pour le prendre en charge. |
AM_SEEKING_ReturnTime | Retourne les heures de référence équivalentes. |
AM_SEEKING_Segment | Utilisez la recherche de segments. |
AM_SEEKING_NoFlush | Ne pas vider. |
Pour chaque paramètre, utilisez un indicateur de positionnement. Si vous le souhaitez, incluez un ou plusieurs indicateurs de modification.
Si l’indicateur AM_SEEKING_ReturnTime est spécifié, la méthode convertit la valeur de position en heure de référence et la retourne dans la variable pCurrent ou pStop . Cet indicateur est utile si vous utilisez un autre format d’heure, tel que des images.
Les indicateurs AM_SEEKING_Segment et AM_SEEKING_NoFlush prennent en charge le bouclage transparent :
- Si l’indicateur AM_SEEKING_Segment est présent, le filtre source envoie un événement EC_END_OF_SEGMENT lorsqu’il atteint la position d’arrêt, au lieu d’appeler IPin ::EndOfStream. L’application peut attendre cet événement, puis émettre une autre commande de recherche.
- Si l’indicateur AM_SEEKING_NoFlush est présent, le graphique ne vide pas les données pendant la recherche. Utilisez cet indicateur avec AM_SEEKING_Segment.
Les valeurs entrantes de pCurrent et pStop sont exprimées au format d’heure actuel. Le format d’heure par défaut est REFERENCE_TIME unités (100 nanosecondes). Pour modifier les formats d’heure, utilisez la méthode IMediaSeeking ::SetTimeFormat . Si l’indicateur AM_SEEKING_ReturnTime est présent, la méthode convertit la valeur sortante en unités REFERENCE_TIME .
Filtrer les développeurs
Si vous implémentez cette méthode, vous pouvez case activée si l’appelant demande une modification de la position actuelle ou de la position d’arrêt, en utilisant la valeur AM_SEEKING_PositioningBitsMask pour masquer les indicateurs de modification. Par exemple :
DWORD dwCurrentPos = dwCurrentFlags & AM_SEEKING_PositioningBitsMask if (dwCurrentPos == AM_SEEKING_AbsolutePositioning) { // Set new position to pCurrent. m_rtStart = *pCurrent; } else if (dwCurrentPos == AM_SEEKING_RelativePositioning) { // Increment current position by pCurrent. m_rtStart += *pCurrent; } |
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 |